ANTLR4忽略应该导致错误的元素

时间:2019-07-16 09:00:20

标签: antlr4 grammar

我有一些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)就会被忽略

error caused by a leading string trailing string after the valid item does not causes any error

0 个答案:

没有答案