Разбор LR(1), проблема с упреждающими символами

Я понимаю концепцию синтаксического анализа LR(1) и опережающих символов. У меня есть решение упражнения, и оно не согласуется с моим решением.

Я пытаюсь заполнить таблицу синтаксического анализа LR(1) для грамматики ниже:

S->xAz 
S->BAx
A->Ay
A->e
B->yB
B->y

Ι не нужно расширять грамматику, поскольку S не появляется ни в одной правой части какого-либо правила.

First(A)=y,e
First(Ax)=x,y
First(B)=y
First(Ay)=y

Символы прогнозирования в скобках.

Итак, I0 = Closure(S->. XAz($), S->.BAx($)) =

S->.xAz($)
S->.BAx($)
B->.yB(x,y)
B->.y(x,y)

Когда я пытаюсь GOTO(0,x), я думаю, что мне нужно перейти к:

S->x.Az($)
A->.Ay(z)
A->. (z) 

Чтобы найти символ просмотра вперед для A->. & A->. Да, я возьму Первый (z). Но официальное книжное решение гласит, что опережающий взгляд - это (z,y). Откуда это y?

заранее спасибо

0 ответов

Другие вопросы по тегам