私は、JavaCCで既に生成されたAbstract-Syntax-Treeからコントロールフローグラフを構築するためにLEParserCfgVisitorクラスを実装する方法を理解しようとしています。 。私は既に存在するツールがあることを知っていますが、私はコンパイラの最終版の準備にそれをしようとしています。Javaを使用して訪問者パターンを持つASTからコントロールフローグラフを作成
私は、グラフをメモリに保持するデータ構造を持つ必要があることを知っています。そして、各ノードのIN、OUT、GEN、KILLなどの属性を制御フローを実行できるように保持したい後で分析する。
私の主な問題は、ブロック、ループ、等々の性質に応じて、それぞれのブロック間に右端を持つように、異なるブロックをどのように接続するかを考えていないということです。私は訪問者を構築するのに役立つ明示的なアルゴリズムを見つけました。
ここは私の空の訪問者です。
public class LEParserCfgVisitor implements LEParserVisitor
{
public Object visit(SimpleNode node, Object data) { return data; }
public Object visit(ASTProgram node, Object data) {
data = node.childrenAccept(this, data);
return data;
}
public Object visit(ASTBlock node, Object data) {
}
public Object visit(ASTStmt node, Object data) {
}
public Object visit(ASTAssignStmt node, Object data) {
}
public Object visit(ASTIOStmt node, Object data) {
}
public Object visit(ASTIfStmt node, Object data) {
}
public Object visit(ASTWhileStmt node, Object data) {
}
public Object visit(ASTExpr node, Object data) {
}
public Object visit(ASTAddExpr node, Object data) {
}
public Object visit(ASTFactExpr node, Object data) {
}
public Object visit(ASTMultExpr node, Object data) {
}
public Object visit(ASTPowerExpr node, Object data) {
}
public Object visit(ASTUnaryExpr node, Object data) {
}
public Object visit(ASTBasicExpr node, Object data) {
}
public Object visit(ASTFctExpr node, Object data) {
}
public Object visit(ASTRealValue node, Object data) {
}
public Object visit(ASTIntValue node, Object data) {
}
public Object visit(ASTIdentifier node, Object data) {
}
}
は誰もが私に手を与えることができます(^ - 、...、X +、)あなたはそれをしながら、基本的な操作、場合のように、基本的な関連リンク言語表現に取り組んで見ることができますか?
ありがとうございます!