diff --git a/src/main/java/org/jcnc/snow/compiler/parser/ast/StructNode.java b/src/main/java/org/jcnc/snow/compiler/parser/ast/StructNode.java new file mode 100644 index 0000000..8f2d27b --- /dev/null +++ b/src/main/java/org/jcnc/snow/compiler/parser/ast/StructNode.java @@ -0,0 +1,71 @@ +package org.jcnc.snow.compiler.parser.ast; + +import org.jcnc.snow.compiler.parser.ast.base.Node; +import org.jcnc.snow.compiler.parser.ast.base.NodeContext; + +import java.util.List; +import java.util.StringJoiner; + +/** + * {@code StructNode} + *
+ * AST 节点 —— 结构体定义(struct)。 + *
+ * + *+ * 描述一个结构体类型,包括字段、可选构造函数、方法列表等。 + * 结构体可声明零个或多个字段,可选构造函数(init), + * 以及零个或多个方法。 + *
+ * + *+ * 字段说明: + *
+ * 本类型为 Java record,不可变;构造参数即为字段名,自动生成 getter。 + *
+ * + * @param name 结构体名称 + * @param fields 字段声明列表 + * @param init 构造函数(可为 null) + * @param methods 方法列表 + * @param context 源码位置信息 + */ +public record StructNode( + String name, + List