只有char'a'在ANTLR语法中无法识别

时间:2012-12-12 00:20:51

标签: antlr antlr3 antlrworks antlrv3ide

ID的识别:

ID  :   ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'0'..'9'|'_')*
    ;

当我解析我的规则时,只有char'a'无法被识别,但是'A'或'aa'或'a0'或'b'或'c'或'AAAZzzzxx'或......其他一切在宇宙中除了'a'可以被词法分子识别为什么不'a'?

错误:

mismatched input 'a' expecting 'u0005'

谢谢!

1 个答案:

答案 0 :(得分:-1)

您的规则可以匹配ZERO字符,因此词法分析器会变得混乱。你需要:

ID  :   ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'0'..'9'|'_')+
;

请参阅'+'而不是'*'?

吉姆