From 1ab4fb2e872c7c37db6c22a39f09afed69a6a413 Mon Sep 17 00:00:00 2001 From: Luke Date: Fri, 29 Aug 2025 17:56:44 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E5=AF=B9=E8=B1=A1?= =?UTF-8?q?=E8=8A=82=E7=82=B9=E7=9A=84=E5=88=9B=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../parser/ast/NewExpressionNode.java | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 src/main/java/org/jcnc/snow/compiler/parser/ast/NewExpressionNode.java diff --git a/src/main/java/org/jcnc/snow/compiler/parser/ast/NewExpressionNode.java b/src/main/java/org/jcnc/snow/compiler/parser/ast/NewExpressionNode.java new file mode 100644 index 0000000..345c485 --- /dev/null +++ b/src/main/java/org/jcnc/snow/compiler/parser/ast/NewExpressionNode.java @@ -0,0 +1,54 @@ +package org.jcnc.snow.compiler.parser.ast; + +import org.jcnc.snow.compiler.parser.ast.base.ExpressionNode; +import org.jcnc.snow.compiler.parser.ast.base.NodeContext; + +import java.util.List; + +/** + * {@code NewExpressionNode} + *

+ * 抽象语法树(AST)节点 —— 对象创建表达式。 + *

new TypeName(arg1, arg2, ...)
+ * + *

+ * 语义:在源码中通过 new 关键字实例化某个类型, + * 实参列表为构造函数参数。表达式类型通常为对应结构体类型。 + *

+ * + *

+ * 字段说明: + *

+ *

+ * + *

+ * 该类型为 Java record,天然不可变,构造参数即为字段名,自动生成 getter。 + *

+ * + * @param typeName 目标类型名 + * @param arguments 构造参数表达式列表 + * @param ctx 源代码位置信息 + */ +public record NewExpressionNode( + String typeName, + List arguments, + NodeContext ctx +) implements ExpressionNode { + + /** + * 获取本节点的源代码位置信息(行号、列号等)。 + *

+ * 实现 ExpressionNode 接口的抽象方法,便于统一错误处理与调试。 + *

+ * + * @return 当前节点的源代码上下文信息 + */ + @Override + public NodeContext context() { + return ctx; + } +}