From 35efce2dd43318d5a8eab25f1b50f682f980634c Mon Sep 17 00:00:00 2001 From: Luke Date: Mon, 28 Apr 2025 11:01:37 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=A1=B9=E7=9B=AE=E7=BB=93?= =?UTF-8?q?=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/org/jcnc/snow/compiler/Main.java | 6 +++--- .../compiler/parser/{ => core}/ParserEngine.java | 2 +- .../parser/factory/TopLevelParserFactory.java | 3 ++- .../semantic/analyzers/ExpressionAnalyzer.java | 8 ++++---- .../semantic/analyzers/StatementAnalyzer.java | 6 +++--- .../expression/BinaryExpressionAnalyzer.java | 9 +++++++-- .../expression/CallExpressionAnalyzer.java | 10 ++++++++-- .../expression/IdentifierAnalyzer.java | 10 ++++++++-- .../expression/NumberLiteralAnalyzer.java | 8 ++++++-- .../expression/StringLiteralAnalyzer.java | 8 ++++++-- .../expression/UnsupportedExpressionAnalyzer.java | 9 +++++++-- .../statement/AssignmentAnalyzer.java | 11 ++++++++--- .../statement/DeclarationAnalyzer.java | 12 +++++++++--- .../{ => analyzers}/statement/IfAnalyzer.java | 10 +++++++--- .../{ => analyzers}/statement/LoopAnalyzer.java | 10 +++++++--- .../{ => analyzers}/statement/ReturnAnalyzer.java | 11 ++++++++--- .../snow/compiler/semantic/{ => core}/Context.java | 5 +++-- .../compiler/semantic/{ => core}/ModuleInfo.java | 4 +++- .../semantic/{ => core}/SemanticAnalyzer.java | 13 ++++++++++--- .../{expression => error}/SemanticError.java | 2 +- .../snow/compiler/semantic/{ => symbol}/Symbol.java | 4 +++- .../compiler/semantic/{ => symbol}/SymbolKind.java | 2 +- .../compiler/semantic/{ => symbol}/SymbolTable.java | 2 +- .../compiler/semantic/{ => type}/BuiltinType.java | 2 +- .../compiler/semantic/{ => type}/FunctionType.java | 2 +- .../snow/compiler/semantic/{ => type}/Type.java | 2 +- 26 files changed, 119 insertions(+), 52 deletions(-) rename src/main/java/org/jcnc/snow/compiler/parser/{ => core}/ParserEngine.java (98%) rename src/main/java/org/jcnc/snow/compiler/semantic/{ => analyzers}/expression/BinaryExpressionAnalyzer.java (85%) rename src/main/java/org/jcnc/snow/compiler/semantic/{ => analyzers}/expression/CallExpressionAnalyzer.java (89%) rename src/main/java/org/jcnc/snow/compiler/semantic/{ => analyzers}/expression/IdentifierAnalyzer.java (60%) rename src/main/java/org/jcnc/snow/compiler/semantic/{ => analyzers}/expression/NumberLiteralAnalyzer.java (56%) rename src/main/java/org/jcnc/snow/compiler/semantic/{ => analyzers}/expression/StringLiteralAnalyzer.java (56%) rename src/main/java/org/jcnc/snow/compiler/semantic/{ => analyzers}/expression/UnsupportedExpressionAnalyzer.java (66%) rename src/main/java/org/jcnc/snow/compiler/semantic/{ => analyzers}/statement/AssignmentAnalyzer.java (72%) rename src/main/java/org/jcnc/snow/compiler/semantic/{ => analyzers}/statement/DeclarationAnalyzer.java (76%) rename src/main/java/org/jcnc/snow/compiler/semantic/{ => analyzers}/statement/IfAnalyzer.java (75%) rename src/main/java/org/jcnc/snow/compiler/semantic/{ => analyzers}/statement/LoopAnalyzer.java (77%) rename src/main/java/org/jcnc/snow/compiler/semantic/{ => analyzers}/statement/ReturnAnalyzer.java (73%) rename src/main/java/org/jcnc/snow/compiler/semantic/{ => core}/Context.java (88%) rename src/main/java/org/jcnc/snow/compiler/semantic/{ => core}/ModuleInfo.java (94%) rename src/main/java/org/jcnc/snow/compiler/semantic/{ => core}/SemanticAnalyzer.java (91%) rename src/main/java/org/jcnc/snow/compiler/semantic/{expression => error}/SemanticError.java (94%) rename src/main/java/org/jcnc/snow/compiler/semantic/{ => symbol}/Symbol.java (88%) rename src/main/java/org/jcnc/snow/compiler/semantic/{ => symbol}/SymbolKind.java (93%) rename src/main/java/org/jcnc/snow/compiler/semantic/{ => symbol}/SymbolTable.java (97%) rename src/main/java/org/jcnc/snow/compiler/semantic/{ => type}/BuiltinType.java (96%) rename src/main/java/org/jcnc/snow/compiler/semantic/{ => type}/FunctionType.java (98%) rename src/main/java/org/jcnc/snow/compiler/semantic/{ => type}/Type.java (84%) 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; /** * 类型接口。所有具体类型(内置类型、函数类型等)都应实现此接口。