diff --git a/src/main/java/org/jcnc/snow/compiler/semantic/core/ModuleInfo.java b/src/main/java/org/jcnc/snow/compiler/semantic/core/ModuleInfo.java index 0761d50..d71dd42 100644 --- a/src/main/java/org/jcnc/snow/compiler/semantic/core/ModuleInfo.java +++ b/src/main/java/org/jcnc/snow/compiler/semantic/core/ModuleInfo.java @@ -1,33 +1,55 @@ package org.jcnc.snow.compiler.semantic.core; +import org.jcnc.snow.compiler.semantic.symbol.SymbolTable; import org.jcnc.snow.compiler.semantic.type.FunctionType; -import java.util.*; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; /** * {@code ModuleInfo} 表示单个模块在语义分析阶段的元信息封装。 *
- * 用于在分析期间管理模块间依赖、函数签名查找等关键任务。 - * 每个模块对应一个唯一的 {@code ModuleInfo} 实例。 - *
- * 包含信息包括: + * 用于在分析期间管理模块间依赖、函数签名查找、全局符号表等关键任务。 + * 每个模块对应一个唯一的 {@code ModuleInfo} 实例,贯穿整个语义分析流程。 + * + *
包含信息: *
典型用途: + *
- * 返回集合为内部数据的直接引用,调用方可通过 {@code add/remove} 方法动态维护导入信息。 + * 返回集合为内部数据的直接引用,调用方可通过 {@code add}/{@code remove} 方法动态维护导入信息。 * * @return 可变集合,包含所有导入模块名 */ @@ -69,4 +91,26 @@ public class ModuleInfo { return functions; } + /** + * 获取模块的全局符号表(包含常量与全局变量)。 + *
+ * 该符号表由语义分析的 FunctionChecker 阶段构建完成并注入。 + * 提供跨模块类型检查、常量折叠等能力。 + * + * @return 当前模块的全局符号表 + */ + public SymbolTable getGlobals() { + return globals; + } + + /** + * 设置模块的全局符号表。 + *
+ * 仅应由 FunctionChecker 在语义分析全局扫描阶段调用。 + * + * @param globals 全局符号表实例 + */ + public void setGlobals(SymbolTable globals) { + this.globals = globals; + } }