Slide 30
Slide 30 text
状態を実装する
各項のドットの次の記号を見る
● 終端記号なら shift
○ 遷移先の状態番号
● 非終端記号なら goto
○ 遷移先の状態番号
● 文法の終わりなら reduce
○ 文法の記号数
○ 左辺の記号
状態0
● ws: ., true/false/null/{/[/"/0/ONENINE/-
State.new(
{
' ' => [:shift, 4],
'\n' => [:shift, 5],
'\r' => [:shift, 6],
'\t' => [:shift, 7],
'true' => [reduce, 0, :ws],
'false' => [reduce, 0, :ws],
'null' => [reduce, 0, :ws],
'{' => [reduce, 0, :ws],
'[' => [reduce, 0, :ws],
...(snip)...
},
{
json: 1,
element: 2,
ws: 3,
}
),