
- •Выпускная квалификационная работа бакалавра
- •Задание на выпускную квалификационную работу бакалавра
- •План-график выполнения работы
- •Реферат
- •Введение
- •1 Языковые процессоры
- •1.1 Практическое применениеискусственных языков
- •1.2 Практический пример
- •1.3 Понятие и структура языкового процессора
- •2Обзор существующих систем и обоснование выбора инструментальных средств и класса грамматики
- •2.1 Обзор существующей символьной спецификации моделей гс в среде исма
- •2.1.1 Лексемы языка исма
- •2.1.2 Грамматика языка исма
- •2.1.3 Семантические действия в языковом процессоре исма
- •2.1.4 Заключение
- •2.2 Обоснование выбора инструментальных средств и класса грамматики
- •3 Постановка задачи исследования
- •3.1 Характеристика задачи исследования
- •3.2 Входная информация
- •3.3 Выходная информация
- •3.4 Архитектура среды исма с расширенным языком описания гс
- •4 Программно-математическое обеспечение
- •4.1Лексический анализатор
- •4.1.1 Функции лексического анализатора
- •4.1.2 Спецификация токенови входного алфавита символов
- •4.1.3 Распознавание токенов
- •4.1.4 Иерархия классов модуля
- •4.2 Синтаксический анализатор
- •4.2.1 Функции синтаксического анализатора
- •4.2.2 Спецификация грамматики
- •4.2.3 Метод разбора
- •4.2.4 Восстановление после ошибок
- •4.2.5 Иерархия классов модуля
- •4.3 Семантический анализ
- •4.3.1 Промежуточное представление программы
- •4.3.2 Грамматика с семантическими правилами
- •4.3.3 Модифицированныйметодразбора
- •4.3.4 Семантический анализ. Таблица символов
- •4.3.5 Семантический анализ. Проверка корректности типа
- •4.4 Генерация кода
- •4.5 Система сбора диагностических сообщений
- •5 Тестирование
- •5.1 Лексический анализатор
- •5.2 Синтаксическийанализатор
- •5.3 Семантический анализатор
- •Заключение
- •Список использованных источников
- •ПриложениеA Диагностические сообщения
- •Диагностические сообщения сканера
- •Диагностические сообщения парсера
- •Диагностические сообщения семантического анализатора
- •ПриложениеБ
- •Б.1.3 Установка системы
- •Б.2 Работа с системой б.2.1 Запуск системы и начало работы
- •Б.2.2Ввод программной модели
- •Б.2.3Трансляция модели и просмотр результата
- •Б.2.4Сохранение программной модели
- •Б.2.6Завершение работы с системой
- •Приложение в
- •Листинг программы
- •В.1 Модуль лексического анализатора
- •Файл abstractLexer.H
- •Файл lexer.H
- •Файл lexer.Cpp
- •В.2 Модуль синтаксического анализатора Файл abstractParser.H
- •Файлparser_ll1.H
- •Файл parser_ll1.Cpp
- •В.3 Модуль семантического анализатора Файл symbolTable.H
- •Файл SymbolTableFactory.H
- •Файл checker.H
- •В.4 Модулькодогенератора ФайлastVisitor.H
- •Файл astCodeGen.H
2Обзор существующих систем и обоснование выбора инструментальных средств и класса грамматики
В языках моделирования гибридных систем LISMA, MODELIKA, MVSи других не встречался способ символьной спецификации динамических систем повышенной размерности, допускающий алгоритмическое задание правых частей системыдифференциальных уравнений.
Ранее для построения моделей такого рода систем предметный пользователь либо тратил много времени на ввод однотипных уравнений, либо для конкретной системы создавалась исполняемая модель на языкепрограммирования [11].
2.1 Обзор существующей символьной спецификации моделей гс в среде исма
Рассмотримспецификацию лексем, порождающей грамматики и семантические действиясуществующего языкового процессора ИСМА.
2.1.1 Лексемы языка исма
Терминальный алфавит языка ∑LISMA содержит следующие классы терминальных символов: буква (<letter>, l), цифра (<digit>, d), остальные допустимые символы (<other>). Перечисленные классы символов задаются правилами:
<letter> => ‘a’|‘b’|‘c’|‘d’|‘e’|‘f’|‘g’|‘h’|‘i’|‘j’|
‘k’|‘l’|‘m’|‘n’|‘o’|‘p’|‘q’|‘r’|‘s’|‘t’|
‘u’|‘v’|‘w’|‘x’|‘y’|‘z’|‘A’|‘B’|‘C’|‘D’|
‘E’|‘F’|‘G’|‘H’|‘I’|‘J’|‘K’|‘L’|‘M’|‘N’|
‘O’|‘P’|‘Q’|‘R’|‘S’|‘T’|‘U’|‘V’|‘W’|‘X’|
‘Y’|‘Z’|‘_’
<digit> => ‘0’|‘1’|‘2’|‘3’|‘4’|‘5’|‘6’|‘7’|‘8’|‘9’
<other> => ‘>’|‘<’|‘=’|‘!’|‘[’|‘]’|‘(’|‘)’|‘.’|‘,’|
‘;’|‘’’|‘~’
Типы лексем языка LISMA, соответствующие им регулярные выражения и обозначения приведены в таблице 2.1.
Таблица 2.1 – Регулярные конструкции языка LISMA
Описание лексемы |
Обозначение |
Регулярное выражение |
Пример |
Буква |
l |
a | … | z | A | … | Z | _ |
a, b, c, D, E, F |
Цифра |
d |
0 | … |9 |
0, 1, 2 |
Идентификатор |
i |
l (l | d)* |
x, var2, _in |
Число без знака |
u |
d+ [. d+] [(E | e) [(+ | -)] d+] |
22, 22.5, 22.5E-3 |
Знак арифметического действия |
a |
+ | * | / |
+, * |
Знак логической операции |
o |
!= | <> | (> | < | =) [=] |
>, <=, = |
Разделитель параметров функции |
c |
, |
, |
Признак конца предложения |
e |
; |
; |
Открывающая круглая скобка |
b |
( |
( |
Закрывающая круглая скобка |
f |
) |
) |
Открывающая квадратная скобка |
g |
[ |
[ |
Закрывающая квадратная скобка |
h |
] |
] |
Признак уравнения |
j |
‘ | ~ |
‘, ~ |
Знак равенства |
k |
= |
= |
Минус |
m |
- |
- |
Бинарные булевы функции |
x |
and | or |
and, or |
Унарные булевы функции |
y |
Not |
not |
Ключевое слово |
n |
Const |
const |
Ключевое слово |
p |
Macro |
macro |
Ключевое слово |
q |
If |
if |
Ключевое слово |
r |
Then |
then |
Ключевое слово |
t |
Endif |
endif |
Ключевое слово |
v |
Is |
is |
Ключевое слово |
w |
From |
from |
Терминальный (основной) алфавит на входе синтаксического анализатора представлен множеством:
∑LISMA={a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, t, u, v, w, x, y}.