私は Kenneth Louden の Compiler Construction book を使用していますが、例が不足しており、これがどのように行われるかを示すルールに従うのは非常に困難です。LR(1) 状態に移動する方法がわかりません。また、LR(1) 状態から LALR(1) 状態に移行する方法もわかりません。
たとえば、これらの LR(1) は次のように述べています。
「S -> .XX, $」がどのようにそこに到達したかは理解していますが、「X -> .aX, a/b」を見てください。$ がその一部ではないのはなぜですか? $を持つルールから生成されたのではないので、$を持つ必要はありませんか? そして、a/b はどのように現れましたか? この本によると、A -> alpha.Bgama,a で B が非終端記号の場合、B -> .beta, b がすべての B -> beta に追加されます。b は最初の (gamaalpha) にあります。だから、私が理解したことから:
S -> .XX, $ and X -> aX and X -> b => X -> aX, $ and X -> b, $
X -> .aX, $ and X -> b, $ => 何も起こらない
A -> .a, $ => 何も起こらない
しかし、上記の例を考えると、それは完全に間違っているようです。