単純なファイルを解析すると奇妙なエラーメッセージが生成されるため、明らかに間違った文法があります。
エラーを変更せずに次の文法をできる限り単純化しました ( '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 '()'