Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
бАКАЛАВР_РАБОТА.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
2.13 Mб
Скачать

2.1.3 Семантические действия в языковом процессоре исма

Семантический анализатор языкового процессора ИСМА осуществляет:

– контроль правильности структуры программы;

– контроль дублирования языковых единиц;

– контроль числа и допустимости значений фактических параметров в вызове функций;

– замену имен констант на их численное значение;

– макроподстановку;

– формирование внутреннего представления модели.

2.1.4 Заключение

Из описанных выше характеристик существующего языкового процессора, можно отметить его слабые места:

–использование в качестве метода разбора метод рекурсивного спуска

– отсутствие семантических проверок корректности типа операнда в операторах и операциях языка

2.2 Обоснование выбора инструментальных средств и класса грамматики

В качестве языка программирования был выбранC++ новой версии стандарта языка (ISO/IEC 14882:2011), в котором были добавлены новые языковые конструкции, например, умные указатели, которые упрощают управление памятью. Это избавляет от необходимости использовать сторонние библиотеки, тем самым делает программный код легко переносимым на другие платформы, например Linux для этого необходим только компилятор, поддерживающий новый стандарт.

Этот язык был выбран по следующим причинам.Во-первых, он компилируемый, поэтому программы, написанные на нём, будут иметь преимущество по времени выполнения перед интерпретируемыми языками. Во-вторых,C++поддерживаеттакие парадигмы, как объектно-ориентированное программирование и обобщённое программирование, использование которых увеличивает количество повторно используемого кода, делает программы, более читаемыми и легко модифицируемыми.

Для создания пользовательского графического интерфейса выбрана библиотекаQt. Это кросс-платформенный инструментарий разработки программного обеспечения (ПО)на языке программирования C++.Позволяет запускать написанное с его помощьюПОв большинстве современныхоперационных системпутём простой компиляции программы для каждой ОС без измененияисходного кода. Включает в себя все основныеклассы, которые могут потребоваться при разработкеприкладного программного обеспечения, начиная от элементовграфического интерфейсаи заканчивая классами для работы ссетью,базами данныхиXML. Qt является полностью объектно-ориентированным, легко расширяемым и поддерживающим технику компонентного программирования.Существуют версии библиотеки дляMicrosoft Windows,системклассаUNIXс графической подсистемойX11,iOS,Android,Mac OS X,Microsoft Windows CE,QNX, встраиваемых Linux-систем и платформыS60.

Начиная с версии 4.5, Qt распространяется под свободной лицензией GNUGPL, поэтомубиблиотека имеется в свободном доступе.

Так же важным аспектом является выбор класса грамматики, и соответственно метода разбора, от которого в дальнейшем будет зависетьспособ трансляции. Опираясь на существующую версию, был выбран класс грамматик LL(k) из соображений меньшего числа изменений и возможности заменить старый синтаксическийанализатор в языковом процессореИСМА. В существующей версии синтаксический анализатора был реализован методом рекурсивногоспуска.

Ввиду того, что в расширенной версии языка количество продукций в грамматикеувеличится, был выбран метод не рекурсивного предиктивного синтаксического анализа, основанного на явном использовании стека[2]. Это избавляет от лишних расходов времени на восстановление и сохранение контекста процедуры и от теоретической возможности превысить размер программного стека при глубокой рекурсии. Плюсом так же является, что все продукции будут содержаться в одном месте – в таблице синтаксического анализатора.