
- •Выпускная квалификационная работа бакалавра
- •Задание на выпускную квалификационную работу бакалавра
- •План-график выполнения работы
- •Реферат
- •Введение
- •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
3 Постановка задачи исследования
Известно, что существующиеязыки спецификации ГС не позволяют качественно описывать задачи высокой размерности с алгоритмическим заданием правых частей дифференциальных уравнений. Поэтому расширение языка ИСМА имела бы практическую важностьв решении подобных задач.
3.1 Характеристика задачи исследования
В соответствие с поставленной целью необходимо добавить новые конструкции в существующий язык ИСМАдля качественного описания класса задач высокой размерности.
Согласно
математической моделипримера, описанного
в первом разделе, начальные условия
задаются математическим соотношением
.
Поэтому задание начальных условий с
применением новых языковых конструкций
должно иметь следующий вид:
При алгоритмическом
задании правых частей fсистемы
дифференциальных уравнений (ДУ) необходимо
учитывать, что при
неизбежно появятся переменные с
индексами, выходящими за границу массива
.
Следовательно, необходимо предусмотреть
механизм явного формирования определенных
элементов массива правых частей ДУ
пользователем. Ошибки такого рода
выявляются на этапе семантического
анализа. Это освобождает проектировщика
модели от ручных вычислений для выявления
подмножества переменных для явного
формирования правых частей АДУ. Внутреннее
представление результирующей модели
скрыто от предметного пользователя.
Основная идея заключается в том, чтобы добавить в описание конструкций языка (начальные условия, уравнения, макросы) определенный изменяемый в заданных пределах параметр. Такой подход позволяет для каждой параметризированной языковой конструкции генерировать соответствующие серии (массивы).
Для возможности спецификации моделей описанного класса в грамматику языка необходимо ввести дополнительные конструкции:
Оператор объявления массива.
Оператор объявления счетчика. Шаг изменения значения счетчика по умолчанию равен 1. Пределы изменения значения задаются явно.
Идентификатор с параметром.
Макро определение с параметром.
Заполнение массива может производиться двумя способами: алгоритмически и явно.
В модели могут использоваться несколько независимых счетчиков:
или n-интервальный счетчик:
для алгоритмического
задания элементов массива
.
В обоих случаях счетчики определяют интервалы алгоритмического задания элементов системы:
.
При задании интервалов значений счетчика должны выполняться следующие семантические ограничения:
;
;
;
;
.
Области
алгоритмического
и явного
задания элементов массива описываются
соответствующими выражениями:
,
.
Обозначим через
количество целых чисел, принадлежащих
интервалу
.
Тогда условие полноты
системы при использовании массивов
принимает вид
.
Графическая интерпретация условия полноты показана на рисунке 3.1.
Рисунок 3.1 – Графическая интерпретация условия полноты
Синтаксические формы записи при явном и алгоритмическом задании элементов массива идентичны. Отличие заключается в том, что при явном задании в качестве арифметического выражения указывается конкретное значение индекса.