我正在用 ANTLR 构建一种类似英语的领域特定语言。它的关键字是上下文相关的。(我知道这听起来很脏,但对于非程序员的目标用户来说很有意义。)例如,通常的逻辑运算符,如or
and 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 制造歧义,但我不知道如何解决它。我该如何解决?