- •Расчетно-графическая работа
- •Оглавление
- •Введение
- •Проектирование компилятора
- •Общие сведения
- •Грамматика языка
- •Разработка интерфейса
- •Реализация компилятора
- •2.1. Реализация лексического блока
- •2.2. Реализация синтаксического блока
- •2.3. Реализация генератора кода
- •2.4. Реализация р-ичной библиотеки
- •Тестирование и анализ результатов
- •Заключение
- •Список использованной литературы
-
Грамматика языка
Сокращения для действий алгоритма по переходу от инфиксной формы записи выражения к обратной польской:
PS –PushSymbol;
PTS –PushToStack;
PFS–PopFromStack.
Описание данных функций приведено в разделе 2.2 данного пояснения.
Ниже приведена грамматика языка:
<программа><заголовок><тело><окончание>
<заголовок>PROGRAM
<тело><операторы объявления><выполняемые операторы>
<операторы объявления> INTEGER<список имен >; | INTEGER< список имен >; <операторы объявления> |REAL< список имен >; | REAL< список имен >; <операторы объявления>
<список имен><идентификатор> | <идентификатор>, < список имен > | <идентификатор> = <константа> | <идентификатор> = <константа>, < список имен >
<идентификатор> l | l<последовательность букв и цифр>
<константа><целое> | <вещественное>
<целое>d | d<последовательность шестнадцатеричных цифр>
<последовательность шестнадцатеричных цифр>x | x<последовательность шестнадцатеричных цифр>
<вещественное><целое>.<целое>
<выполняемые операторы><оператор задания системы счисления> | <оператор задания системы счисления><выполняемые операторы> | <оператор ввода> | <оператор ввода><выполняемые операторы> | <оператор присваивания> | <оператор присваивания><выполняемые операторы> | <оператор вывода> | <оператор вывода><выполняемые операторы>
<оператор задания системы счисления> PBASE (<основание системы счисления>);
<основание системы счисления> 2|3|4|5|6|7|8|9|10|11|12|13|14|15|16
<оператор ввода>READ (<список ввода>);
<список ввода><идентификатор> | <идентификатор>, <список ввода>
<оператор присваивания><идентификатор> = <выражение>;
<expr><litem>OR{PTS}<litem2>|<litem>
<litem2><litem>{PFS}OR{PTS}<litem2>|<litem>{PFS}
<litem><lfactor>AND{PTS}<lfactor 2>|<lfactor>
< lfactor2><lfactor>{PFS}AND{PTS}< lfactor2>|<lfactor>{PFS}
<lfactor><arithm>={PTS}<arithm2>|<arithm>>{PTS}<arithm2>| <arithm>>={PTS}<arithm2>|<arithm><{PTS}<arithm2>|<arithm><={PTS}<arithm2>|<arithm><>{PTS}<arithm2>|<arithm>
<arithm2><arithm><PFS>={PTS}<arithm2>|<arithm><PFS>>{PTS}<arithm2>| <arithm><PFS>>={PTS}<arithm2>|<arithm><PFS><{PTS}<arithm2>|<arithm><PFS><={PTS}<arithm2>|<arithm><PFS><>{PTS}<arithm2>|<arithm2><PFS>
<arithm><item>+{PTS}< item2>|<item>-{PTS}< item2>| < item>
<item2>< item>{PFS}+{PTS} <item2>|<item>{PFS}-{PTS} <item2>|<item>{PFS}
<item><prim>*{PTS}<factor2> | <prim>/{PTS}<factor2> |<prim>
<factor2>< prim >{PFS}*{PTS} <factor2>| < prim >{PFS}/{PTS} <factor2>| <prim >{PFS}
<prim> -{PTS}<expr>{PFS} | NOT{PTS}<expr>{PFS} | (<expr>){PFS} |POW{PTS}<expr>{PFS}|CEIL{PTS}<expr>PFS}|FLOOR{PTS}<expr>{PFS}|<идентификатор>{PS}|<константа>{PS}
<оператор вывода> WRITE (<список вывода>);
<список вывода><идентификатор> | <идентификатор>, <список вывода>
<окончание> END
-
Разработка интерфейса
Первая форма– Генератор кода.
При нажатиивкладки «Файл» в главном меню,можно:
-
создать новый документ;
-
открыть документ;
-
сохранить документ;
-
выйти из программы.
При выходе без сохранения программа попросит сохранить документ.
Каждую операцию можем вызвать с помощью клавиатуры:
-
Создать – Ctrl+N;
-
Открыть – Ctrl+O;
-
Сохранить – Ctrl+S;
-
Сохранить как… – Ctrl+Alt+S;
-
Выход – Alt+F4.
Во вкладке «Правка»можно произвести следующие действия:
-
вырезать;
-
копировать;
-
вставить.
Каждую операцию можно выполнить с помощью горячих клавиш:
-
Вырезать – Ctrl+X;
-
Копировать – Ctrl+C;
-
Вставить – Ctrl+V.
Вкладка «Компиляция» отвечает за запуск компонентов и самого компилятора:
-
Лексический блок– F7;
-
Синтаксический блок– F8;
-
Генератор кода– F9;
-
Выполнить – F5.
Вкладка «Помощь» содержит справочный материал, который выводится в окне «О программе».
Форма№3 «Лексический блок» выводит результат работы лексического блока.
Форма№4 «Синтаксический блок» выводит результат работы синтаксического блока.
Форма№5 «Генератор кода» выводит результат работы генератора кода.