Тема лабораторной работы: Реализация метода рекурсивного спуска для синтаксического анализа.
Цель работы: Разработать для грамматики алгоритм синтаксического анализа на основе метода рекурсивного спуска.
Задание: В соответствии с вариантом для заданной грамматики необходимо разработать и реализовать алгоритм анализа на основе метода рекурсивного спуска.
В окне результатов отражается последовательность вызова процедур обработки символов грамматики в соответствии с деревом рекурсивного спуска. При наличии ошибки разбор продолжается с вышестоящего по отношению к ошибочному узлу куста.
Пример:
Дана грамматика 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-файле должна быть отражена следующая информация: грамматика, язык, классификация грамматики (КС или автоматная) и тестовые примеры.
Оценка за выполнение лабораторной работы выставляется, если:
Защита для последней лабораторной работы в семестре не предусмотрена.