いよいよ循環のない項の実装がほとんど終わってしまったので、次は SequenceType まわりの小さな循環を実装して、その後いよいよ本命の ExprSingle 系の実装に入る
色付きのやつがパーサ実装済
赤背景は型とパーサが実装済、青背景は型を省略して別の型に任せたりしたもの (つまり実装不要かつ既にパース可能)、白背景は未実装。
四角枠は葉ノードから循環なしで実装していけるもので、楕円枠は文法が再帰的になっているもの。
緑枠は SequenceType を含むループで、赤枠は Expr を含むループ。
ノリで XPath も赤くしちゃったけど、まあそれは無視で。
緑のやつは SequenceType をダミーで用意して擬似的な葉にするとループが解けるので、葉から順に実装していけばどうにかなる。
赤いやつも同様に ExprSingle をダミーで用意して実装していけばループは解ける。