2.2.2.1.5 Описание языка
Синтаксис языка описывается в виде грамматики на языке Xtext. Язык Xtext специализирован для описания грамматик текстовых языков; позволяет описать синтаксис и семантику LL(*)-языка. Платформа предоставляет возможность получить синтаксический анализатор автоматизировано по описанной грамматике языка. Xtext можно считать оберткой над другим инструментом автоматизированной разработки трансляторов – ANTLR [43], который непосредственно генерирует парсер, производящий лексический, синтаксический анализ и частично семантический. В качестве алгоритма разбора сгенерированного парсера используется алгоритм рекурсивного спуска с откатами. Результатом прохождения лексического, синтаксического и семантического анализа является синтаксическое дерево (AST), описывающее структуру языка.
Грамматика в Xtext состоит из набора терминальных (лексических), синтаксических правил (правил вывода) и правил типов данных. Терминальные правила описываются в текстовой форме, подобной расширенной форме Бекуса-Наура, и используются для описания терминальных символов. На вход синтаксическому анализатору подается последовательность терминальных символов, которые он обрабатывает в соответствии с правилами вывода, в результате чего выдает синтаксическое дерево. Грамматика разработанного языка приведена в приложении Б.
В качестве особенностей описания синтаксиса в Xtext можно отметить возможность описывать скрытые терминальные символы, которые могут встречаться в любых местах пользовательской программы (между другими терминальными символами). Это позволяет, к примеру, реализовать возможность вставки комментариев пользователем в любую часть своей программы, также это формализует описание грамматики в отношении пробелов и отступов, позволяя абстрагироваться от этих деталей реализации. Также особенностью нотации Xtext является возможность описания действий по созданию узлов AST-дерева в грамматике, возможность использования синтаксических предикатов.
Рассмотрим подробно все виды правил в грамматике Xtext.
1) Правила терминалов (лексем)
Каждое терминальное правило на языке Xtext имеет так называемый возвращаемый тип, объект которого будет создан на этапе построения дерева разбора. Каждый такой тип наследуется от типа EDataType из пакета Ecore платформы моделирования Eclipse. По умолчанию возвращаемый правилом тип определяется как String, однако можно установить любой наследуемый от EDataType тип, зарегистрировав при этом свой конвертер значения в этот тип из стандартного строкового типа.
2) Правила данных
Также как и терминальные правила, правила данных имеют тип возвращаемого экземпляра EDataType, однако в отличие от них эти правила фактически являются правилами разбора и поэтому они контекстно-зависимы и могут включать в себя скрытые терминалы. В данных правилах не может быть операторов создания объектов синтаксического дерева и вызовов других правил в отличие от правил разбора.
3) Правила разбора
По умолчанию возвращаемый тип объекта дерева совпадает с именем правила и наследуется от EClass. Создание объектов определенных типов при разборе по определенному правилу производится за счет действий (actions). В частности, создание экземпляра определенного типа производится за счет использования простого действия. В теле терминального правила описываются свойства создаваемого объекта, которые должны быть встречены во входном тексте. Возможно описывать правила без действий и без свойств, в таком случае возвращаемое значение правила должно быть одним из возвращаемых значений описанных в нем правил-альтернатив, в данном объекта, соответствующего этому правилу, в дереве разбора создаваться не будет. При этом для перечисленных в таком правиле альтернатив создается супертип.
- Введение
- 1 Анализ предметной области
- 1.1 Постановка задачи
- 1.2 Обзор аналогов
- 2 Программная документация
- 2.1 Техническое задание на программное обеспечение
- 2.1.1 Назначение разработки
- 2.1.2 Терминология
- 2.1.3 Требования к функциональным характеристикам
- 2.1.4 Требования к надежности
- 2.1.5 Требования к составу и параметрам технических средств
- 2.1.6 Требования к информационной и программной совместимости
- 2.1.7 Требования к результатам работы
- 2.1.7.1 Требования к комплектации решения
- 2.1.7.2 Требования к документации
- 2.1.8 Перечень работ по этапам
- 2.2 Пояснительная записка
- 2.2.1 Назначение и область применения
- 2.2.2 Описание разработанной технологии создания программ для распределенных микроконтроллерных систем
- 2.2.2.1 Схема оборудования
- 2.2.2.2 Недостатки диаграммы Бара для проектирования микроконтроллерных программ управления
- 2.2.2.3 Концепции диаграммы задач
- 2.2.2.4 Семантика отображаемых на диаграмме задач связей
- 2.2.2.5 Синхронные и асинхронные вызовы функций задач
- 2.2.2.6 Синхронный вызов функции пакета
- 2.2.2.7 События и подписки
- 2.2.2.8 Текстовый язык
- 2.2.2 Технические характеристики
- 2.2.2.1 Описание структуры программной системы
- 2.2.2.1.1 Платформа разработки
- 2.2.2.1.2 Подсистема редактирования
- 2.2.2.1.3 Разработка графических редакторов
- 2.2.2.1.4 Разработка текстового редактора
- 2.2.2.1.5 Описание языка
- 2.2.2.1.6 Семантический анализ пользовательской программы
- 2.2.2.1.7 Генерация кода на целевом языке
- 2.2.2.1.8 Генерация кода редактора текстового языка
- 2.2.2.1.9 Проектирование отладчика
- 2.2.2.1.10 Регистрация конфигурации запуска
- 2.2.2.1.11 Модель отладки
- 2.2.2.1.12 Виртуальная машина
- 2.2.2.1.13 Моделирование
- 2.2.2.1.14 Концепция параметризированных сигналов
- 2.2.2.1.15 Функциональное моделирование блоков устройств
- 2.2.3 Ожидаемые технико-экономические показатели
- 2.3 Описание программы
- 2.3.1 Описание логической структуры
- 2.3.1.2 Типичный поток событий в графическом редакторе
- 2.3.2 Входные и выходные данные
- 2.3.3 Используемые технические средства
- 2.4 Программа и методика испытаний
- 2.4.1 Программа испытаний
- 2.4.2 Методика испытаний
- 3 Руководство пользователя
- 3.2 Условия выполнения программного комплекса
- 3.3 Установка программы
- 3.4 Текстовый редактор
- 3.5 Графический редактор
- 4 Акт испытаний программного продукта
- 5 Экономическая часть
- Заключение
- Список использованных источников