- •Выпускная квалификационная работа бакалавра
- •Задание на выпускную квалификационную работу бакалавра
- •План-график выполнения работы
- •Реферат
- •Введение
- •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.2 Входная информация
На вход языкового процессора поступает компьютерная модель, записанная с новыми конструкциями языка ИСМА.
Таким образом, компьютерная модель описанной выше задачи реакции-диффузии с размерностью N=20 должна иметь вид, как на рис. 3.2.
N = 20; k = 100 ; C2 = 16;
phi = 2;
count i = [1-10];
countj = [2-9];
arrayy[20]; // объявлениемассива
// начальные условия
y[2*i -1] = 0;
y[2*i] = 1;
// макросспараметром
macro alpha[i] = 2*pow(i/N - 1, 3)/C2;
macro beta[i] = 2*pow(i/N - 1, 4)/C2;
// явноезаданиеправыхчастейСДУ
y'[1] = alpha[1]*(y[3]- phi)*N/2 + beta[1]*(phi - 2*y[1] + y[3])*N*N - k*y[1]*y[2];
y'[2] = -k*y[2]*y[1];
y'[19] = -k*y[20]*y[19] ; y'[20] = -k*y[19]*y[20] ;
// алгоритмическая форма задания правых частей СДУ
y'[2*j-1] = alpha[j]*(y[2*j + 1] - y[2*j - 3])*N/2 + beta[j]*(y[2*j - 3] - 2*y[2*j-1] + y[2*j+1]) *N*N - k*y[2*j -1]*y[2*j];
y'[2*j] = -k*y[2*j]*y[2*j-1];
// гибридность
change_phi [TIME>= 5] is
phi~=0;
frominit;
Рисунок 3.2 – Компьютерная модель на входе языкового процессора
3.3 Выходная информация
После выполнения трансляции на выходе языкового процессора должна быть получена компьютерная модель, соответствующая старой версии языкаИСМА. Она показана на рис. 3.3.
N=20;
k=100;
C2=16;
phi=2;
// начальные условия
y1=0;
y3=0;
y5=0;
y7=0;
y9=0;
y11=0;
y13=0;
y15=0;
y17=0;
y19=0;
y2=1;
y4=1;
y6=1;
y8=1;
y10=1;
y12=1;
y14=1;
y16=1;
y18=1;
y20=1;
// задание правых частей СДУ
y1'=2*pow(1/N-1,3)/C2*(y3-phi)*N/2+2*pow(1/N-1,4)/C2*(phi-2*y1+y3)*N*N-k*y1*y2;
y2'=(-k)*y2*y1;
y19'=(-k)*y20*y19;
y20'=(-k)*y19*y20;
y3'=2*pow(2/N-1,3)/C2*(y5-y1)*N/2+2*pow(2/N-1,4)/C2*(y1-2*y3+y5)*N*N-k*y3*y4;
y5'=2*pow(3/N-1,3)/C2*(y7-y3)*N/2+2*pow(3/N-1,4)/C2*(y3-2*y5+y7)*N*N-k*y5*y6;
y7'=2*pow(4/N-1,3)/C2*(y9-y5)*N/2+2*pow(4/N-1,4)/C2*(y5-2*y7+y9)*N*N-k*y7*y8;
y9'=2*pow(5/N-1,3)/C2*(y11-y7)*N/2+2*pow(5/N-1,4)/C2*(y7-2*y9+y11)*N*N-k*y9*y10;
y11'=2*pow(6/N-1,3)/C2*(y13-y9)*N/2+2*pow(6/N-1,4)/C2*(y9-2*y11+y13)*N*N-k*y11*y12;
y13'=2*pow(7/N-1,3)/C2*(y15-y11)*N/2+2*pow(7/N-1,4)/C2*(y11-2*y13+y15)*N*N-k*y13*y14;
y15'=2*pow(8/N-1,3)/C2*(y17-y13)*N/2+2*pow(8/N-1,4)/C2*(y13-2*y15+y17)*N*N-k*y15*y16;
y17'=2*pow(9/N-1,3)/C2*(y19-y15)*N/2+2*pow(9/N-1,4)/C2*(y15-2*y17+y19)*N*N-k*y17*y18;
y4'=(-k)*y4*y3;
y6'=(-k)*y6*y5;
y8'=(-k)*y8*y7;
y10'=(-k)*y10*y9;
y12'=(-k)*y12*y11;
y14'=(-k)*y14*y13;
y16'=(-k)*y16*y15;
y18'=(-k)*y18*y17;
// гибридность
change_phi [TIME>=5] is
phi~=0;
frominit;
Рисунок 3.3 – Компьютерная модель на выходе языкового процессора
3.4 Архитектура среды исма с расширенным языком описания гс
В рамках данной работы предполагается решить поставленную цель, создав препроцессор, который переводил бы входную программу с новыми конструкциями в старый формат, это расширит область применения среды ИСМА.Также препроцессор сообщит пользователю об семантических и синтаксических ошибках, таких как выход за границу массива, невыполнение условия полноты системы уравнения, деление на ноль и т.п.
В дальнейшем предполагается интеграция нового языкового процессора непосредственно в инструментальную среду ИСМА.
На рис. 3.4 показано место препроцессора в работе среды ИСМА.
Рисунок3.4 – Архитектура инструментальной среды ИСМА+
Препроцессор расширенногоязыка ИСМА выполняет анализ текстовой модели ГС в соответствии со схемой (рис. 3.5).
Рисунок 3.5 – Технологическая схема работы препроцессора
