antrlr newbie问题。对于给定的语法Antlr Maven插件说,已经创建了所有必要的Java类,以遍历和解析文本。当使用按照"确定的Antlr4参考"中的规定时,它的工作正常。
现在想象我需要重复使用生成的类来解析一个表达式,该表达式由埋在语法文件深处的规则所定义。但是,该引用似乎没有提供有关如何选择特定规则作为起始规则的线索,生成的类始终期望整个语法树存在。
使用生成的类AS也不起作用,导致相应的侦听器和解析器方法期望一个上下文参数,只有在拥有"父上下文"one_answers"调用状态"时才能创建,而我不得知道如何定义。
到目前为止,我提出的唯一(和垃圾)解决方案是将语法分为两个文件,以便相关的低级别规则将成为最高级别的规则,并将后者导入第一个。
我在这里想念一些明显的东西吗?任何帮助将不胜感激。
这很简单。将输入流加载与您想与其中一个子框匹配的文本,然后像对主要规则一样调用解析器中该子列的功能。每个语法规则都由一个函数表示,您可以简单地调用您的潜台词,然后将其生成一个剥离的解析树,仅适用于此子序(和它的孩子)。