【发布时间】:2020-09-14 21:09:05
【问题描述】:
如果我有以下语法来解析由空格分隔的整数列表:
grammar TEST;
test
: expression* EOF
;
expression
: integerLiteral
;
integerLiteral
: INTLITERAL
;
PLUS: '+';
MINUS: '-';
DIGIT: '0'..'9';
DIGITS: DIGIT+;
INTLITERAL: (PLUS|MINUS)? DIGITS;
WS: [ \t\r\n] -> skip;
它不起作用!如果我通过“100”,我会得到:
line 1:0 extraneous input '100' expecting {<EOF>, INTLITERAL}
但是,如果删除词法分析器 INLITERAL 规则并将其放在解析器规则 integerLiteral 下方,就像这样
integerLiteral
: (PLUS|MINUS)? DIGITS
;
现在它似乎工作得很好!
我觉得如果我能够理解为什么会这样,我就会开始理解我正在经历的一些特质。
【问题讨论】: