
- •Выпускная квалификационная работа бакалавра
- •Задание на выпускную квалификационную работу бакалавра
- •План-график выполнения работы
- •Реферат
- •Введение
- •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
ПриложениеA Диагностические сообщения
Таблица A.1
Диагностические сообщения сканера
№ п/п |
Текст сообщения |
Комментарий |
1 |
undefined symbol '…' |
Появление символа'…', не принадлежащего терминальному алфавиту |
2 |
expected digit after decimal separator |
Отсутствие числа после десятичной точки |
3 |
expected digit after exponent |
Отсутствие числа после знака экспоненты |
4 |
invalid suffix on constant |
Недопустимый суффикс числовой константы. Например – 123aa |
5 |
overflow integer constant |
Слишком большое число целого типа (предупреждение) |
6 |
underflow float constant |
Слишком малое число вещественного типа (предупреждение) |
7 |
overflow float constant |
Слишком большое число вещественного типа (предупреждение) |
Таблица A.2
Диагностические сообщения парсера
№ п/п |
Текст сообщения |
Комментарий |
1 |
expected token“…” |
Пропущена лексема “…” |
2 |
expected non-terminal “…” |
Пропущена конструкция “…” |
Таблица A.3
Диагностические сообщения семантического анализатора
№ п/п |
Текст сообщения |
Комментарий |
1 |
initial values to define a not completely |
Глобальные начальные условия определены не полностью (предупреждение) |
2 |
system of equations is not complete |
Нарушение условия полноты системы уравнений |
3 |
out of range array:"…" |
Выход значения индекса за границу массива "…" |
4 |
division by zero |
Деление на нуль |
5 |
Identifier already exists: "…" |
Двойное определение идентификатор"…" |
6 |
Identifier not found: "…" |
Идентификатор не определённого типа |
7 |
lvalue isn't var type: "…" |
Идентификатор в левой части уравнения не является переменной |
8 |
indexing for no array type: "…" |
Индексация переменной "…", не являющейся массивом |
9 |
not unique count in equation |
Использование более одного счётчика в уравнении |
11 |
lvalue isn't array type |
Левая часть уравнения не является массивом |
12 |
not unique count in set of local value |
Использование более одного счётчика в задании локальных начальных условиях |
13 |
count into condition of ver |
Использование счётчика в условно-адресной паре |
14 |
used counts into old-style constructions |
Использование счётчика в конструкциях старого формата |
15 |
used macro into condition: "…" |
Использование макроса "…" в условии оператора if |
16 |
incorrect type obj of indentifier into index |
Использование переменных несоответствующего типа в индексе |
17 |
violated a semantic rule for the counter |
Нарушение семантического правиладля счётчика |
18 |
incorrect size array |
Неверный размер массив ( size<0 || size=0) |