2012-02-06 1 views
0

Что такое канонические предметы LR (1)! Я прочитал книгу Дракона, она меня смущает (дельта, гамма, тош, ...)Обсуждение предметов LR (1): значение?

Может ли кто-нибудь помочь мне в этом вопросе?

Что это означает на английском языке? [A -> alpha.Bbeta, а]..

Спасибо большое ..

ответ

2

[A -> alpha . B beta , a] в основном означает, что «если предположить правило A был расширяется, до сих пор мы видели alpha Мы тогда ожидаем увидеть B beta Мы также знайте, что после A мы увидим a «

Итак, в CLR (1) у вас есть состояния, состоящие из некоторых из этих элементов. Затем есть много вариантов:

  • Если упреждающие (гамма) является членом first(B), и если у вас есть правило, такие как B->gamme C, то вы можете «Shift» и перейти в состояние, содержащее [B -> gamma . C, beta]. Как вы можете видеть, . переместилась прошел gamma (потому что gamma подобран и последующая из B является beta, потому что это то, что произошло после B в правиле A -> alpha B beta.
  • Если внешний вид упреждающего a и предполагая B beta может генерировать lambda (пустая строка) (здесь предполагается, что бета является нетерминалом, который может генерировать lambda). Затем вы можете «уменьшить» и перейти к состоянию, содержащему такие правила, как C -> something A . a something_else, follow]. В этом случае вы решили, что alpha, B и beta на стеке можно сгруппировать в один A.

Это был самый простой способ объяснить это.

+0

Жизнеспособный префикс Средства: префикс после ручки, правильно? – sap

+0

Вы иранский? – sap

+0

Я иранский, и я должен признать, что я не помню большую часть терминологии. То, что я помню, выглядит следующим образом: Look-ahead (следующий токен на входе), 'first (A)', который в этом случае является '{alpha}' и 'follow (A)' который является '{a}'. Фактически, эти три имеют значение при написании парсера (и именно поэтому я их помню). Остальное полезно в основном, когда речь идет о проверке правильности алгоритма синтаксического анализа и других теоретических материалов. – Shahbaz

1

IIRC, это «элемент», то есть потенциальное состояние какого-либо синтаксического анализа.

Что это означает:

[A - > alpha.Bbeta , a] 

является то, что при попытке разобрать (подстроку целевого языка), который может быть considerat как нетерминальный A, является альфа- был замечен, и («.»), что ожидается Bbeta, и что если элементы нетерминала видны, то действительный A, если следующий токен a.

(Я думаю, что вы переписали Bbeta неправильно, вероятно, это была бета-версия в книге).

+0

действительный A означает, что мы можем уменьшить на A. – sap

 Смежные вопросы

  • Нет связанных вопросов^_^