Antlr:忽略特定上下文中的关键字

时间:2013-10-17 21:17:37

标签: antlr grammar antlr3 ll

我正在用ANTLR构建一个类似英语的领域特定语言。其关键字是上下文相关的。 (我知道这听起来很脏,但对于非程序员目标用户来说这很有意义。)例如,ornot这样的常用逻辑运算符将被视为标识符括号括起来,[像这样和这个]。我目前的方法如下:

bracketedStatement
    : '[' bracketedWord+ ']'
    ;

bracketedWord
    :   (~(']')+
    ;

当与词汇定义相结合时,如下所示:

AND: 'and' ;
OR: 'or' ;

生成警告"Decision can match input such as "{AND..PROCESS, RPAREN..'with'}" using multiple alternatives: 1, 2"。我显然为ANTLR制造了歧义,但我不知道如何解决它。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

对于任何发现此问题的人,请查看this stack overflow question.它阐明了如何正确使用否定符号。