1
我有一個明顯錯誤的語法,因爲解析簡單文件會生成奇怪的錯誤消息。ANTLR4解析錯誤:在輸入沒有可行的替代
我在不改變錯誤的情況下儘可能簡化了以下語法(如果刪除'this'
ANTLRWorks的樹gui輸出將示例文件的標記int
顏色不同,儘管結構似乎相同)。
grammar DepClsJ_no_java_debug;
module : (methodDecl)* ;
methodDecl : pathType Identifier '()' block ;
pathType : Identifier | 'this' ;
block : '{'
(localDecl ';' )*
(statement )*
(expr )?
'}' ;
localDecl : pathType Identifier ('=' expr)?;
statement : block | expr ';' ;
expr : dotExpr ('=' dotExpr )* ; dotExpr : Identifier ('.' Identifier)* ;
Identifier : ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'0'..'9'|'_')* ;
演示代碼:
void main() {
a = c;
int b;
}
ANTLRWorks 2給了我以下錯誤消息:
line 3:8 no viable alternative at input 'intb'
line 3:9 mismatched input ';' expecting '()'
OMG我怎麼會看不到? – Bastian