2015-04-13 1 views
0

Я читаю о парсере LR (0) из этой книги: Современная реализация компилятора в Java. Ниже приведен пример таблицы анализа, основанной на книге. http://postimg.org/image/hyowddu1h/Есть ли правило большого пальца, для которого символ сдвигается первым при генерации таблицы парсеров LR (0)?

символ Старт: S -> Е $

Продукция:

(1) Е -> Т + Е

(2) Е -> Т

(3) T -> x

Я попытался составить таблицу синтаксического анализа на основе данных, но я не получил такой же синтаксический стол, как в книге. Кажется, я правильно переместил символ. Просто у меня есть разная таблица разбора, чем в книге. (Примечание: я начал с состояния 0 вместо состояния 1, как в книге)

Так ли таблица синтаксического анализа уникальна или есть какое-либо правило большого пальца руки для определения того, какой символ сначала следует перенести в стек, или как обозначить правильно разобрать состояние? Я всегда сначала переношу символы терминала, а затем нетерминальные символы, как показано ниже: http://postimg.org/image/76vbu2vu3/

Заранее благодарен!

ответ

0

Государственные номера не так важны. На самом деле, они не важны вообще. Важное значение имеет государственная идентичность; как вы обозначаете состояние, чтобы показать, что личность зависит от вас. Вы можете использовать имена, такие как ураганы и торнадо.

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

+0

Я сравнивал свои состояния переходы/сопоставление с одним в учебнике, и они одинаковы. Поэтому мое понимание из вашего ответа заключается в том, что сопоставление важнее, чем маркировка состояния синтаксического анализа. Следовательно, поскольку мое сопоставление правильное, таблица разбора, которую я построил, также правильна, несмотря на то, что она отличается от той, что написана в учебнике. Я прав? – sw2

+0

@ sw2: совершенно. Нумерация состояний никоим образом не влияет на работу конечного автомата. Это даже не часть государственной машины. – rici

+0

Хорошо, теперь я понимаю. Спасибо! – sw2