0

我正在用 ANTLR 构建一种类似英语的领域特定语言。它的关键字是上下文相关的。(我知道这听起来很脏,但对于非程序员的目标用户来说很有意义。)例如,通常的逻辑运算符,如orand not,当用括号括起来时,将被视为标识符,[like this and this] . 我目前的方法如下所示:

bracketedStatement
    : '[' bracketedWord+ ']'
    ;

bracketedWord
    :   (~(']')+
    ;

这与以下词汇定义结合使用时:

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

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

4

1 回答 1

0

对于发现此问题的任何人,请查看此堆栈溢出问题。它阐明了如何正确使用否定符号。

于 2013-10-22T17:08:28.830 回答