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'
谢谢!
答案 0 :(得分:-1)
您的规则可以匹配ZERO字符,因此词法分析器会变得混乱。你需要:
ID : ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'0'..'9'|'_')+
;
请参阅'+'而不是'*'?
吉姆