2015-10-08 5 views
0

Как интерпретировать эту грамматику? Я не понимаю, почему некоторые слова выделены жирным шрифтом.LL (1) интерпретация грамматики

enter image description here

Если бы я писал дерево разбора/таблицы для этого, я бы включать в себя смелые слова? Я пытаюсь выяснить, является ли грамматика на рис. LL (1), но не понимаю, как ее прочитать. Любая помощь будет оценена!

+2

Слова, выделенные жирным шрифтом, являются литералами (ключевые слова). – rici

+0

@rici Спасибо! Делает гораздо больше смысла. –

ответ

1

Жирным шрифтом являются маркеры (в < переменная >, а также b и c также должны быть жирным шрифтом, ошибка вашего учителя). Элементы в угловых скобках - это правила производства.

Грамматика LL (1), если для любого места альтернатива существует (отделенной |), синтаксический анализатор может решить, какую альтернативу проводить, глядя на только один жетон (следующего).

Так возьмите, например, <stmt> правило. Он имеет четыре альтернативы. <ifstmt> должен начинаться с токена , если. <whilestmt> должен начинаться с токена , а. < блок > должен начинаться с токена начало. Это оставляет только < назначить >, который должен начинаться с переменной, то есть, ровно один из , б или с. Что касается <stmt>, то парсер LL (1) может обработать это правило, потому что он может решить между четырьмя возможностями, исследуя только один токен.

Если какое-либо правило требует (например) изучения двух токенов, то парсер LL (1) не может обработать эту грамматику - для этого требуется парсер LL (2).

Надеюсь, это поможет.

+0

Большое вам спасибо! Объяснил это лучше, чем мой учитель. Ты удивительный! –