follow集合の作成 🔗
先読みを実装するためfollow集合を作成する。
還元時に次に続く記号の読み取りと、次の記号がnullable集合であればfollowを集約する。
また、非終端記号が規則の最後である場合、非終端記号に規則のfollowを集約する。
次に続く記号の読み取り 🔗
非終端記号の次に終端記号がある場合は、followとなる
start : . a 'B'
a のfollowは 'B' となる
次に続く記号がnullable 🔗
非終端記号の次にnullable集合がある場合は、followを集約する
start : . a void 'B'
void :
void のfollowは 'B' となる
a のfollowは void だが void のfollowを集約し 'B' となる
非終端記号が規則の最後 🔗
非終端記号が規則の最後である場合、非終端記号に規則のfollowを集約する。
start : a . b
b のfollowは start のfollowを集約する