## next集約の実行 作成した[ノード](10.ノードの作成.md#ノードへの分解)と[first集合](11.first集合の作成.md)を元に、next集約を実行する。 next集約とは**次の規則が非終端記号であればfirst集合と現在のノードの状態を集約する**操作となる。 ``` ノード0 : $ACCEPT : . start $END ↓ 次の規則がstartであるためstartのfirst集合を集約 ノード0 : $ACCEPT : . start $END start : . FIRST SECOND THIRD ``` first集合は複数ある場合があり、全てを集約する。 ``` stmt : expr expr : left '+' right | left '-' right ↓ ノードN : stmt : . expr ↓ 次の規則がexprであるためexprのfirst集合を集約 ノードN : stmt : . expr expr : . left '+' right expr : . left '-' right ``` next集約は次の疑似コードで表す。 これを集約ができなくなるまで全てのノードに対し行う。 ``` foreach (node in ノード集合) if (nodeの次の規則がfirst集合であれば) nodeへfirst集合[nodeの次の規則]を集約 ```