Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
假设我有一个类似的树节点,^(Root child1 child2)并且它的根节点child1可能有几个孩子。问题是,当我使用以下规则重写上述树时, 的所有子级child1都将替换为child2,但我希望保留它们并将child2' 的树附加到child1' 的子级列表中。我该怎么做?
^(Root child1 child2)
child1
child2
^(Root ch1=child1 ch2=child2) -> ^($ch1 $ch2)
通过放置在运算符$ch1之后的第一个元素^(,您已经告诉 ANTLR 您希望将该元素视为节点而不是树。这种用法总是自动丢弃所有存在的子节点。child1要获得您所追求的功能,您必须根据其根节点和子树来分解它。
$ch1
^(
^(Root ^(Child1Root (ch1c+=.)*) child2) -> ^(Child1Root $ch1c* child2)