sách gpt4 ai đã đi

java - 给定另一个 AST 树,在 Java 中创建一个 AST 树

In lại 作者:行者123 更新时间:2023-12-01 16:03:34 28 4
mua khóa gpt4 Nike

目前,我正在努力用 Java 表示我用 SML 编写的 AST 树,这样我就可以随时用 Java 遍历它。

我想知道是否应该在 Java 中创建一个 Node 类,其中包含我想要表示的数据,以及一个数组列表(List)来表示该特定节点的子节点?然后,我可以拥有一个仅包含根节点的 ASTTree 类。

我不知道是否还有更奇特的事情需要考虑。

如有任何问题/意见,我们将不胜感激!

-保罗

1 Câu trả lời

这取决于您想对该树执行什么操作。

例如,我通常通过为我需要的每种操作创建一个特定的节点来实现它

ASTBinaryOperation implements ASTNode
{
ASTNode left, right;
Operator op;

Result visit()
{
Result lr = left.visit();
Result rr = right.visit();

return op.apply(lr, rr);
}
}

对于经典的二元运算符节点,而我会使用 MảngDanh sách 作为声明的示例:

ASTDecl implements ASTNode
{
Tên chuỗi;
Type type;
Value value;
}

ASTDecls implements ASTNode
{
ArrayList declarations;
}

由解析器构建。所以根节点会是这样的:

ASTRoot {
ASTDecls declarations;
ASTFunctions functions;
}

ASTFunctions {
ASTDecls args;
ASTBody body;
..
}

ASTBody {
ArrayList statements;
...
}

等等。

当然,这取决于您想要做什么,我使用这种方法来访问 AST,通过递归访问树来生成中间代码。但是将任何内容存储在 MảngDanh sách 中将使您失去单个 ASTNode 的特定行为和含义。

关于java - 给定另一个 AST 树,在 Java 中创建一个 AST 树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3186097/

28 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com