diff --git a/src/main/java/org/jcnc/snow/compiler/Main.java b/src/main/java/org/jcnc/snow/compiler/Main.java
index 72acc4f..d72325e 100644
--- a/src/main/java/org/jcnc/snow/compiler/Main.java
+++ b/src/main/java/org/jcnc/snow/compiler/Main.java
@@ -2,12 +2,12 @@ package org.jcnc.snow.compiler;
import org.jcnc.snow.compiler.lexer.LexerEngine;
import org.jcnc.snow.compiler.lexer.token.Token;
-import org.jcnc.snow.compiler.parser.ParserEngine;
+import org.jcnc.snow.compiler.parser.core.ParserEngine;
import org.jcnc.snow.compiler.parser.ast.ModuleNode;
import org.jcnc.snow.compiler.parser.context.ParserContext;
import org.jcnc.snow.compiler.parser.ast.base.Node;
-import org.jcnc.snow.compiler.semantic.SemanticAnalyzer;
-import org.jcnc.snow.compiler.semantic.expression.SemanticError;
+import org.jcnc.snow.compiler.semantic.core.SemanticAnalyzer;
+import org.jcnc.snow.compiler.semantic.error.SemanticError;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
diff --git a/src/main/java/org/jcnc/snow/compiler/parser/ParserEngine.java b/src/main/java/org/jcnc/snow/compiler/parser/core/ParserEngine.java
similarity index 98%
rename from src/main/java/org/jcnc/snow/compiler/parser/ParserEngine.java
rename to src/main/java/org/jcnc/snow/compiler/parser/core/ParserEngine.java
index 70fa8ce..976492b 100644
--- a/src/main/java/org/jcnc/snow/compiler/parser/ParserEngine.java
+++ b/src/main/java/org/jcnc/snow/compiler/parser/core/ParserEngine.java
@@ -1,4 +1,4 @@
-package org.jcnc.snow.compiler.parser;
+package org.jcnc.snow.compiler.parser.core;
import org.jcnc.snow.compiler.lexer.token.TokenType;
import org.jcnc.snow.compiler.parser.base.TopLevelParser;
diff --git a/src/main/java/org/jcnc/snow/compiler/parser/factory/TopLevelParserFactory.java b/src/main/java/org/jcnc/snow/compiler/parser/factory/TopLevelParserFactory.java
index 69de3c7..a5591ac 100644
--- a/src/main/java/org/jcnc/snow/compiler/parser/factory/TopLevelParserFactory.java
+++ b/src/main/java/org/jcnc/snow/compiler/parser/factory/TopLevelParserFactory.java
@@ -1,6 +1,7 @@
package org.jcnc.snow.compiler.parser.factory;
import org.jcnc.snow.compiler.parser.base.TopLevelParser;
+import org.jcnc.snow.compiler.parser.core.ParserEngine;
import org.jcnc.snow.compiler.parser.module.ModuleParser;
import java.util.Map;
@@ -13,7 +14,7 @@ import java.util.HashMap;
*
该类采用静态注册机制,在类加载时将所有支持的关键字及其解析器实例注册到内部映射表中。
* 外部通过 {@link #get(String)} 方法获取对应的解析器。
*
- * 用于 {@link org.jcnc.snow.compiler.parser.ParserEngine} 中,根据关键字动态解析不同语法块。
+ * 用于 {@link ParserEngine} 中,根据关键字动态解析不同语法块。
*/
public class TopLevelParserFactory {
// 存储关键字 -> 解析器 实例的映射关系
diff --git a/src/main/java/org/jcnc/snow/compiler/semantic/analyzers/ExpressionAnalyzer.java b/src/main/java/org/jcnc/snow/compiler/semantic/analyzers/ExpressionAnalyzer.java
index 231da5a..9b0c7c6 100644
--- a/src/main/java/org/jcnc/snow/compiler/semantic/analyzers/ExpressionAnalyzer.java
+++ b/src/main/java/org/jcnc/snow/compiler/semantic/analyzers/ExpressionAnalyzer.java
@@ -2,10 +2,10 @@ package org.jcnc.snow.compiler.semantic.analyzers;
import org.jcnc.snow.compiler.parser.ast.FunctionNode;
import org.jcnc.snow.compiler.parser.ast.base.ExpressionNode;
-import org.jcnc.snow.compiler.semantic.Context;
-import org.jcnc.snow.compiler.semantic.ModuleInfo;
-import org.jcnc.snow.compiler.semantic.SymbolTable;
-import org.jcnc.snow.compiler.semantic.Type;
+import org.jcnc.snow.compiler.semantic.core.Context;
+import org.jcnc.snow.compiler.semantic.core.ModuleInfo;
+import org.jcnc.snow.compiler.semantic.symbol.SymbolTable;
+import org.jcnc.snow.compiler.semantic.type.Type;
/**
* 表达式分析器接口。
diff --git a/src/main/java/org/jcnc/snow/compiler/semantic/analyzers/StatementAnalyzer.java b/src/main/java/org/jcnc/snow/compiler/semantic/analyzers/StatementAnalyzer.java
index 9ae9af7..624d568 100644
--- a/src/main/java/org/jcnc/snow/compiler/semantic/analyzers/StatementAnalyzer.java
+++ b/src/main/java/org/jcnc/snow/compiler/semantic/analyzers/StatementAnalyzer.java
@@ -2,9 +2,9 @@ package org.jcnc.snow.compiler.semantic.analyzers;
import org.jcnc.snow.compiler.parser.ast.FunctionNode;
import org.jcnc.snow.compiler.parser.ast.base.StatementNode;
-import org.jcnc.snow.compiler.semantic.Context;
-import org.jcnc.snow.compiler.semantic.ModuleInfo;
-import org.jcnc.snow.compiler.semantic.SymbolTable;
+import org.jcnc.snow.compiler.semantic.core.Context;
+import org.jcnc.snow.compiler.semantic.core.ModuleInfo;
+import org.jcnc.snow.compiler.semantic.symbol.SymbolTable;
/**
* 语句分析器接口。
diff --git a/src/main/java/org/jcnc/snow/compiler/semantic/expression/BinaryExpressionAnalyzer.java b/src/main/java/org/jcnc/snow/compiler/semantic/analyzers/expression/BinaryExpressionAnalyzer.java
similarity index 85%
rename from src/main/java/org/jcnc/snow/compiler/semantic/expression/BinaryExpressionAnalyzer.java
rename to src/main/java/org/jcnc/snow/compiler/semantic/analyzers/expression/BinaryExpressionAnalyzer.java
index de3725b..f8f3bad 100644
--- a/src/main/java/org/jcnc/snow/compiler/semantic/expression/BinaryExpressionAnalyzer.java
+++ b/src/main/java/org/jcnc/snow/compiler/semantic/analyzers/expression/BinaryExpressionAnalyzer.java
@@ -1,9 +1,14 @@
-package org.jcnc.snow.compiler.semantic.expression;
+package org.jcnc.snow.compiler.semantic.analyzers.expression;
import org.jcnc.snow.compiler.parser.ast.BinaryExpressionNode;
import org.jcnc.snow.compiler.parser.ast.FunctionNode;
-import org.jcnc.snow.compiler.semantic.*;
import org.jcnc.snow.compiler.semantic.analyzers.ExpressionAnalyzer;
+import org.jcnc.snow.compiler.semantic.core.Context;
+import org.jcnc.snow.compiler.semantic.core.ModuleInfo;
+import org.jcnc.snow.compiler.semantic.error.SemanticError;
+import org.jcnc.snow.compiler.semantic.symbol.SymbolTable;
+import org.jcnc.snow.compiler.semantic.type.BuiltinType;
+import org.jcnc.snow.compiler.semantic.type.Type;
public class BinaryExpressionAnalyzer implements ExpressionAnalyzer {
@Override
diff --git a/src/main/java/org/jcnc/snow/compiler/semantic/expression/CallExpressionAnalyzer.java b/src/main/java/org/jcnc/snow/compiler/semantic/analyzers/expression/CallExpressionAnalyzer.java
similarity index 89%
rename from src/main/java/org/jcnc/snow/compiler/semantic/expression/CallExpressionAnalyzer.java
rename to src/main/java/org/jcnc/snow/compiler/semantic/analyzers/expression/CallExpressionAnalyzer.java
index 63c1f1a..0cefbf9 100644
--- a/src/main/java/org/jcnc/snow/compiler/semantic/expression/CallExpressionAnalyzer.java
+++ b/src/main/java/org/jcnc/snow/compiler/semantic/analyzers/expression/CallExpressionAnalyzer.java
@@ -1,12 +1,18 @@
-package org.jcnc.snow.compiler.semantic.expression;
+package org.jcnc.snow.compiler.semantic.analyzers.expression;
import org.jcnc.snow.compiler.parser.ast.CallExpressionNode;
import org.jcnc.snow.compiler.parser.ast.FunctionNode;
import org.jcnc.snow.compiler.parser.ast.IdentifierNode;
import org.jcnc.snow.compiler.parser.ast.MemberExpressionNode;
import org.jcnc.snow.compiler.parser.ast.base.ExpressionNode;
-import org.jcnc.snow.compiler.semantic.*;
import org.jcnc.snow.compiler.semantic.analyzers.ExpressionAnalyzer;
+import org.jcnc.snow.compiler.semantic.core.Context;
+import org.jcnc.snow.compiler.semantic.core.ModuleInfo;
+import org.jcnc.snow.compiler.semantic.error.SemanticError;
+import org.jcnc.snow.compiler.semantic.symbol.SymbolTable;
+import org.jcnc.snow.compiler.semantic.type.BuiltinType;
+import org.jcnc.snow.compiler.semantic.type.FunctionType;
+import org.jcnc.snow.compiler.semantic.type.Type;
import java.util.ArrayList;
import java.util.List;
diff --git a/src/main/java/org/jcnc/snow/compiler/semantic/expression/IdentifierAnalyzer.java b/src/main/java/org/jcnc/snow/compiler/semantic/analyzers/expression/IdentifierAnalyzer.java
similarity index 60%
rename from src/main/java/org/jcnc/snow/compiler/semantic/expression/IdentifierAnalyzer.java
rename to src/main/java/org/jcnc/snow/compiler/semantic/analyzers/expression/IdentifierAnalyzer.java
index 82169d3..e0c7f47 100644
--- a/src/main/java/org/jcnc/snow/compiler/semantic/expression/IdentifierAnalyzer.java
+++ b/src/main/java/org/jcnc/snow/compiler/semantic/analyzers/expression/IdentifierAnalyzer.java
@@ -1,9 +1,15 @@
-package org.jcnc.snow.compiler.semantic.expression;
+package org.jcnc.snow.compiler.semantic.analyzers.expression;
import org.jcnc.snow.compiler.parser.ast.FunctionNode;
import org.jcnc.snow.compiler.parser.ast.IdentifierNode;
-import org.jcnc.snow.compiler.semantic.*;
import org.jcnc.snow.compiler.semantic.analyzers.ExpressionAnalyzer;
+import org.jcnc.snow.compiler.semantic.core.Context;
+import org.jcnc.snow.compiler.semantic.core.ModuleInfo;
+import org.jcnc.snow.compiler.semantic.error.SemanticError;
+import org.jcnc.snow.compiler.semantic.symbol.Symbol;
+import org.jcnc.snow.compiler.semantic.symbol.SymbolTable;
+import org.jcnc.snow.compiler.semantic.type.BuiltinType;
+import org.jcnc.snow.compiler.semantic.type.Type;
public class IdentifierAnalyzer implements ExpressionAnalyzer {
@Override
diff --git a/src/main/java/org/jcnc/snow/compiler/semantic/expression/NumberLiteralAnalyzer.java b/src/main/java/org/jcnc/snow/compiler/semantic/analyzers/expression/NumberLiteralAnalyzer.java
similarity index 56%
rename from src/main/java/org/jcnc/snow/compiler/semantic/expression/NumberLiteralAnalyzer.java
rename to src/main/java/org/jcnc/snow/compiler/semantic/analyzers/expression/NumberLiteralAnalyzer.java
index 787ea77..57e4ffd 100644
--- a/src/main/java/org/jcnc/snow/compiler/semantic/expression/NumberLiteralAnalyzer.java
+++ b/src/main/java/org/jcnc/snow/compiler/semantic/analyzers/expression/NumberLiteralAnalyzer.java
@@ -1,9 +1,13 @@
-package org.jcnc.snow.compiler.semantic.expression;
+package org.jcnc.snow.compiler.semantic.analyzers.expression;
import org.jcnc.snow.compiler.parser.ast.FunctionNode;
import org.jcnc.snow.compiler.parser.ast.NumberLiteralNode;
-import org.jcnc.snow.compiler.semantic.*;
import org.jcnc.snow.compiler.semantic.analyzers.ExpressionAnalyzer;
+import org.jcnc.snow.compiler.semantic.core.Context;
+import org.jcnc.snow.compiler.semantic.core.ModuleInfo;
+import org.jcnc.snow.compiler.semantic.symbol.SymbolTable;
+import org.jcnc.snow.compiler.semantic.type.BuiltinType;
+import org.jcnc.snow.compiler.semantic.type.Type;
public class NumberLiteralAnalyzer implements ExpressionAnalyzer {
@Override
diff --git a/src/main/java/org/jcnc/snow/compiler/semantic/expression/StringLiteralAnalyzer.java b/src/main/java/org/jcnc/snow/compiler/semantic/analyzers/expression/StringLiteralAnalyzer.java
similarity index 56%
rename from src/main/java/org/jcnc/snow/compiler/semantic/expression/StringLiteralAnalyzer.java
rename to src/main/java/org/jcnc/snow/compiler/semantic/analyzers/expression/StringLiteralAnalyzer.java
index b0c4de3..13cefeb 100644
--- a/src/main/java/org/jcnc/snow/compiler/semantic/expression/StringLiteralAnalyzer.java
+++ b/src/main/java/org/jcnc/snow/compiler/semantic/analyzers/expression/StringLiteralAnalyzer.java
@@ -1,9 +1,13 @@
-package org.jcnc.snow.compiler.semantic.expression;
+package org.jcnc.snow.compiler.semantic.analyzers.expression;
import org.jcnc.snow.compiler.parser.ast.FunctionNode;
import org.jcnc.snow.compiler.parser.ast.StringLiteralNode;
-import org.jcnc.snow.compiler.semantic.*;
import org.jcnc.snow.compiler.semantic.analyzers.ExpressionAnalyzer;
+import org.jcnc.snow.compiler.semantic.core.Context;
+import org.jcnc.snow.compiler.semantic.core.ModuleInfo;
+import org.jcnc.snow.compiler.semantic.symbol.SymbolTable;
+import org.jcnc.snow.compiler.semantic.type.BuiltinType;
+import org.jcnc.snow.compiler.semantic.type.Type;
public class StringLiteralAnalyzer implements ExpressionAnalyzer {
@Override
diff --git a/src/main/java/org/jcnc/snow/compiler/semantic/expression/UnsupportedExpressionAnalyzer.java b/src/main/java/org/jcnc/snow/compiler/semantic/analyzers/expression/UnsupportedExpressionAnalyzer.java
similarity index 66%
rename from src/main/java/org/jcnc/snow/compiler/semantic/expression/UnsupportedExpressionAnalyzer.java
rename to src/main/java/org/jcnc/snow/compiler/semantic/analyzers/expression/UnsupportedExpressionAnalyzer.java
index 4f5ab9f..906aedb 100644
--- a/src/main/java/org/jcnc/snow/compiler/semantic/expression/UnsupportedExpressionAnalyzer.java
+++ b/src/main/java/org/jcnc/snow/compiler/semantic/analyzers/expression/UnsupportedExpressionAnalyzer.java
@@ -1,9 +1,14 @@
-package org.jcnc.snow.compiler.semantic.expression;
+package org.jcnc.snow.compiler.semantic.analyzers.expression;
import org.jcnc.snow.compiler.parser.ast.FunctionNode;
import org.jcnc.snow.compiler.parser.ast.base.ExpressionNode;
-import org.jcnc.snow.compiler.semantic.*;
import org.jcnc.snow.compiler.semantic.analyzers.ExpressionAnalyzer;
+import org.jcnc.snow.compiler.semantic.core.Context;
+import org.jcnc.snow.compiler.semantic.core.ModuleInfo;
+import org.jcnc.snow.compiler.semantic.error.SemanticError;
+import org.jcnc.snow.compiler.semantic.symbol.SymbolTable;
+import org.jcnc.snow.compiler.semantic.type.BuiltinType;
+import org.jcnc.snow.compiler.semantic.type.Type;
// 之前:implements ExpressionAnalyzer
public class UnsupportedExpressionAnalyzer
diff --git a/src/main/java/org/jcnc/snow/compiler/semantic/statement/AssignmentAnalyzer.java b/src/main/java/org/jcnc/snow/compiler/semantic/analyzers/statement/AssignmentAnalyzer.java
similarity index 72%
rename from src/main/java/org/jcnc/snow/compiler/semantic/statement/AssignmentAnalyzer.java
rename to src/main/java/org/jcnc/snow/compiler/semantic/analyzers/statement/AssignmentAnalyzer.java
index 579f804..2c9f30d 100644
--- a/src/main/java/org/jcnc/snow/compiler/semantic/statement/AssignmentAnalyzer.java
+++ b/src/main/java/org/jcnc/snow/compiler/semantic/analyzers/statement/AssignmentAnalyzer.java
@@ -1,10 +1,15 @@
-package org.jcnc.snow.compiler.semantic.statement;
+package org.jcnc.snow.compiler.semantic.analyzers.statement;
import org.jcnc.snow.compiler.parser.ast.AssignmentNode;
import org.jcnc.snow.compiler.parser.ast.FunctionNode;
-import org.jcnc.snow.compiler.semantic.*;
import org.jcnc.snow.compiler.semantic.analyzers.StatementAnalyzer;
-import org.jcnc.snow.compiler.semantic.expression.SemanticError;
+import org.jcnc.snow.compiler.semantic.core.Context;
+import org.jcnc.snow.compiler.semantic.core.ModuleInfo;
+import org.jcnc.snow.compiler.semantic.error.SemanticError;
+import org.jcnc.snow.compiler.semantic.symbol.Symbol;
+import org.jcnc.snow.compiler.semantic.symbol.SymbolKind;
+import org.jcnc.snow.compiler.semantic.symbol.SymbolTable;
+import org.jcnc.snow.compiler.semantic.type.Type;
public class AssignmentAnalyzer implements StatementAnalyzer {
@Override
diff --git a/src/main/java/org/jcnc/snow/compiler/semantic/statement/DeclarationAnalyzer.java b/src/main/java/org/jcnc/snow/compiler/semantic/analyzers/statement/DeclarationAnalyzer.java
similarity index 76%
rename from src/main/java/org/jcnc/snow/compiler/semantic/statement/DeclarationAnalyzer.java
rename to src/main/java/org/jcnc/snow/compiler/semantic/analyzers/statement/DeclarationAnalyzer.java
index d68b328..91c25a0 100644
--- a/src/main/java/org/jcnc/snow/compiler/semantic/statement/DeclarationAnalyzer.java
+++ b/src/main/java/org/jcnc/snow/compiler/semantic/analyzers/statement/DeclarationAnalyzer.java
@@ -1,10 +1,16 @@
-package org.jcnc.snow.compiler.semantic.statement;
+package org.jcnc.snow.compiler.semantic.analyzers.statement;
import org.jcnc.snow.compiler.parser.ast.DeclarationNode;
import org.jcnc.snow.compiler.parser.ast.FunctionNode;
-import org.jcnc.snow.compiler.semantic.*;
import org.jcnc.snow.compiler.semantic.analyzers.StatementAnalyzer;
-import org.jcnc.snow.compiler.semantic.expression.SemanticError;
+import org.jcnc.snow.compiler.semantic.core.Context;
+import org.jcnc.snow.compiler.semantic.core.ModuleInfo;
+import org.jcnc.snow.compiler.semantic.error.SemanticError;
+import org.jcnc.snow.compiler.semantic.symbol.Symbol;
+import org.jcnc.snow.compiler.semantic.symbol.SymbolKind;
+import org.jcnc.snow.compiler.semantic.symbol.SymbolTable;
+import org.jcnc.snow.compiler.semantic.type.BuiltinType;
+import org.jcnc.snow.compiler.semantic.type.Type;
public class DeclarationAnalyzer implements StatementAnalyzer {
@Override
diff --git a/src/main/java/org/jcnc/snow/compiler/semantic/statement/IfAnalyzer.java b/src/main/java/org/jcnc/snow/compiler/semantic/analyzers/statement/IfAnalyzer.java
similarity index 75%
rename from src/main/java/org/jcnc/snow/compiler/semantic/statement/IfAnalyzer.java
rename to src/main/java/org/jcnc/snow/compiler/semantic/analyzers/statement/IfAnalyzer.java
index 32b1ce6..b7888fa 100644
--- a/src/main/java/org/jcnc/snow/compiler/semantic/statement/IfAnalyzer.java
+++ b/src/main/java/org/jcnc/snow/compiler/semantic/analyzers/statement/IfAnalyzer.java
@@ -1,10 +1,14 @@
-package org.jcnc.snow.compiler.semantic.statement;
+package org.jcnc.snow.compiler.semantic.analyzers.statement;
import org.jcnc.snow.compiler.parser.ast.FunctionNode;
import org.jcnc.snow.compiler.parser.ast.IfNode;
-import org.jcnc.snow.compiler.semantic.*;
import org.jcnc.snow.compiler.semantic.analyzers.StatementAnalyzer;
-import org.jcnc.snow.compiler.semantic.expression.SemanticError;
+import org.jcnc.snow.compiler.semantic.core.Context;
+import org.jcnc.snow.compiler.semantic.core.ModuleInfo;
+import org.jcnc.snow.compiler.semantic.error.SemanticError;
+import org.jcnc.snow.compiler.semantic.symbol.SymbolTable;
+import org.jcnc.snow.compiler.semantic.type.BuiltinType;
+import org.jcnc.snow.compiler.semantic.type.Type;
public class IfAnalyzer implements StatementAnalyzer {
@Override
diff --git a/src/main/java/org/jcnc/snow/compiler/semantic/statement/LoopAnalyzer.java b/src/main/java/org/jcnc/snow/compiler/semantic/analyzers/statement/LoopAnalyzer.java
similarity index 77%
rename from src/main/java/org/jcnc/snow/compiler/semantic/statement/LoopAnalyzer.java
rename to src/main/java/org/jcnc/snow/compiler/semantic/analyzers/statement/LoopAnalyzer.java
index 4567fb2..ea2d39e 100644
--- a/src/main/java/org/jcnc/snow/compiler/semantic/statement/LoopAnalyzer.java
+++ b/src/main/java/org/jcnc/snow/compiler/semantic/analyzers/statement/LoopAnalyzer.java
@@ -1,10 +1,14 @@
-package org.jcnc.snow.compiler.semantic.statement;
+package org.jcnc.snow.compiler.semantic.analyzers.statement;
import org.jcnc.snow.compiler.parser.ast.FunctionNode;
import org.jcnc.snow.compiler.parser.ast.LoopNode;
-import org.jcnc.snow.compiler.semantic.*;
import org.jcnc.snow.compiler.semantic.analyzers.StatementAnalyzer;
-import org.jcnc.snow.compiler.semantic.expression.SemanticError;
+import org.jcnc.snow.compiler.semantic.core.Context;
+import org.jcnc.snow.compiler.semantic.core.ModuleInfo;
+import org.jcnc.snow.compiler.semantic.error.SemanticError;
+import org.jcnc.snow.compiler.semantic.symbol.SymbolTable;
+import org.jcnc.snow.compiler.semantic.type.BuiltinType;
+import org.jcnc.snow.compiler.semantic.type.Type;
public class LoopAnalyzer implements StatementAnalyzer {
@Override
diff --git a/src/main/java/org/jcnc/snow/compiler/semantic/statement/ReturnAnalyzer.java b/src/main/java/org/jcnc/snow/compiler/semantic/analyzers/statement/ReturnAnalyzer.java
similarity index 73%
rename from src/main/java/org/jcnc/snow/compiler/semantic/statement/ReturnAnalyzer.java
rename to src/main/java/org/jcnc/snow/compiler/semantic/analyzers/statement/ReturnAnalyzer.java
index f9ed1e4..afcd94a 100644
--- a/src/main/java/org/jcnc/snow/compiler/semantic/statement/ReturnAnalyzer.java
+++ b/src/main/java/org/jcnc/snow/compiler/semantic/analyzers/statement/ReturnAnalyzer.java
@@ -1,10 +1,15 @@
-package org.jcnc.snow.compiler.semantic.statement;
+package org.jcnc.snow.compiler.semantic.analyzers.statement;
import org.jcnc.snow.compiler.parser.ast.FunctionNode;
import org.jcnc.snow.compiler.parser.ast.ReturnNode;
-import org.jcnc.snow.compiler.semantic.*;
import org.jcnc.snow.compiler.semantic.analyzers.StatementAnalyzer;
-import org.jcnc.snow.compiler.semantic.expression.SemanticError;
+import org.jcnc.snow.compiler.semantic.core.Context;
+import org.jcnc.snow.compiler.semantic.core.ModuleInfo;
+import org.jcnc.snow.compiler.semantic.error.SemanticError;
+import org.jcnc.snow.compiler.semantic.symbol.SymbolTable;
+import org.jcnc.snow.compiler.semantic.type.BuiltinType;
+import org.jcnc.snow.compiler.semantic.type.FunctionType;
+import org.jcnc.snow.compiler.semantic.type.Type;
public class ReturnAnalyzer implements StatementAnalyzer {
@Override
diff --git a/src/main/java/org/jcnc/snow/compiler/semantic/Context.java b/src/main/java/org/jcnc/snow/compiler/semantic/core/Context.java
similarity index 88%
rename from src/main/java/org/jcnc/snow/compiler/semantic/Context.java
rename to src/main/java/org/jcnc/snow/compiler/semantic/core/Context.java
index d95a65d..a5f0436 100644
--- a/src/main/java/org/jcnc/snow/compiler/semantic/Context.java
+++ b/src/main/java/org/jcnc/snow/compiler/semantic/core/Context.java
@@ -1,7 +1,8 @@
-package org.jcnc.snow.compiler.semantic;
+package org.jcnc.snow.compiler.semantic.core;
+import org.jcnc.snow.compiler.semantic.type.Type;
import org.jcnc.snow.compiler.semantic.analyzers.AnalyzerRegistry;
-import org.jcnc.snow.compiler.semantic.expression.SemanticError;
+import org.jcnc.snow.compiler.semantic.error.SemanticError;
import java.util.*;
diff --git a/src/main/java/org/jcnc/snow/compiler/semantic/ModuleInfo.java b/src/main/java/org/jcnc/snow/compiler/semantic/core/ModuleInfo.java
similarity index 94%
rename from src/main/java/org/jcnc/snow/compiler/semantic/ModuleInfo.java
rename to src/main/java/org/jcnc/snow/compiler/semantic/core/ModuleInfo.java
index 33c77cc..d1107a1 100644
--- a/src/main/java/org/jcnc/snow/compiler/semantic/ModuleInfo.java
+++ b/src/main/java/org/jcnc/snow/compiler/semantic/core/ModuleInfo.java
@@ -1,4 +1,6 @@
-package org.jcnc.snow.compiler.semantic;
+package org.jcnc.snow.compiler.semantic.core;
+
+import org.jcnc.snow.compiler.semantic.type.FunctionType;
import java.util.HashMap;
import java.util.HashSet;
diff --git a/src/main/java/org/jcnc/snow/compiler/semantic/SemanticAnalyzer.java b/src/main/java/org/jcnc/snow/compiler/semantic/core/SemanticAnalyzer.java
similarity index 91%
rename from src/main/java/org/jcnc/snow/compiler/semantic/SemanticAnalyzer.java
rename to src/main/java/org/jcnc/snow/compiler/semantic/core/SemanticAnalyzer.java
index 7fc2931..bc32630 100644
--- a/src/main/java/org/jcnc/snow/compiler/semantic/SemanticAnalyzer.java
+++ b/src/main/java/org/jcnc/snow/compiler/semantic/core/SemanticAnalyzer.java
@@ -1,9 +1,16 @@
-package org.jcnc.snow.compiler.semantic;
+package org.jcnc.snow.compiler.semantic.core;
import org.jcnc.snow.compiler.parser.ast.*;
import org.jcnc.snow.compiler.semantic.analyzers.AnalyzerRegistry;
-import org.jcnc.snow.compiler.semantic.expression.*;
-import org.jcnc.snow.compiler.semantic.statement.*;
+import org.jcnc.snow.compiler.semantic.error.SemanticError;
+import org.jcnc.snow.compiler.semantic.analyzers.expression.*;
+import org.jcnc.snow.compiler.semantic.analyzers.statement.*;
+import org.jcnc.snow.compiler.semantic.symbol.Symbol;
+import org.jcnc.snow.compiler.semantic.symbol.SymbolKind;
+import org.jcnc.snow.compiler.semantic.symbol.SymbolTable;
+import org.jcnc.snow.compiler.semantic.type.BuiltinType;
+import org.jcnc.snow.compiler.semantic.type.FunctionType;
+import org.jcnc.snow.compiler.semantic.type.Type;
import java.util.*;
diff --git a/src/main/java/org/jcnc/snow/compiler/semantic/expression/SemanticError.java b/src/main/java/org/jcnc/snow/compiler/semantic/error/SemanticError.java
similarity index 94%
rename from src/main/java/org/jcnc/snow/compiler/semantic/expression/SemanticError.java
rename to src/main/java/org/jcnc/snow/compiler/semantic/error/SemanticError.java
index 181fa39..b0aae5f 100644
--- a/src/main/java/org/jcnc/snow/compiler/semantic/expression/SemanticError.java
+++ b/src/main/java/org/jcnc/snow/compiler/semantic/error/SemanticError.java
@@ -1,4 +1,4 @@
-package org.jcnc.snow.compiler.semantic.expression;
+package org.jcnc.snow.compiler.semantic.error;
import org.jcnc.snow.compiler.parser.ast.base.Node;
diff --git a/src/main/java/org/jcnc/snow/compiler/semantic/Symbol.java b/src/main/java/org/jcnc/snow/compiler/semantic/symbol/Symbol.java
similarity index 88%
rename from src/main/java/org/jcnc/snow/compiler/semantic/Symbol.java
rename to src/main/java/org/jcnc/snow/compiler/semantic/symbol/Symbol.java
index bd9dea2..e0374b7 100644
--- a/src/main/java/org/jcnc/snow/compiler/semantic/Symbol.java
+++ b/src/main/java/org/jcnc/snow/compiler/semantic/symbol/Symbol.java
@@ -1,4 +1,6 @@
-package org.jcnc.snow.compiler.semantic;
+package org.jcnc.snow.compiler.semantic.symbol;
+
+import org.jcnc.snow.compiler.semantic.type.Type;
/**
* 表示符号表(Symbol Table)中的一条符号记录。
diff --git a/src/main/java/org/jcnc/snow/compiler/semantic/SymbolKind.java b/src/main/java/org/jcnc/snow/compiler/semantic/symbol/SymbolKind.java
similarity index 93%
rename from src/main/java/org/jcnc/snow/compiler/semantic/SymbolKind.java
rename to src/main/java/org/jcnc/snow/compiler/semantic/symbol/SymbolKind.java
index 77ba174..0a13ee2 100644
--- a/src/main/java/org/jcnc/snow/compiler/semantic/SymbolKind.java
+++ b/src/main/java/org/jcnc/snow/compiler/semantic/symbol/SymbolKind.java
@@ -1,4 +1,4 @@
-package org.jcnc.snow.compiler.semantic;
+package org.jcnc.snow.compiler.semantic.symbol;
/**
* 表示符号的种类(Symbol Kind)。
diff --git a/src/main/java/org/jcnc/snow/compiler/semantic/SymbolTable.java b/src/main/java/org/jcnc/snow/compiler/semantic/symbol/SymbolTable.java
similarity index 97%
rename from src/main/java/org/jcnc/snow/compiler/semantic/SymbolTable.java
rename to src/main/java/org/jcnc/snow/compiler/semantic/symbol/SymbolTable.java
index c5b8ae1..0cfd3e0 100644
--- a/src/main/java/org/jcnc/snow/compiler/semantic/SymbolTable.java
+++ b/src/main/java/org/jcnc/snow/compiler/semantic/symbol/SymbolTable.java
@@ -1,4 +1,4 @@
-package org.jcnc.snow.compiler.semantic;
+package org.jcnc.snow.compiler.semantic.symbol;
import java.util.HashMap;
import java.util.Map;
diff --git a/src/main/java/org/jcnc/snow/compiler/semantic/BuiltinType.java b/src/main/java/org/jcnc/snow/compiler/semantic/type/BuiltinType.java
similarity index 96%
rename from src/main/java/org/jcnc/snow/compiler/semantic/BuiltinType.java
rename to src/main/java/org/jcnc/snow/compiler/semantic/type/BuiltinType.java
index e3b9fbd..e832ab3 100644
--- a/src/main/java/org/jcnc/snow/compiler/semantic/BuiltinType.java
+++ b/src/main/java/org/jcnc/snow/compiler/semantic/type/BuiltinType.java
@@ -1,4 +1,4 @@
-package org.jcnc.snow.compiler.semantic;
+package org.jcnc.snow.compiler.semantic.type;
/**
* 内置基础类型枚举。
diff --git a/src/main/java/org/jcnc/snow/compiler/semantic/FunctionType.java b/src/main/java/org/jcnc/snow/compiler/semantic/type/FunctionType.java
similarity index 98%
rename from src/main/java/org/jcnc/snow/compiler/semantic/FunctionType.java
rename to src/main/java/org/jcnc/snow/compiler/semantic/type/FunctionType.java
index 01ce22b..f527f76 100644
--- a/src/main/java/org/jcnc/snow/compiler/semantic/FunctionType.java
+++ b/src/main/java/org/jcnc/snow/compiler/semantic/type/FunctionType.java
@@ -1,4 +1,4 @@
-package org.jcnc.snow.compiler.semantic;
+package org.jcnc.snow.compiler.semantic.type;
import java.util.List;
import java.util.Objects;
diff --git a/src/main/java/org/jcnc/snow/compiler/semantic/Type.java b/src/main/java/org/jcnc/snow/compiler/semantic/type/Type.java
similarity index 84%
rename from src/main/java/org/jcnc/snow/compiler/semantic/Type.java
rename to src/main/java/org/jcnc/snow/compiler/semantic/type/Type.java
index d7dc725..640b5d8 100644
--- a/src/main/java/org/jcnc/snow/compiler/semantic/Type.java
+++ b/src/main/java/org/jcnc/snow/compiler/semantic/type/Type.java
@@ -1,4 +1,4 @@
-package org.jcnc.snow.compiler.semantic;
+package org.jcnc.snow.compiler.semantic.type;
/**
* 类型接口。所有具体类型(内置类型、函数类型等)都应实现此接口。