我有一些ANTLR4语法,它提取像这样的记录
A = "a";
B = "b";
C = "c";
仅喂入它会返回错误
"error";
但是这个
A = "a";
"error";
没有错误。
我在语法上想念什么?
grammar SAMPLE;
rules
: rules atomicRule
| atomicRule
;
atomicRule
: Identifier '=' baseAction ';';
baseAction
: StringLit
;
Identifier
: [a-zA-Z_] ([a-zA-Z0-9_]*)
;
fragment EscapedQuote : '\\"';
StringLit : '"' ( EscapedQuote | ~('\n'|'\r'|'\t') )*? '"'
;
WS
: [ \n\t\r] -> skip
;
LineComment
: '#' ~[\r\n]* -> skip
;
Stress
: '!'
;
仅以Identifier
开头的内容会导致错误。在消耗第一个!
之后,字符串和重音(atomicRule
)就会被忽略