
- •Выпускная квалификационная работа бакалавра
- •Задание на выпускную квалификационную работу бакалавра
- •План-график выполнения работы
- •Реферат
- •Введение
- •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
5.3 Семантический анализатор
На рис. 5.3 приведена входная программная модельcдвумяошибками в 3, 4 строке:интервал счётчика iне покрывает весь массивy, а при значенияхсчётчикаj индекс переменной выходит за границу массиваy в строке 19.
N = 20; k = 100; C2 = 16;
phi = 2;
count i = [1-5];
countj = [1-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;
Рисунок 5.3 – Входная программная модель
Языковой процессор выдаст следующие диагностики:
line:18 error: out of range array: y
warning: initial values to define a not completely
Заключение
В процессе разработки препроцессора для расширенного языка ИСМА было проведено детальное ознакомление с принципами и технологиями трансляции искусственных языков, были изучены паттерны, используемые на практике при проектировании подобных систем. Язык спецификации ГС ИСМА был расширен новыми параметризованными конструкциями и типами данных, для него была написана новая порождающая грамматика, а также выведены более интеллектуальные семантические правила и некое подобие системы типовдля переменных, используемой в языках программирования.
В ходе работы были реализованы все фазы языкового процессора: лексический анализ, синтаксический анализ, семантический анализ, кода генерация. Сформулированы алгоритмы лексемной декомпозиции, синтаксического разбора и генерации промежуточного представления; такжебыли сформулированы специфичные для языка ИСМА алгоритмы построения таблицы символов, семантических проверок на корректность типа операнда в операторе, предметных семантических проверок. Выполнена программная реализация разработанных алгоритмов. Произведена отладка созданного приложения.
Работоспособность языкового процессора была проверена на программной модели задачи реакции-диффузии. Созданное программное обеспечение позволяет качественно описывать задачи высокой размерности с алгоритмическим заданием правых частей.
Дальнейшие исследования и разработку следует вести в следующих направлениях:
– добавление возможности описыватьмногомерные задачи, т.е. возможность использовать программные конструкции по нескольким индексам (два и более);
– интеграция в инструментальную среду ИСМА.
Список использованных источников
1 WallingfordE. TranslationofProgrammingLanguages[Электронныйресурс] /WallingfordE. // Режимдоступа: http://www.cs.uni.edu/~wallingf/teaching/155/sessions/
2 Ахо А.В. Компиляторы: принципы, технологии, инструменты: Пер. с англ. / А.В. Ахо, М.С. Лам, Р. Сети, Дж.Д. Ульман. – М.: Издательский дом «Вильямс», 2011. – 1175 с.
3 Страуструп Б. Язык программирования С++.– СПб:Бином, 2008. – 1104 с.
4ГаммаЭ. Приемы объектно-ориентированного проектирования / Э.Гамм, Р. Хелм, Р. Джонсон, Д. Влиссидес. – СПб: Питер, 2008. – 366 с.
5Александреску А. Современное проектирование на С++. – М.:Издательский дом «Вильямс», 2002. – 336 с.
6Шорников Ю.В. Теория и практика языковых процессоров: Учебное пособие. – Новосибирск: Изд-во НГТУ, 2004. – 203 с.
7 Новиков А.Е., Новиков Е.А., Шорников Ю.В. Аппроксимация матрицы Якоби в (2,2)-методе решения жестких систем // ДАН ВШ РФ, №1 (10), 2008. - С.30 - 44.
8 Grune D. Parsing Techniques – A Practical Guide /D. Grune, G. H. J. Jacobs. – EllisHorwood, 1990. – 320 pp.
9 Грис Д. Конструирование компиляторов для цифровых вычислительных машин. – М.: Мир, 1975. – 544 с.
10 ШорниковЮ.В. Прикладное математическое, алгоритмическое и программноеобеспечение компьютерного анализа гибридных систем[текст]: дисс… докт. техн. наук / Ю.В. Шорников, 2009.
11 ТомиловИ.Н. Синтаксически ориентированные и графические средства описания и анализа моделей гибридных систем[текст]: дисс… канд. техн. наук / И.Н. Томилов, 2010.