followable集合の作成 🔗
1つのノードに対し規則が還元した後に続くfollow集合とahead集合を集約する。これをfollowable集合とする。
還元規則の判定にnullable集合を使用する。
現在の位置が左端にないが還元しうる規則に対してはfollowのみを集約する。
空規則の場合はaheadを集約する。
現在位置が末尾ではない還元しうる規則にはaheadとfollowを集約する。
followable集合の作成は次の疑似コードで表す。
これをなくなるまで全てのノードに対し行う。
followable集合 = 現在の位置が左端にないが還元しうる規則
foreach (line in 空規則)
top = lineの左辺
topのfollowable集合にtopのahead集合を追加
foreach (line in 現在位置が末尾ではない還元しうる規則)
top = lineの左辺
current = lineの読み込み位置規則
currentのfollowable集合にtopのahead集合を追加
currentのfollowable集合にtopのfollowable集合を追加