## ノードの作成 文法ファイルから構文規則を読み取ったのち、2つの操作を行う必要がある。 ACCEPTの付与と読み取り位置毎のノードへの分解である。 ### ACCEPTの付与 文法規則には末尾まで到達すると終了するという情報を付与しないといけない。 そのため、`$ACCEPT : start $END`という構文規則を自動で付与する。 `$ACCEPT`は開始の構文規則で、`$END`は末尾を表す。 `$END`は字句解析器によって与えられるが、おおむねファイル末尾などを表す。 ``` $ACCEPT : start $END start : FIRST SECOND THIRD ``` なお、本章以降は`$ACCEPT : start $END`が自動付与されたものとして説明は省略する。 ### ノードへの分解 構文規則の間に`.`を入れたデータ構造を作成し、ノードと呼ぶ。 ここでは単純に構文規則の間に`.`を入れただけのノード群を作成する。 構文規則の並び順が隣のノードに向かってNextというリンクリストを作成する。 ``` $ACCEPT : start $END start : FIRST SECOND THIRD ↓ ノード0 : $ACCEPT : . start $END ノード1 : $ACCEPT : start . $END ノード2 : $ACCEPT : start $END . ノード3 : start : . FIRST SECOND THIRD ノード4 : start : FIRST . SECOND THIRD ノード5 : start : FIRST SECOND . THIRD ノード6 : start : FIRST SECOND THIRD . ``` ここではノード0→1→2やノード3→4→5→6のようにつながっているのみである。