我有一个语法,其中CHAR是一个标记。我的语法的一个合法表达是CHAR(2(。重点是,ANTLR似乎将整个StringCHAR(2(作为令牌,因此将error作为未知令牌。为了解决这个问题,我必须在令牌后面插入空格,就像CHAR(2(一样。那么,我如何告诉ANTLR分离代币呢?
感谢
使用以下语法:
expression
: STRING CHAR LPAREN NUMBER RPAREN
;
STRING: 'String';
CHAR: 'CHAR';
NUMBER: [0-9]+;
LPAREN: '(';
RPAREN: ')';
ID: [A-Za-z]+;
WS: [ trn]+ -> channel(HIDDEN);
您可以用期望的方式解析表达式。