1

単純なファイルを解析すると奇妙なエラーメッセージが生成されるため、明らかに間違った文法があります。

エラーを変更せずに次の文法をできる限り単純化しました ( '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 '()'
4

1 に答える 1