From 8ff103e105c99a21554d26df4db1975e6a574d61 Mon Sep 17 00:00:00 2001
From: Luke
Date: Sun, 31 Aug 2025 18:37:42 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E4=B8=BA=E7=BB=93=E6=9E=84=E4=BD=93?=
=?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=BB=A7=E6=89=BF=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 在 StructNode 中添加 parent 参数,用于表示父类名称
- 更新 toString 方法以包含 parent 信息
- 优化类注释,移除冗余信息并增加对继承特性的说明
---
.../snow/compiler/parser/ast/StructNode.java | 19 +++----------------
1 file changed, 3 insertions(+), 16 deletions(-)
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
index 8f2d27b..488933a 100644
--- a/src/main/java/org/jcnc/snow/compiler/parser/ast/StructNode.java
+++ b/src/main/java/org/jcnc/snow/compiler/parser/ast/StructNode.java
@@ -16,24 +16,9 @@ import java.util.StringJoiner;
* 描述一个结构体类型,包括字段、可选构造函数、方法列表等。
* 结构体可声明零个或多个字段,可选构造函数(init),
* 以及零个或多个方法。
- *
- *
- *
- * 字段说明:
- *
- * - {@code name} —— 结构体名称,类型定义的唯一标识。
- * - {@code fields} —— 字段声明列表,每个字段为 {@link DeclarationNode}。
- * - {@code init} —— 构造函数(FunctionNode),可为 null。
- * - {@code methods} —— 方法列表,每个为 {@link FunctionNode},可空列表。
- * - {@code context} —— 源代码位置信息(行号、文件名等)。
- *
- *
- *
- *
- * 本类型为 Java record,不可变;构造参数即为字段名,自动生成 getter。
- *
*
* @param name 结构体名称
+ * @param parent 父类名称(无继承时为 {@code null})
* @param fields 字段声明列表
* @param init 构造函数(可为 null)
* @param methods 方法列表
@@ -41,6 +26,7 @@ import java.util.StringJoiner;
*/
public record StructNode(
String name,
+ String parent,
List fields,
FunctionNode init,
List methods,
@@ -64,6 +50,7 @@ public record StructNode(
// 3) 合成最终输出
return "Struct(name=" + name +
+ ", parent=" + (parent == null ? "null" : parent) +
", fields=[" + fj + "], init=" +
(init == null ? "null" : init.name()) +
", methods=[" + mj + "])";