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

Тема лабораторной работы: Реализация метода рекурсивного спуска для синтаксического анализа.

Цель работы: Разработать для грамматики алгоритм синтаксического анализа на основе метода рекурсивного спуска.

Задание: В соответствии с вариантом для заданной грамматики необходимо разработать и реализовать алгоритм анализа на основе метода рекурсивного спуска.

В окне результатов отражается последовательность вызова процедур обработки символов грамматики в соответствии с деревом рекурсивного спуска. При наличии ошибки разбор продолжается с вышестоящего по отношению к ошибочному узлу куста. 

 

Пример: 

Дана грамматика G[E]: 

1. E → TA 

2. A → ε | + TA | - TA 

3. T → ОВ 

4. В → ε | *ОВ | /ОВ 

5. О → num | id | (E) 

num – числовая константа Ц{Ц} 

id – идентификатор Б{Б|Ц} 

Б – {a, b, c, ...z, A, B, …, Z}, 

Ц – {0, 1, …, 9}

Для выражения 45+a*25 последовательность разбора: E-T-O-num-B- ε-A-+-T-O-id-B-*-O-num-B- ε-A- ε.

 

Примеры реализации метода рекурсивного спуска представлены в разделе 5.4 учебного пособия “Теория языков программирования: проектирование и реализация”, а также по ссылке.

Студент, выполнивший задание на лабораторную работу, прикрепляет ссылку на git-репозиторий с кодом программы в системe DiSpace в контролирующее мероприятие “Лабораторная работа 7”. В README-файле должна быть отражена следующая информация: грамматика, язык, классификация грамматики (КС или автоматная) и тестовые примеры.

 

Оценка за выполнение лабораторной работы выставляется, если:

  1. работа программы продемонстрирована преподавателю.
  2. в ходе разговора с преподавателем студент ответил на все вопросы.
  3. ссылка на репозиторий проекта прикреплена к контролирующему мероприятию (срок - 15-16 недели).

 

Защита для последней лабораторной работы в семестре не предусмотрена.