Тема: Включение семантики в анализатор. Создание внутренней формы представления программы.
Цель работы: Дополнить анализатор, разработанный в рамках лабораторных работ, этапом формирования внутренней формы представления программы.
1 вариант. В качестве внутренней формы представления программы выберем польскую инверсную запись (ПОЛИЗ). Эта форма представления наглядна и достаточно проста для последующей интерпретации, которая может быть выполнена с использованием стека.
Задание:
1) Дополнить парсер грамматикой G[<АВ>]. Реализовать данную КС-граммматику методом рекурсивного спуска:
1. E → TA
2. A → ε | + TA | - TA
3. T → ОВ
4. В → ε | *ОВ | /ОВ
5. О → num | (E)
2) Реализовать алгоритм записи арифметических выражений в ПОЛИЗ и алгоритм вычисления выражений в ПОЛИЗ.
2 вариант. В качестве внутренней формы представления программы выберем тетрады. Тетрада имеет четыре поля: op, arg1, arg2 и result.
Задание:
1) Дополнить парсер грамматикой G[<АВ>]. Реализовать данную КС-граммматику методом рекурсивного спуска:
1. E → TA
2. A → ε | + TA | - TA
3. T → ОВ
4. В → ε | *ОВ | /ОВ
5. О → id | (E)
2) Реализовать алгоритм записи выражений в форме тетрад.
3 вариант. Дополнить грамматику, разрабатываемую в рамках курсовой работы, продукциями из грамматики G[<АВ>]. Реализовать парсер для дополненной грамматики.
Более подробно про ПОЛИЗ, тетрады и триады можно прочитать в разделе 5.6 учебного пособия “Теория языков программирования: проектирование и реализация”, а также в приложенном файле.
Студент, выполнивший задание на лабораторную работу, прикрепляет ссылку на git-репозиторий с кодом программы в системe DiSpace в контролирующее мероприятие “Лабораторная работа 5”. В README-файле должна быть отражена следующая информация: постановка задачи, вариант задания, примеры верных строк и тестовые примеры.
Оценка за выполнение лабораторной работы выставляется, если:
Для защиты лабораторной работы студенту необходимо ознакомиться с теоретическим материалом и задачами, представленными в главах 1-3 учебного пособия “Теория языков программирования: проектирование и реализация”.