Здравствуйте, VladD2, Вы писали:
VD>4. Rule.n — variant Rule — можно сказать AST парсера (внутреннее представление правил). Вот как он выглядит:
VD>VD> internal variant Rule
VD> {
VD> | Choice { rules : list[Rule]; }
VD> | Sequence { rules : list[Rule]; }
VD> | Call { name : string; }
VD> | RepeatMin { minCount : int; rule : Rule; }
VD> | RepeatMinMax { minCount : int; maxCount : int; rule : Rule; }
VD> | Chars { chars : list[RangeSet]; }
VD> | Not { rule : Rule; }
VD> | And { rule : Rule; }
VD> | Capture { name : string; argType : RuleType; retType : RuleType; rule : Rule; }
VD> | ExtensionPoint { name : string; }
VD> }
VD>
А не подскажете, для чего ноды типа Call и Capture? Первый, похоже, есть ссылка на правило. Второй —
P.S. Не могу ни разу обещать, что займусь, т.к. грамматическим разбором начал интересоваться совсем недавно, а потому туп в этом деле как пробка. Но чем чёрт не шутит...