2

3年前にantlrに触れましたが、antlr4は初めてです。ここにこの JavaScript 文法ファイルがあり、break ステートメントは式ステートメントであると見なされますが、break ステートメントは以前に定義されています。ルールの優先順位はどのように機能しますか?

これが私の文法ファイルです:

https://github.com/frankdu/minijs/blob/master/antlr/src/main/resources/org/minijs/parser/antlr/JavaScript.g4

問題はステートメントの解析にあります。breakステートメントを見ると

break;

Expression ステートメントとして解析します。したがって、以下の単体テストは失敗し、現時点では無視されます。

https://github.com/frankdu/minijs/blob/master/core/src/test/java/org/minijs/core/parser/BreakStatementTest.java

4

1 に答える 1