Программное обеспечение для визуального представления синтаксических диаграмм
Аннотация
В данной статье решается проблема визуального представления транслирующих синтаксических диаграмм. Разработаны алгоритмы и программное обеспечение, которое позволяет создавать, редактировать и представлять диаграммы в форме, удобной для дальнейшей обработки.
Ключевые слова:
Синтаксическая Диаграмма; транслятор; терминал; нетерминал.
Развитие информационных технологий приводит к необходимости создания новых трансляторов языков программирования. Для этого в настоящее время широко используются системы автоматизированного построения трансляторов (САПТ) [1 - 4]. Эффективность использования САПТ определяется языком описания спецификации транслятора. Как правило, спецификация транслятора в этих системах представляется в нотации РБНФ или ее модификациях. Одним из удобных способов задания спецификации транслятора является транслирующая синтаксическая диаграмма, которая практически не используется в САПТ. Здесь дается формальное определение транслирующей синтаксической диаграммы и описывается разработанное программное средство - редактор синтаксических диаграмм, которое может быть использовано в САПТ.
Транслирующую синтаксическую диаграмму будем задавать четверкой D = (T, N, S, А, G), где T - конечное множество терминалов; N - конечное множество нетерминалов; S N - начальный нетерминал; А - Конечное множество действий, G = (V, E) - ориентированный граф, где V = VTVNVАVUVВходVВыход, где VВход - множество точек входа, |VВход| = |N|;
VT - множество терминальных вершин;
VU - конечное множество узлов;
VВыход - множество точек выхода, |VВыход| = |N|;
E = E1E2E3E4E5E6, где
E1{ (A, B) | A VВход, B VU} - множество входных дуг;
E2{ (A, B) |A VU, B VВыход} - множество выходных дуг;
E3{ (A, B) |A VU, B VTVN} - множество дуг, выходящих из узлов;
E4 { (a, B) |A VTVNVA, B VU} - множество дуг, входящих в узлы;
E5{ (a, B) | A VNVT, B VA} - множество дуг входящих в вершину действие;
E6{ (A, B) |A VU,B VU} - множество Е-дуг, соединяющих узлы.
Каждому нетерминалу соответствует связная компонента графа. Компонента именуется соответствующим нетерминалом, имеет только одну точку входа и одну точку выхода и конечное множество вершин других типов. Точки входа и выхода на диаграмме компоненты не изображаются. Нетерминальная вершина изображается прямоугольником, в который вписан терминальный символ. Узел изображается на диаграмме жирной точкой. В точку входа не входит ни одна дуга и выходит конечное множество дуг (входные дуги компоненты). Узлы, в которые входят входные дуги, называются начальными. Из точки выхода не выходит ни одна дуга и входит конечное множество дуг (выходные дуги компоненты). Узлы, из которых выходят выходные дуги, называются заключительными. Каждая дуга, за исключением входных и выходных дуг, может выходить из узла и входить в терминальную или нетерминальную вершину или другой узел, выходить из терминальной, нетерминальной или вершины действия и входить в узел, либо выходить из терминальной или нетерминальной вершины и входить в вершину действие. В каждую терминальную, нетерминальную вершину и в вершину действия входит только одна дуга и выходит только одна дуга. На количество дуг, входящих в узлы и выходящих из них, ограничений нет. На Рисунке 1 приведен пример транслирующей синтаксической диаграммы.
Рисунок 1 - Пример транслирующей синтаксической диаграммы.
Программа "Редактор синтаксических диаграмм" позволяет строить синтаксические диаграммы, которые соответствуют приведенному выше описанию. Пример диаграммы, построенной в данной программе, представлен на Рисунке 2. Программа обладает множеством функций и возможностей. Главное меню содержит следующие пункты:
- 1) Изменить список нетерминалов; 2) Изменить список терминалов; 3) Создать диаграмму нетерминала; 4) Сформировать выходной файл;
Рисунок 2 - Пример диаграммы, построенной в данной программе.
Интерфейс программы приведен на Рисунке 3. Рабочая область программы разделена на три части - это панель инструментов, панель редактирования, панель параметров.
Транслирующая синтаксическая диаграмма визуальный
Рисунок 3 - Интерфейс программы.
После запуска программы для построения диаграммы необходимо задать список терминалов и нетерминалов. Затем выбрать пункт меню "Создать диаграмму нетерминала". Появится новая вкладка с окном редактирования.
В левой части рабочей области программы расположена панель инструментов, каждый из которых обозначен небольшой картинкой-пиктограммой. Соединительная прямая линия изображена прямой стрелкой, соединительная ломаная линия - ломаной стрелкой, терминал - прямоугольником, нетерминал - овалом, действие - ромбом, узел - точкой, функция удаления - корзиной. Назначение инструментов следующее:
- 1) Соединительная прямая линия. Позволяет соединить терминал и узел, нетерминал и узел, нетерминал и действие, терминал и действие. Для соединения двух объектов необходимо последовательно нажать на эти объекты левой кнопкой мыши. 2) Соединительная ломаная линия. Позволяет соединить те же объекты что и прямая линия, но имеет точки перелома, количество которых задает пользователь. Для соединения объектов ломанной линией необходимо последовательно нажать объект из которого выходит линия, затем точки перелома линии и объект, в который входит линия. 3) Терминал. Позволяет добавить на панель редактирования объект терминал и задать его название из списка терминалов. 4) Нетерминал. Позволяет добавить на панель редактирования объект нетерминал и задать его название из списка нетерминалов. 5) Действие. Позволяет добавить на панель редактирования объект действие (процедуру, которую следует выполнить при трансляции). 6) Узел. Позволяет добавить на панель редактирования объект узел и задать тип узла (начальный, промежуточный, допускающий). Узлы разных типов отличаются цветом. Начальный узел - синего цвета, промежуточный - черного, допускающий - красного. 7) Удаление объекта. Позволяет удалять любой объект, расположенный на панели редактирования. Для этого необходимо выбрать данный пункт, а затем выбрать объект, который необходимо удалить. 8) Включение/отключение сетки. Позволяет включить или отключить разлиновку панели редактирования. Эта возможность помогает в выравнивании объектов.
По центру расположена панель редактирования. Это и есть главное окно, в котором происходит построение синтаксической диаграммы. На эту панель перетаскиваются объекты из панели инструментов.
Справа находится панель инструментов, которая содержит три основных списка: список действий, список нетерминалов и список терминалов.
Кроме основных функций существуют еще и дополнительные, которые используются для редактирования уже созданной синтаксической диаграммы:
- 1) Перемещение объекта. Любой объект, расположенный на панели редактирования, можно перетаскивать, при этом все входящие и выходящие линии тоже перемещаются вместе с объектом. 2) Переименовать объект. Для переименования необходимо дважды кликнуть по объекту, после чего появится дополнительное окно, в котором пользователь вводит новое имя объекта и нажимает кнопку "Сохранить". 3) Изменить тип узла. После двойного клика по объекту появляется дополнительное окно, в котором можно выбрать новый тип узла и нажать кнопку "Сохранить". В этом случае узел меняет свой цвет.
Синтаксическая диаграмма каждого нетерминала располагается в отдельной вкладке.
Программа формирует выходной файл, который описывает структуру синтаксической диаграммы. Этот файл может быть использован в САПТ для необходимых преобразований синтаксической диаграммы и генерации транслятора.
Программное обеспечение "Редактор синтаксических диаграмм" реализовано на языке C# и представляет собой совокупность следующих модулей:
1) Node. cs - класс для узлов.
Свойства: point - координаты узла,
Label - номер узла,
Type - тип узла;
Методы: Node_Load () - добавление узла на панель редактирования,
Node_MouseDoubleClick () - событие при двойном клике по узлу,
Node_MouseMove () - перемещение узла,
2) Components. cs - класс терминалов и нетерминалов.
Свойства: point - координаты компонента,
Type - тип (термин или нетерминал),
Name - название компоненты;
Методы: Components _Load () - добавление компонента на панель
Редактирования,
Components _MouseDoubleClick () - событие при двойном клике,
Components _MouseMove () - перемещение компонента;
3) Action. cs - класс действий.
Свойства: point - координаты действия,
Comp - компонент, после которого выполняется действие,
Name - название действия;
Методы: Action _Load () - добавление действия на панель редактирования,
Action_MouseDoubleClick () - событие при двойном клике по действию,
Action _MouseMove () - перемещение действия,
4) Lines. cs - класс для линий.
Свойства: startPoint, endpoint - координаты начала и конца линии,
List - список переломных точек для ломаной линии,
StartComp - компонент, из которого выходит линия,
EndComp - компонент, в который входит линия.
MainModule. cs описывает логику работы программы, а также содержит реализацию ее интерфейса. В этом модуле описан класс формы mainForm, на которой размещены все основные компоненты для управления работой программы.
Таким образом, разработаны алгоритмы и программа для визуального представления синтаксических диаграмм, которая позволяет создавать, редактировать и представлять диаграммы в форме, удобной для дальнейшей обработки в САПТ.
Существуют следующие аналоги разработанного программного обеспечения: Railroad Diagram Generator, EBNF Visualizer, ANTLR. Разработанный программный продукт будет более предпочтительным, так как он имеет функциональность (например, графическое представление диаграммы, построение транслятора, авто-преобразование диаграмм и др.), которая есть у аналогов, а также поддерживает ряд возможностей (например, устранение конфликтов перехода при построении транслятора), которых нет ни в одном другом аналоге.
Библиографический список
- 1. ANTLR // [Электронный ресурс]. Режим доступа: // URL: http://www. antlr. org/ 2. ASF+SDF. // [Электронный ресурс]. Режим доступа: // URL: http://www. cwi. nl/projects/MetaEnv/ 3. Bison // [Электронный ресурс]. Режим доступа: // URL: http://www. gnu. org/software/bison/ 4. Coco/R // [Электронный ресурс]. Режим доступа: // URL: http://www. ssw. uni-linz. ac. at/Research/Projects/Coco/
Похожие статьи
-
Понятие Data Mining Средства Data Mining включают в себя очень широкий класс различных технологий и инструментов. Средства Data Mining на рынке...
-
В работе использовались следующее программное обеспечение для решения поставленных задач: AutoCAD, ANSYS Workbench, ANSYS Icepak. Система AutoCAD...
-
Алгоритмом работы программы является пошаговое описание каждой функции программы. При запуске информационной базы откроется окно авторизации, которое...
-
Каждая диаграмма состояний в UML описывает все возможные состояния одного экземпляра определенного класса и возможные последовательности его переходов из...
-
Adobe Dreamweaver Adobe Dreamweaver - это HTML-редактор от компании Adobe, который на сегодняшний день очень известный. Первая его версия была выпущена в...
-
Цель Работы - изучить приемы создания и использования шаблонов классов. - Теоретические сведения Достаточно часто встречаются классы, объекты которых...
-
Для того, чтобы строить диаграммы в соответствии с рисунком 2.7, необходимо реализовать алгоритм соединения двух объектов линией. Для отображения линии...
-
Особенностью архитектуры REST является отсутствия хранения состояния на сервере. Для того, чтобы не передавать пользовательские логин и пароль каждый...
-
Платные услуги для ПО с открытым исходным кодом - Свободное программное обеспечение
Для устранения недостатков open source пользователи продуктов объединяются вокруг каждого подобного проекта в сообщества, которые осуществляют...
-
BPMN диаграмма - Инженерия программного обеспечения. Регистрация пассажира на рейс авиакомпании
Основная цель BPMN -- создание стандартного набора условных обозначений, понятных всем бизнес-пользователям. Бизнес-пользователи включают в себя...
-
Метаданные конфигурации Метаданные в 1С - это специальные данные, описывающие структуру базы данных. Почти все, что мы видим в графическом представлении...
-
Подход, основанный на "больших" предметах и функциональный критерий кластеризации Поддержка предмета в кластере Ci есть относительное число транзакций в...
-
После преобразования аналогового сигнала в цифровую форму с помощью АЦП возникает необходимость в программной обработке полученного цифрового сигнала....
-
Программный тестирование приложение Первоначально компьютерные системы использовались для упрощения математических вычислений. В настоящее время...
-
В течении года от команды разработчиков пришло 6 пакетов, содержащих изменения в ядре программы. Для каждого пакета составлялось в среднем от 1-ого до...
-
Тестируемый программный продукт является высокопроизводительным приложением, которое предоставляет возможность создания и настройки сетей беспроводного...
-
Программные средства создания растровых изображений Среди программ, предназначенных для создания компьютерной двумерной живописи, самыми популярными...
-
Метод Гаусса. Метод Гаусса решения систем линейных уравнений состоит в последовательном исключении неизвестных и описывается следующей процедурой. С...
-
Рис. 9 Пример B+ дерева, связывающего ключи 1-7 с данными d1-d7. Связи (выделены красным) позволяют быстро обходить дерево в порядке возрастания ключей....
-
Антивирусные программы - специальные программы для обнаружения, удаления и защиты от компьютерных вирусов, которые позволяют обнаруживать и уничтожать...
-
Так как разработанное ранее приложение LargeItem выводит в выходном файле "большие предметы", то используя специальный аналитический инструмент возможно...
-
Типы ошибок Разработка любой программы предполагает наличие в исходном тексте ошибок и борьбу с ними. Все практически неисчислимое множество возможных...
-
Рис. 7 Пример двоичного дерева поиска Двоичное дерево поиска (binary search tree, BST) -- это двоичное дерево, для которого выполняются следующие...
-
Программные модули проекта, Представление графа в памяти ЭВМ - Алгоритмы нескольких махов
Все программы были реализованы на языке С++ на персональной ЭВМ с операционной системой Windows. Каждая программа представляет собой консольное...
-
Анализ алгоритмов построения сеток - Программное обеспечение расчета конструкций
Общая последовательность построения состоит в следующем. В начале с помощью CAD-системы создается геометрическая 2D-модель исследуемой конструкции. Для...
-
Разделение программы на модули до некоторой степени позволяет уменьшить ее сложность... Однако гораздо важнее тот факт, что внутри модульной программы...
-
Контекстная Диаграмма. Деятельность Аптеки "Эвалар" Рис 3. Контекстная диаграмма Декомпозиция Контекстной Диаграммы Рис 4. Декомпозиция контекстной...
-
Обоснование выбора средств для разработки В качестве платформы была взята платформа NET, потому что платформа NET на текущий момент самая передовая и...
-
Программа delphi тестирование Требования к функциональным характеристикам. Программа должна выполнять следующие функции: § ввод исходные данные; §...
-
Диаграммы вариантов использования UML (англ. Unified Modeling Language) описывают взаимоотношения и зависимости между группами вариантов использования и...
-
Для того, чтобы вынести решение об оправданности или неоправданности внедрения автоматизированного тестирования вместо ручного, необходимо...
-
Для администрирования кластера кафедры АИС для организации параллельных процессов было выбрано следующее программное обеспечение. 1. Intel® cluster...
-
Вся информация, которую обрабатывает компьютер, должна быть представлена двоичным кодом с помощью двух цифр -- 0 и 1. Эти два символа принято называть...
-
Коммуникация между клиентом и сервером начинается прежде всего с "рукопожатия" ( SSL Handshake). Цели данного рукопожатия, следующие [10]: 1. клиент...
-
Термин "транзакция" относится к подмножеству предметов из общей совокупности с переменным числом предметов (мощностью подмножества). Транзакциями...
-
1. НА 7 ПК ИСПОЛЬЗУЕТСЯ microsoft Windows xp sp2. 2. на 1 используется Altlinux 5 3. Программы офисного назначения: A) Microsoft Office Excel 2003 B)...
-
Кластеризация (или кластерный анализ) -- это задача разбиения множества объектов на группы, называемые кластерами. Внутри каждой группы должны оказаться...
-
Итак, одной из ведущих мировых ERP - систем является так называемая система SAP. Немецкая компания SAP AG, разработавшая ERP - систему SAP, имеет имидж...
-
Экономика страны и туризм тесно взаимодействуют друг с другом. Туризм оказывает большое воздействие на экономику региона, в котором он развивается. Можно...
-
Описание предметной области Турагент - это организация, занимающаяся продажей сформированных туроператором туров. Турагент приобретает туры у...
Программное обеспечение для визуального представления синтаксических диаграмм