このpost about the antlr simple exampleは、Javaのための文法の作成方法を示しています。 ただし、Exp.gソースで文法とJavaソースコードが混在しています。 私の質問は、1つの文法ファイルを複数のJava、Scala、C++などのレクサー/パーサーの生成に使用できるように、文法ファイルをターゲット言語から切り離すことは可能ですか?
私の割り当てにパーサーのルールを書き込もうとしています。代入では、 "変数宣言"の部分をいくつかの型で行う必要があります。私はすべてのタイプでうまくいった。例: int i; または: ブールBC。 しかし、Array型では機能しません。例: int a [5];ここで 私が書いたコードです: vardecl: pritype id (COMMA id)* SEMI ;
pritype: INT
私が持っていたパーサのコードをコンパイルしながら: funcall: ID LB exp? RB ;
exp: funcall | INTLIT ;
その後 私の割り当ては、私が「funcallの」のために、次のように実行する必要があることが必要です。 An invocation expression is a function call which starts with an iden