feat: 支持结构体继承

- 添加对结构体继承的支持,允许使用 "extends" 关键字定义父结构体
- 修改 StructNode 构造函数以支持父结构体名称参数
- 优化结构体解析逻辑,处理可选的继承语句
This commit is contained in:
Luke 2025-09-01 09:23:21 +08:00
parent 426452f63f
commit d258297609

View File

@ -53,6 +53,14 @@ public class StructParser implements TopLevelParser {
ts.expect("struct");
ts.expect(":");
String structName = ts.expectType(TokenType.IDENTIFIER).getLexeme();
// 解析可选 extends
String parentName = null;
if ("extends".equals(ts.peek().getLexeme())) {
ts.expect("extends");
parentName = ts.expectType(TokenType.IDENTIFIER).getLexeme();
}
ts.expectType(TokenType.NEWLINE);
/* -------- 初始化容器 -------- */
@ -112,7 +120,7 @@ public class StructParser implements TopLevelParser {
ts.expect("end");
ts.expect("struct");
// 返回完整结构体 AST 节点
return new StructNode(structName, fields, init, methods,
return new StructNode(structName, parentName, fields, init, methods,
new NodeContext(line, col, file));
}