2

http://javacc.java.net/doc/errorrecovery.htmlに示されているように、JavaCC文法でエラーレポートとリカバリを実装しようとしています。

コードに言及した後;

void Stm() :
{}
{
  try {
    (
      IfStm()
    |
      WhileStm()
    )
  catch (ParseException e) {
    error_skipto(SEMICOLON);
  }
}


void error_skipto(int kind) {
  ParseException e = generateParseException();  // generate the exception object.
  System.out.println(e.toString());  // print the error message
  Token t;
  do {
    t = getNextToken();
  } while (t.kind != kind);
    // The above loop consumes tokens all the way up to a token of
    // "kind".  We use a do-while loop rather than a while because the
    // current token is the one immediately before the erroneous token
    // (in our case the token immediately before what should have been
    // "if"/"while".
}

ファイルはJavaCCで解析できず、「try」という単語とその行にエラーが表示されました。

'void error_skipto(int kind)' .

これを行う正しい方法は何ですか?

前もって感謝します

This is the error that is coming

ここに画像の説明を入力してください

4

1 に答える 1

2

どうやらあなたは JavaCC を使用していませんが、JTB 1.3.2 を使用しています。

JTB にはおそらく .jj 文法ファイル用の独自のパーサーがあり、示されているように JTB が try-catch をサポートしていない可能性があります。その場合、同じ入力で JavaCC を使用すると、異なる結果が得られます。

于 2011-11-14T17:38:39.330 に答える