Санкт-Петербургский государственный университет
Опубликован: 04.12.2007 | Доступ: свободный | Студентов: 2738 / 336 | Оценка: 4.30 / 3.65 | Длительность: 16:28:00
ISBN: 978-5-94774-823-9
Лекция 11:

О строении визуальных языков

< Лекция 10 || Лекция 11: 1234 || Лекция 12 >

Синтаксис

В этом разделе рассматриваются знаки и их взаимосвязи. Вместо широко используемого в семиотике понятия "знак" здесь будет использоваться термин "конструкция". Конструкции языка - это устойчивые образцы, наборы знаков, применяемые для составления текстов на данном языке. В русском языке конструкциями можно считать, например, различные виды предложений (сложносочиненные, сложноподчиненные и т. д.). Очевидны конструкции языков программирования - присваивания, циклы, условные предложения и пр.

Рассмотрим некий текстовый язык программирования. Можно было бы сказать, что знаками здесь являются все разрешенные символы языка - список таких символов обычно прикладывается к его формальной спецификации. Однако эти знаки сами по себе интересны разве что той части компилятора, которая обычно называется лексическим анализатором. Этот анализатор вычленяет во входном потоке знаков отдельные лексемы языка и определяет их вид. Обычно в языках программирования присутствуют следующие виды лексем: ключевые слова ( do, for, begin, class и т. д.), идентификаторы (например, my_var, a1, a2 ) и константы (0, 1, "my string"). Остальную (большую часть) компилятора, а также программистов, интересуют не разрешенные символы языка, не лексемы, а языковые конструкции - присваивания, циклы, процедуры, классы и т.д. Именно они являются информативными, осмысленными единицами языка, из них строятся тексты.

Конструкции могут быть сложно связаны друг с другом - тексты строятся из них не просто в виде линейной последовательности. Например, описания переменных и процедур связаны с конструкциями, через которые они используются.

Конструкции могут вкладываться друг в друга. Например, в условном предложении содержится конструкция под названием "логическое выражение", используемая для определения значений условия ветвления. Аналогичная конструкция имеется в циклах с пред- или постусловием для определения условия завершения цикла. В конструкцию присваивания также могут входить другие конструкции - переменные, константы, выражения.

Все подобные правила, которым подчиняется написание текста, попадают в юрисдикцию синтаксиса.

Синтаксис русского языка - это строение предложения, а также правила пунктуации: выделение в предложении запятыми деепричастных оборотов, разделение запятыми частей сложносочиненного предложения, отсутствие запятой перед союзом "и", соединяющим однородные члены предложения и т. д. Синтаксис нотной записи - это правила создания музыкальных текстов: написание нот различной длительности, использование значков диеза, бемоля, бекара, применение реприз, тактовых разделителей, правила соответствия долей в такте заявленному размеру и т. д.

Говоря о языках визуального моделирования, выделяют три вида синтаксиса: абстрактный, конкретный и служебный.

Абстрактный синтаксис (abstract syntax) - это определение структуры текста (визуальной модели). Абстрактный синтаксис определяет все типы конструкций языка, их возможные атрибуты и связи, то есть задает структуру графа модели.

Это наиболее формализуемая часть языка и здесь широко используются различные формальные подходы - грамматики в форме Бэкуса-Наура, метамоделирование и пр.

Грамматики в форме Бэкуса-Наура широко применяются для описания синтаксиса языков программирования. Теперь и уже давно все языки программирования - Java, C#, C++ и пр. - и многие визуальные языки (например, SDL, WebML ) описываются таким способом.

С помощью метамоделирования описан абстрактный синтаксис языка UML, а также некоторых других визуальных языков. Этот способ описания поддерживается почти всеми DSM-платформами.

И тот и другой способ будут подробно рассмотрены в следующей лекции, а здесь приведем лишь короткий пример.

Пример метамодели

Рис. 11.3. Пример метамодели

На рис. 11.3 показана упрощенная метамодель, определяющая устройство UML-компоненты. Класс Component содержит атрибут Name и агрегирует класс Port, а тот, в свою очередь, агрегирует класс Interface. Таким образом, на рис. 11.3 конструкции Component, Port, Interface определены строго и формально.

Еще одной важной формальной техникой, используемой при определении абстрактного синтаксиса, является язык ограничений OCL (Object Constraint Language). Дело в том, что в метамодели не удается описать все возможные ограничения языка, синтаксис оказывается слишком "просторным". Чтобы преодолеть эту проблему, на отдельные фрагменты метамодели накладывают ограничения, созданные на специальном текстовом языке. Данный язык стандартизован комитетом OMG [11.11] и является "спутником" UML. Более того, он используется самим UML для задания формальных ограничений на его метамодель.

При создании DSL абстрактный синтаксис, как правило, точно специфицируется. Это - основа языка. Исключение составляют случаи, когда не создается собственных средств программной поддержки нового языка. Тогда вполне можно ограничиться описанием синтаксиса языка в виде небольшого текста на русском, английском или любом другом естественном языке, определив основные понятия языка и их взаимосвязи с помощью ряда примеров. Кстати, именно в таком виде языки описываются в научных статьях. В таких описаниях, как правило, синтаксис соединен с семантикой и прагматикой, составляя единое повествование о структуре и возможностях нового языка.

Еще один случай, когда не требуется формальной спецификации абстрактного синтаксиса, - если для создания графических редакторов используются средства типа Microsoft Visio. В последнем можно задать палитру для новой нотации, не строя никаких формальных моделей, в специальном диалоговом редакторе. Но это годится только для очень простых языков и редакторов.

Итак, абстрактный синтаксис - это самый первый (а иногда и единственный) формальный артефакт нового DSL. Абстрактный синтаксис UML, описанный с помощью метамоделирования, является основой этого стандарта.

< Лекция 10 || Лекция 11: 1234 || Лекция 12 >
Ольга Зырянова
Ольга Зырянова

Здравствуйте, не могу найти ссылку на скачивание курса  «Визуальное моделирование: теория и практика»

 

Номер платежа 6400454020565

Анна Митюрёва
Анна Митюрёва

http://www.intuit.ru/studies/courses/1041/218/info

С мобильного приложения доступ есть, а через сайт не отображается. Печально =(