ANTLR在第一次出现时停止

时间:2018-06-07 22:58:44

标签: antlr antlr4

我有这些规则:

while: 'while' expr 'do' program;
if: 'if' expr 'then' program 'else' program;

我不关心expr包含的内容,因此如何在thendo之前将所有内容都包含在内?

我试过了:

expr: .*?~('then'|'do');

但它不起作用。为什么呢?

1 个答案:

答案 0 :(得分:0)

如果内容和结构不重要,请使用令牌流。迭代所有标记(从while标记开始,直到遇到do(并跳过所有嵌套循环)。您的解析器确保输入正确,因此可以使用标记流。