我正在用ANTLR构建一个类似英语的领域特定语言。其关键字是上下文相关的。 (我知道这听起来很脏,但对于非程序员目标用户来说这很有意义。)例如,or
和not
这样的常用逻辑运算符将被视为标识符括号括起来,[像这样和这个]。我目前的方法如下:
bracketedStatement
: '[' bracketedWord+ ']'
;
bracketedWord
: (~(']')+
;
当与词汇定义相结合时,如下所示:
AND: 'and' ;
OR: 'or' ;
生成警告"Decision can match input such as "{AND..PROCESS, RPAREN..'with'}" using multiple alternatives: 1, 2"
。我显然为ANTLR制造了歧义,但我不知道如何解决它。我该如何解决这个问题?