feat: 添加常量符号类型并完善文档注释

- 在 SymbolKind 枚举中添加 CONSTANT 类型,用于表示只读、不可变的公开常量- 完善了各符号类型的文档注释,明确其用途和特点
- 优化了代码格式和段落结构,提高了代码可读性
This commit is contained in:
Luke 2025-08-26 01:45:00 +08:00
parent 18c9cbad7b
commit 91aef32a42

View File

@ -3,31 +3,47 @@ package org.jcnc.snow.compiler.semantic.symbol;
/** /**
* {@code SymbolKind} 枚举用于标识符号表中不同类型的命名实体 * {@code SymbolKind} 枚举用于标识符号表中不同类型的命名实体
* <p> * <p>
* 在语义分析过程中编译器需要根据符号的种类Kind采用不同的处理策略: * 在语义分析过程中编译器需要根据符号的种类Kind采用不同的处理策略
* 例如变量参与类型推导函数用于调用匹配模块用于跨作用域引用等 * 例如变量参与类型推导函数用于调用匹配模块用于跨作用域引用等
* </p>
* <p> * <p>
* 当前支持的符号种类包括: * 当前支持的符号种类包括
* <ul> * <ul>
* <li>{@link #VARIABLE}: 变量符号局部变量全局变量成员变量等</li> * <li>{@link #VARIABLE}: 变量符号局部变量全局变量成员变量等</li>
* <li>{@link #CONSTANT}: 常量符号只读不可变的公开常量</li>
* <li>{@link #FUNCTION}: 函数符号自由函数方法构造函数等</li> * <li>{@link #FUNCTION}: 函数符号自由函数方法构造函数等</li>
* <li>{@link #MODULE}: 模块符号代表命名空间库或逻辑模块</li> * <li>{@link #MODULE}: 模块符号代表命名空间库或逻辑模块</li>
* </ul> * </ul>
* <p>
* 可根据需求扩展更多符号种类
* </p>
*/ */
public enum SymbolKind { public enum SymbolKind {
/** /**
* 变量符号表示在作用域中声明的可赋值实体 * 变量符号表示在作用域中声明的可赋值实体
* <p> * <p>
* 包括函数参数局部变量全局变量常量等 * 包括函数参数局部变量全局变量成员变量等
* 分析器会基于其类型参与表达式类型校验和赋值检查 * 分析器会基于其类型参与表达式类型校验和赋值检查
* </p>
*/ */
VARIABLE, VARIABLE,
/**
* 常量符号表示只读不可变的公开常量
* <p>
* 常量在声明后不可被修改仅可读取常用于定义全局模块级的常量值
* 在类型推断常量折叠等语义分析过程中单独处理
* </p>
*/
CONSTANT,
/** /**
* 函数符号表示可调用的过程实体 * 函数符号表示可调用的过程实体
* <p> * <p>
* 包括普通函数方法构造器等 * 包括普通函数方法构造器等
* 用于函数签名注册函数调用检查及返回值推导 * 用于函数签名注册函数调用检查及返回值推导
* </p>
*/ */
FUNCTION, FUNCTION,
@ -35,6 +51,7 @@ public enum SymbolKind {
* 模块符号表示一个命名空间或模块单元 * 模块符号表示一个命名空间或模块单元
* <p> * <p>
* 在跨模块调用导入语句校验作用域隔离中发挥作用 * 在跨模块调用导入语句校验作用域隔离中发挥作用
* </p>
*/ */
MODULE MODULE
} }