【发布时间】:2016-04-29 15:59:20
【问题描述】:
具有 ANTLR4 语法、匹配输入和生成的解析树。有什么方法可以找出解析树中的一个节点,如果有的话,它的定义应用了什么样的量词?
一个例子:有这样的语法:
开始:'a' ('b' | 'c')* 'd' ;
输入:'abcd'
解析输入后,'start' 规则的解析树将有 4 个终端子节点。问题是是否有任何方法可以找出第二个和第三个孩子(“b”和“c”)是可选的?
【问题讨论】:
-
“可选”量词是语法的一部分。因此,每当您看到匹配“b”或“c”时,它们都来自可选子规则。我不明白你的问题
-
好吧,这里有些误会。因此,目标是在匹配输入中找到那些不一定需要保持语法正确的部分,即找到量词为 ?、* 或可能 + 的部分。