だから私は自分の言語をCUDA言語に翻訳するコンパイラをJavaで書いています。このタスクのために、私は ANTLR4 で文法を書き、レクサーとパーサーを取得しました。
現在、ANTLR は、基本的に抽象解析ツリーのノードである実装可能なメソッドを備えたリスナーを提供します。次に、このノードのトークンに基づいて、生成したいコードでこのツリーを装飾します。
私の問題は、この CUDAEmitter クラスに 45 個のメソッドがあり、830 行のコードがあることです。これらのメソッドをどのように構造化して分割するかを理解するのに苦労しています。これらの 3 つを使用してノードを装飾します。
private final ParseTreeProperty<String> cuda = new ParseTreeProperty<String>();
String getCode(ParseTree ctx) { return cuda.get(ctx); }
void setCode(ParseTree ctx, String s) { cuda.put(ctx, s); }
コード生成の例:
public void exitIdvalString(ParmaParser.IdvalStringContext ctx) {
String str = ctx.STRING().getText();
setCode(ctx, str);
}
このクラスを分割するにはどうすればよいですか? 御時間ありがとうございます!