Убрать абстрактный build из Node. Парсеру он не нужен, требовать его наличия он не вправе.
Позволить задавать сложные правила. Для этого надо разрешить правилам Sequence, OrderedChoice, ZeroOrMore, Optional итп принимать не только имена правил, но и безымянные правила, которые формируют узел-фрагмент (Node\Fragment). При добавлении к коллекции узлов (NodeCollection) фрагмента, он заменяется на присоединение своих детей -- с соблюдением этого же правила для них.
build
изNode
. Парсеру он не нужен, требовать его наличия он не вправе.Node\Fragment
). При добавлении к коллекции узлов (NodeCollection
) фрагмента, он заменяется на присоединение своих детей -- с соблюдением этого же правила для них.