У меня проблемы с синтаксическим анализом следующей грамматики с использованием метода LALR.
s -> y
y -> dX | ydX
X -> e | Zd
z -> F | epsilon
В начале все нормально, вот состояние элемента 0: (, разделяет состояния предпросмотра)
s -> .y, $
y -> .dX, $d
y -> .ydX, $d
Теперь это нормально, но когда вы переходите в состояние 1 на рекламном терминале, я запутываюсь. Моя книга имеет состояние 2, как показано ниже:
y -> d.X, $d
X -> .e, $d
X -> .Zd, $d
Z -> .f, d
Z -> ., d
Откуда исходит прогнозный терминал "d" в нетерминале X? Я думал, что dX произошел от .dX, у которого были терминалы предпросмотра "$" и $ d ". Но при выполнении E-замыкания разве не следует, что предпросмотры должны быть первыми из $ d, который равен" $ "? Почему это" $ ",или "d"? Я думал, что это может быть из другого состояния, так как это LALR, но состояние, с которым я в конечном итоге объединяю состояние 1, также не имеет объявления в предвкушении. Может кто-нибудь объяснить мне, почему существует пара "d"с "$" в предвидении этого состояния? Спасибо.