在我的语法中,有一些用:
分隔的键值对。一个例子是这样的:
rule1 : string
rule2 : string
我知道一些指令,例如rule1
和rule2
,并且我需要忽略在文件中找到的其他文本(或未知的键值对),例如rule3
,{{1} }等...
在我的 ANTLR4 语法中,我具有以下内容:
randomtext
当我测试有效文件时,一切正常,但是当我测试格式错误的输入时,就像这样:
group : rule (comment | rule)* ;
rule : rule1 | rule2
rule1 : RULE1':' ruleName+ comment* ;
rule2 : RULE2':' ruleName+ comment* ;
ruleName : ID ID*;
comment : '#' ID* ;
它检测到第一行是正确的(如预期的那样),第二行带有和错误的提示是:
第2行:5在“ somestring”处缺少“:”
它被检测为rule1: asd
rule2 somestring
解析器规则。
问题是,如何忽略解析器中的所有未知文本?未知规则是我的解析器文件中未考虑的规则。
谢谢