feat: 新增对象节点的创建
This commit is contained in:
parent
2abe056056
commit
1ab4fb2e87
@ -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}
|
||||
* <p>
|
||||
* 抽象语法树(AST)节点 —— 对象创建表达式。
|
||||
* <pre>new TypeName(arg1, arg2, ...)</pre>
|
||||
*
|
||||
* <p>
|
||||
* 语义:在源码中通过 <b>new</b> 关键字实例化某个类型,
|
||||
* 实参列表为构造函数参数。表达式类型通常为对应结构体类型。
|
||||
* </p>
|
||||
*
|
||||
* <p>
|
||||
* 字段说明:
|
||||
* <ul>
|
||||
* <li>{@code typeName} —— 创建对象的目标类型名(如 "Person"、"MyStruct")。</li>
|
||||
* <li>{@code arguments} —— 构造函数参数表达式列表(可为空)。</li>
|
||||
* <li>{@code ctx} —— 源码位置上下文(行列信息,便于报错和调试定位)。</li>
|
||||
* </ul>
|
||||
* </p>
|
||||
*
|
||||
* <p>
|
||||
* 该类型为 Java record,天然不可变,构造参数即为字段名,自动生成 getter。
|
||||
* </p>
|
||||
*
|
||||
* @param typeName 目标类型名
|
||||
* @param arguments 构造参数表达式列表
|
||||
* @param ctx 源代码位置信息
|
||||
*/
|
||||
public record NewExpressionNode(
|
||||
String typeName,
|
||||
List<ExpressionNode> arguments,
|
||||
NodeContext ctx
|
||||
) implements ExpressionNode {
|
||||
|
||||
/**
|
||||
* 获取本节点的源代码位置信息(行号、列号等)。
|
||||
* <p>
|
||||
* 实现 ExpressionNode 接口的抽象方法,便于统一错误处理与调试。
|
||||
* </p>
|
||||
*
|
||||
* @return 当前节点的源代码上下文信息
|
||||
*/
|
||||
@Override
|
||||
public NodeContext context() {
|
||||
return ctx;
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user