如何在ANTLR中匹配其中一个而不是两个



我想匹配这些可能的标志:[-ASC|-BIN] [-REC] [-DEL]它们都是可选的,但是对于-ASC-BIN标志,它们是xor的,只能使用其中一个,不能同时使用。

这是我处理标志的语法:(GET_OPTION_ASC | GET_OPTION_BIN) | GET_OPTION_REC | GET_OPTION_DEL | SPACES;

ASC和BIN不能同时出现的规则不是一个语法决定,而是一个语义决定。解析器只能执行语法任务。

通常,在对与语法无关的各种其他任务进行解析之后,会有一个语义阶段。这是其中之一。您应该检查构建的解析树,并报告所有语义错误(如重复的变量名,上面提到的错误等)。

最新更新