0

ANTLR 3.5 と Java 1.6 を使用して単純なコンパイラを作成したかった + jar ファイルを追加しましたが、このエラーと「理由で文法を作成できませんでした」が表示されますが、なぜ助けになるのかわかりません。コード全体ではありませんが、コードを少しずつ試してみましたが、まだコンパイルされていません

grammar LittleNic;
@members {
    public ErrorReporter err;
    public void displayRecognitionError(String[] tokenNames,
                                        RecognitionException e) {
      String msg = getErrorMessage(e, tokenNames);
      err.reportSyntaxError(e.line, e.charPositionInLine, msg);
    }
}

@lexer::members {
    public ErrorReporter err;
    public void displayRecognitionError(String[] tokenNames,
                                        RecognitionException e) {
        String msg = getErrorMessage(e, tokenNames);
    err.reportSyntaxError(e.line, e.charPositionInLine, msg);
    }
}

options {
  language = Java;
}

program: 'PROGRAM' IDEN ';' (dec (';' dec)*)? body ';' ;
dec:' ';
body: 'BEGIN' statementlist 'END';
statementlist:' ';



fragment FIRSTS: 'a'..'z'|'A'..'Z';
IDEN: (FIRSTS(FIRSTS|'0'..'9'|'_')*);
4

1 に答える 1

1

Change from

grammar LittleNic;
@members {
    public ErrorReporter err;
    public void displayRecognitionError(String[] tokenNames,
                                        RecognitionException e) {
      String msg = getErrorMessage(e, tokenNames);
      err.reportSyntaxError(e.line, e.charPositionInLine, msg);
    }
}

@lexer::members {
    public ErrorReporter err;
    public void displayRecognitionError(String[] tokenNames,
                                        RecognitionException e) {
        String msg = getErrorMessage(e, tokenNames);
    err.reportSyntaxError(e.line, e.charPositionInLine, msg);
    }
}

options {
  language = Java;
}

to

grammar LittleNic;

options {
  language = Java;
}

@members {
    public ErrorReporter err;
    public void displayRecognitionError(String[] tokenNames,
                                        RecognitionException e) {
      String msg = getErrorMessage(e, tokenNames);
      err.reportSyntaxError(e.line, e.charPositionInLine, msg);
    }
}

@lexer::members {
    public ErrorReporter err;
    public void displayRecognitionError(String[] tokenNames,
                                        RecognitionException e) {
        String msg = getErrorMessage(e, tokenNames);
    err.reportSyntaxError(e.line, e.charPositionInLine, msg);
    }
}

and try again. option should be put at top.

于 2013-06-03T06:46:45.017 に答える