1

身份证识别:

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

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

错误 :

mismatched input 'a' expecting 'u0005'

谢谢!

4

1 回答 1

-1

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

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

看到“+”而不是“*”?

吉姆

于 2012-12-12T03:44:24.613 回答