Буква R в системе парсинга LR

Я пытаюсь понять, как работает анализ LR. L означает, что синтаксический анализатор читает входной текст в одном направлении без резервного копирования; это направление обычно слева направо в каждой строке и сверху вниз по строкам полного входного файла.

R означает, что синтаксический анализатор производит самый правый вывод в обратном порядке. моя проблема с R, я не могу понять, что это значит.

просто я знаю самый правый вывод для этого грамматика: E → E + E | E * E | (E) | Я бы

как следует:

E → E + E → E + E * E → E + E * id3 → E + id2 * id3 → id1 + id2 * id3

Спасибо.

1 ответ

Решение

Парсер LR обнаруживает самый правый вывод в обратном направлении. Таким образом, в вашем примере производные, которые он обнаружил бы, были бы в следующем порядке:

stack • input          derivation
-----------------      ----------
• id1 + id2 * id3      E → id1
E + • id2 * id3        E → id2
E + E * • id3          E → id3
E + E * E •            E → E * E
E + E •                E → E + E 
E • 
Другие вопросы по тегам