私は JavaCC と協力して、Java で作成した一種の「ピクチャー スクリプト」プログラム用のパーサー文法をまとめました。このプログラムは一連のスクリプト化されたコマンドを受け取ります。これらのコマンドの大部分は java.awt.Graphics メソッド呼び出しに直接マッピングされ、それらを直接処理し、画像をファイルに出力します。より複雑な構造 (ループや関数など) の追加を開始したいので、JavaCC を使用してパーサーを構築しています。
現在、JJTree を使用して入力を AST として構築しています。とにかく、JavaCC から警告が表示されます ( JJTreeは .jjt ファイルで問題ありません):
接頭辞、そのうちの 1 つは「+」
ソース文法は「PicParse.jjt」にあるため、これはそのファイルの問題のある構成であると思います。
(
MulTerm()
( //line 320 in the file, column 9 starts at open parens
"+"
MulTerm()
{jjtThis.setName("+");}
|
"-"
MulTerm()
{jjtThis.setName("-");}
)*
)#Plus(>1)
最後に、私はこれに遭遇しましたが、スター演算子 (「*」) を疑問符演算子 (「?」) に置き換えても、警告は削除されませんでした。
最終的に、私が望むのは、このプロダクション ルール (MulTerm() ルールはこのルール ("AddTerm()") と同じ) を使用できるようにすることです。加算と減算を区別し、それぞれを表すノード タイプを 1 つだけにします。