From 91aef32a4286f6610beca718c5608b9535b1a2bb Mon Sep 17 00:00:00 2001 From: Luke Date: Tue, 26 Aug 2025 01:45:00 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E5=B8=B8=E9=87=8F?= =?UTF-8?q?=E7=AC=A6=E5=8F=B7=E7=B1=BB=E5=9E=8B=E5=B9=B6=E5=AE=8C=E5=96=84?= =?UTF-8?q?=E6=96=87=E6=A1=A3=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 SymbolKind 枚举中添加 CONSTANT 类型,用于表示只读、不可变的公开常量- 完善了各符号类型的文档注释,明确其用途和特点 - 优化了代码格式和段落结构,提高了代码可读性 --- .../compiler/semantic/symbol/SymbolKind.java | 23 ++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/jcnc/snow/compiler/semantic/symbol/SymbolKind.java b/src/main/java/org/jcnc/snow/compiler/semantic/symbol/SymbolKind.java index 5034d59..6eef2c2 100644 --- a/src/main/java/org/jcnc/snow/compiler/semantic/symbol/SymbolKind.java +++ b/src/main/java/org/jcnc/snow/compiler/semantic/symbol/SymbolKind.java @@ -3,31 +3,47 @@ package org.jcnc.snow.compiler.semantic.symbol; /** * {@code SymbolKind} 枚举用于标识符号表中不同类型的命名实体。 *

- * 在语义分析过程中,编译器需要根据符号的种类(Kind)采用不同的处理策略: + * 在语义分析过程中,编译器需要根据符号的种类(Kind)采用不同的处理策略: * 例如变量参与类型推导、函数用于调用匹配、模块用于跨作用域引用等。 + *

*

- * 当前支持的符号种类包括: + * 当前支持的符号种类包括: *

+ *

+ * 可根据需求扩展更多符号种类。 + *

*/ public enum SymbolKind { /** * 变量符号,表示在作用域中声明的可赋值实体。 *

- * 包括函数参数、局部变量、全局变量、常量等, + * 包括函数参数、局部变量、全局变量、成员变量等。 * 分析器会基于其类型参与表达式类型校验和赋值检查。 + *

*/ VARIABLE, + /** + * 常量符号,表示只读、不可变的公开常量。 + *

+ * 常量在声明后不可被修改,仅可读取。常用于定义全局、模块级的常量值, + * 在类型推断、常量折叠等语义分析过程中单独处理。 + *

+ */ + CONSTANT, + /** * 函数符号,表示可调用的过程实体。 *

* 包括普通函数、方法、构造器等。 * 用于函数签名注册、函数调用检查及返回值推导。 + *

*/ FUNCTION, @@ -35,6 +51,7 @@ public enum SymbolKind { * 模块符号,表示一个命名空间或模块单元。 *

* 在跨模块调用、导入语句校验、作用域隔离中发挥作用。 + *

*/ MODULE }