Разбор 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?
заранее спасибо