Условие:
Нарисуй диаграмму
1. Инициализация:
- Получить последовательность лексических единиц, сформированную на этапе лексического анализа.- Установить указатель на первую лексическую единицу.
- Определить стартовый символ грамматики <карта>.
---
2. Рекурсивный спуск:
- Для каждого нетерминального символа:- Выбрать подходящее правило грамматики.
- Проверить, соответствует ли текущая лексическая единица терминальному символу правила.
- Если соответствует:
- Добавить узел в дерево разбора.
- Перейти к обработке следующего символа.
- Если текущая лексема не соответствует:
- Сигнализировать об ошибке синтаксического анализа.
---
3. Разбор <карта>:
- Разобрать <факторы>:- Рекурсивно вызвать правила для <фактор> и <факторы>.
- Разобрать <связи>:
- Рекурсивно вызвать правила для <связь> и <связи>.
---
4. Разбор <фактор>:
- Проверить, что текущая лексема — "ФАКТОР".- Перейти к <название_фактора>:
- Убедиться, что текущая лексема — идентификатор.
- Проверить знак "=".
- Разобрать <значение_фактора>:
- Убедиться, что это идентификатор, заключённый в кавычки.
- Проверить "ВЕС".
- Разобрать <вес>:
- Убедиться, что это число от 0 до 100.
---
5. Разбор <связь>:
- Проверить, что текущая лексема — "СВЯЗЬ".- Проверить открывающую скобку "(".
- Разобрать <название_фактора> дважды, разделив их запятой.
- Проверить закрывающую скобку ")".
- Проверить знак "=".
- Разобрать <сила_влияния>:
- Убедиться, что это число от -100 до 100.
---
6. Завершение анализа:
- Если весь текст разобран корректно:- Вывести дерево разбора.
- Если остались необработанные лексемы или обнаружена ошибка:
- Указать место ошибки.
