feat: 增加常量声明支持并优化变量声明节点

- 在 DeclarationNode 类中添加 isConst 字段,用于表示是否为常量声明
-增加 isConst() 方法以判断声明是否为常量
- 优化类注释,明确变量和方法的作用
- 更新构造函数以支持常量声明
This commit is contained in:
Luke 2025-08-26 01:44:16 +08:00
parent 310e909359
commit 18c9cbad7b

View File

@ -10,21 +10,26 @@ import java.util.Optional;
* {@code DeclarationNode} 表示抽象语法树AST中的变量声明语句节点 * {@code DeclarationNode} 表示抽象语法树AST中的变量声明语句节点
* <p> * <p>
* 变量声明用于在语法层引入新的标识符及其类型信息 * 变量声明用于在语法层引入新的标识符及其类型信息
* 通常格式为 {@code type name = initializer;}其中初始化表达式可省略
* </p> * </p>
*/ */
public class DeclarationNode implements StatementNode { public class DeclarationNode implements StatementNode {
/** 声明的变量名称 */ /** 声明的变量名称 */
private final String name; private final String name;
/** 变量的数据类型(如 "int", "string" */ /** 变量的数据类型(如 "int", "string" */
private final String type; private final String type;
/** 可选的初始化表达式 */ /** 是否为常量声明true 表示 const 变量false 表示普通变量)。 */
private final boolean isConst;
/**
* 可选的初始化表达式
* 如果未指定初始化表达式则为 Optional.empty()
*/
private final Optional<ExpressionNode> initializer; private final Optional<ExpressionNode> initializer;
/** 节点上下文信息(包含行号、列号等) */ /** 节点上下文信息(如源码中的行号、列号等)。 */
private final NodeContext context; private final NodeContext context;
/** /**
@ -32,12 +37,14 @@ public class DeclarationNode implements StatementNode {
* *
* @param name 变量名称 * @param name 变量名称
* @param type 变量类型字符串 "int""string" * @param type 变量类型字符串 "int""string"
* @param isConst 是否为常量声明
* @param initializer 可选初始化表达式若为 {@code null} 表示未初始化 * @param initializer 可选初始化表达式若为 {@code null} 表示未初始化
* @param context 节点上下文信息包含行号列号等 * @param context 节点上下文信息包含行号列号等
*/ */
public DeclarationNode(String name, String type, ExpressionNode initializer, NodeContext context) { public DeclarationNode(String name, String type, boolean isConst, ExpressionNode initializer, NodeContext context) {
this.name = name; this.name = name;
this.type = type; this.type = type;
this.isConst = isConst;
this.initializer = Optional.ofNullable(initializer); this.initializer = Optional.ofNullable(initializer);
this.context = context; this.context = context;
} }
@ -60,6 +67,15 @@ public class DeclarationNode implements StatementNode {
return type; return type;
} }
/**
* 判断该声明是否为常量const
*
* @return 如果为常量声明则返回 true否则返回 false
*/
public boolean isConst() {
return isConst;
}
/** /**
* 获取可选的初始化表达式 * 获取可选的初始化表达式
* *