Yanp

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を集約する