Теория формальных языков и компиляторов - лабораторные работы АВТ-113, АВТ-114 — Лабораторная работа №5 "Включение семантики в анализатор. Создание внутренней формы представления программы"

Тема: Включение семантики в анализатор. Создание внутренней формы представления программы.

Цель работы: Дополнить анализатор, разработанный в рамках лабораторных работ, этапом формирования внутренней формы представления программы.

 

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. работа программы продемонстрирована преподавателю.
  2. в ходе разговора с преподавателем студент ответил на все вопросы.
  3. ссылка на репозиторий проекта прикреплена к контролирующему мероприятию (срок - 11-12 недели).

Для защиты лабораторной работы студенту необходимо ознакомиться с теоретическим материалом и задачами, представленными в главах 1-3 учебного пособия “Теория языков программирования: проектирование и реализация”.