ВВЕДЕНИЕ 4
1 ФОРМАЛЬНЫЙ ЯЗЫК ПРЕДСТАВЛЕНИЯ МАТЕМАТИЧЕСКИХ МОДЕЛЕЙ 6
1.1 АНАЛИЗ СТРУКТУРЫ МАТЕМАТИЧЕСКИХ МОДЕЛЕЙ И ВЫБОР МЕТОДОВ РЕШЕНИЯ ЗАДАЧ 6
1.1.1 Классификация моделей 6
1.1.2 Выбор методов решения задач 7
1.2 ФОРМАЛЬНЫЕ ЯЗЫКИ И ГРАММАТИКИ 9
1.2.1 Нотация Бэкуса-Наура 12
1.3 ЯЗЫК ОПИСАНИЯ МАТЕМАТИЧЕСКИХ МОДЕЛЕЙ 14
1.3.1 Описание формального языка в расширенной форме Бэкуса - Наура 14
1.3.2 Грамматика языка математических моделей 19
2 РАЗРАБОТКА АЛГОРИТМОВ ТРАНСЛЯТОРА 22
2.1 ЛЕКСИЧЕСКИЙ АНАЛИЗ 22
2.2 СИНТАКСИЧЕСКИЙ АНАЛИЗ 25
2.2.1 Восходящий и нисходящий синтаксический анализ 27
2.2.2 Нисходящий анализ с возвратами 27
2.2.3 Левая факторизация 28
2.2.4 Устранение левой рекурсии 28
2.3 РАЗРАБОТКА И ИСПОЛЬЗОВАНИЕ ТАБЛИЦЫ ИДЕНТИФИКАТОРОВ 32
2.4 СЕМАНТИЧЕСКИЙ АНАЛИЗ 33
2.5 РАЗРАБОТКА МЕХАНИЗМА ГЕНЕРАЦИИ КОДА 39
3 ПРОГРАММНАЯ РЕАЛИЗАЦИЯ И АНАЛИЗ РЕЗУЛЬТАТОВ 42
3.1 СТРУКТУРА КЛАССОВ 42
3.2 ОБРАБОТКА ОШИБОЧНЫХ СИТУАЦИЙ 42
3.3 ЛЕКСИЧЕСКИЙ АНАЛИЗАТОР 44
3.4 СИНТАКСИЧЕСКИЙ АНАЛИЗАТОР 46
3.5 ТАБЛИЦА ИДЕНТИФИКАТОРОВ И СЕМАНТИЧЕСКИЙ АНАЛИЗ 47
3.6 РЕАЛИЗАЦИЯ ГЕНЕРАЦИИ КОДА 49
3.7 ТЕСТИРОВАНИЕ ТРАНСЛЯТОРА 50
ЗАКЛЮЧЕНИЕ 53
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 54
ПРИЛОЖЕНИЕ
В настоящее время математические модели широко используются во многих
областях для проведения исследований реальных объектов или процессов. Построение математической модели - это центральный этап исследования или проектирования любой системы. От качества модели зависят результаты последующего исследования на ее основе весь последующий. Для проведения исследований на математических моделях необходима их численная реализация на ЭВМ. разработать компьютерную модель на основе математической, необходимы инструментальные программные средства, обеспечивающие быстрое и удобное формирование модели,
проведение численных экспериментов на модели и анализ их результатов.
Существуют несколько типов представления математических моделей. В данной работе рассматриваются математические модели, представленные в аналитическом виде. Аналитическое моделирование основано на описании моделируемого
объекта с помощью набора математических формул. Аналитические модели являются эффективным инструментом для решения задач оптимизации процессов, а
также оптимизации и вычисления характеристик самих систем. Актуальность выбранной темы обусловлена тем, что существует потребность в инструменте, позволяющем формировать на основе математической модели в аналитическом виде компьютерную модель.
Данный инструмент может быть использован в качестве расширения существующих пакетов математических программ.
Для построения компьютерной модели на основе представления математической модели в аналитическом виде, необходимо формальное описание математической модели. Для этого предлагается использовать элементы теории языков программирования и методов трансляции. При разработке предполагаемой программы
необходимо разработать формальный язык для описания структуры математической
модели, на основе которой становится возможным составление промежуточного
представления модели на ЭВМ. Описание на формальном языке должно быть дополнено методами лексического, синтаксического и семантического анализа. На основе анализа модели на ЭВМ производится генерация кода математической модели5
на языке С++. Полученный код может применяться для расчетов в различных приложениях.
Цель дипломной работы: разработка программного компонента для автоматизированной трансляции математических моделей динамических систем, представленных в виде описания на специальном формальном языке, в компилируемый программный код на языке C++.
Для достижения цели дипломной работы необходимо решить следующие задачи:
• разработать формальный язык для описания математических моделей в виде
системы скалярных и векторно-матричных алгебраических и дифференциальных уравнений;
• разработать алгоритм и реализовать лексический и синтаксический анализаторы для языка.
• разработать типовую структуру программной реализации компьютерной модели в виде класса C++ и создать шаблон класса.
• разработать алгоритм генерации программного кода для компьютерных моделей на основе шаблона.
Для реализации приложения использован язык С++ в среде Qt Creator.
В результате выполнения дипломной работы был разработан программный
компонент для автоматизированной трансляции математических моделей динамических систем, представленных в виде описания на специальном формальном языке, в
компилируемый программный код на языке C++.
В ходе выполнения работы были решены все поставленные задачи:
разработан формальный язык для описания математических моделей в
виде системы скалярных и векторно-матричных алгебраических и дифференциальных уравнений;
реализован алгоритм и выполнение лексического и синтаксического
анализаторов для языка.
разработана типовая структура программной реализации компьютерной
модели в виде класса C++ и шаблон класса.
разработано алгоритм генерации программного кода для компьютерных
моделей на основе шаблона.
1 Классификация математических моделей . [Электронный pecypc]//URL: http://studopedia.ru/14_1357_klassifikatsiya-matematicheskih-modeley.html (дата обра¬щения: 25.5.2016).
2 Молдованова О.В. Языки программирования и методы трансляции: учеб. посо¬бие. - Новосибирск: СубГУТИ, 2012. - 134 с.
3 Карпов В.Э. Теория компиляторов: учебное пособие, 2-е изд. М., 2010. - 91 с.
4 Пилецкий И.И. Методы трансляции: метод. пособие / И.И.Пилецкий, В.В.Шиманский.- Минск: БГУИР, 2012.- 88с.:ил.
5 Молчанов А.Ю. Системное программное обеспечение: учебник для вузов - СПб.: Питер, 2006. - 396 с.: ил.
6 Бобровский С. М. Учебно-методический комплекс по дисциплине «Лингвисти-ческое обеспечение информационных систем» / сост. С. М. Бобровский. - Тольятти: изд-во ПВГУС, 2012. - 100 с.
7 Ахо А.В. Теория синтаксического анализа, перевода и компиляции. В 2 т. Т.1. Синтаксический анализ / Ахо А.В., Ульман Дж.Д., В.Н.Агафонова, ред.
В.М.Курочкина. - М.: Мир, 1978. - 613 с.
8 Ахо А.В. Компиляторы: принципы, технологии и инструменты / Ахо А.В., Сети Р., Ульман Дж.Д., под. ред. И.В.Красикова. -2-е изд. - М.: Вильямс, 2008. - 1184 стр.
9 Muchnick S. Advanced Compiler Design and Implementation / Morgan Kaufmann Publishers Inc. San Francisco, 1997. - 856 p.
10 Mogensen T. Basics of Compiler Design.- Copenhagen: DIKU, University of Copen¬hagen, 2010. - 319 p.
11 Нисходящий грамматический разбор с возвратами. [Электронный ре- сурсф/URL: http://5fan.ru/wievjob.php?id=29377 (дата обращения: 3.6.2016).
12 Свердлов С.З. Языки программирования и методы трансляции: Учебное посо-бие. — СПб.: Питер, 2007. — 638 с: ил.