优化项目结构
This commit is contained in:
parent
adffcad19d
commit
35efce2dd4
@ -2,12 +2,12 @@ package org.jcnc.snow.compiler;
|
|||||||
|
|
||||||
import org.jcnc.snow.compiler.lexer.LexerEngine;
|
import org.jcnc.snow.compiler.lexer.LexerEngine;
|
||||||
import org.jcnc.snow.compiler.lexer.token.Token;
|
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.ast.ModuleNode;
|
||||||
import org.jcnc.snow.compiler.parser.context.ParserContext;
|
import org.jcnc.snow.compiler.parser.context.ParserContext;
|
||||||
import org.jcnc.snow.compiler.parser.ast.base.Node;
|
import org.jcnc.snow.compiler.parser.ast.base.Node;
|
||||||
import org.jcnc.snow.compiler.semantic.SemanticAnalyzer;
|
import org.jcnc.snow.compiler.semantic.core.SemanticAnalyzer;
|
||||||
import org.jcnc.snow.compiler.semantic.expression.SemanticError;
|
import org.jcnc.snow.compiler.semantic.error.SemanticError;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
|
|||||||
@ -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.lexer.token.TokenType;
|
||||||
import org.jcnc.snow.compiler.parser.base.TopLevelParser;
|
import org.jcnc.snow.compiler.parser.base.TopLevelParser;
|
||||||
@ -1,6 +1,7 @@
|
|||||||
package org.jcnc.snow.compiler.parser.factory;
|
package org.jcnc.snow.compiler.parser.factory;
|
||||||
|
|
||||||
import org.jcnc.snow.compiler.parser.base.TopLevelParser;
|
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 org.jcnc.snow.compiler.parser.module.ModuleParser;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -13,7 +14,7 @@ import java.util.HashMap;
|
|||||||
* <p>该类采用静态注册机制,在类加载时将所有支持的关键字及其解析器实例注册到内部映射表中。
|
* <p>该类采用静态注册机制,在类加载时将所有支持的关键字及其解析器实例注册到内部映射表中。
|
||||||
* 外部通过 {@link #get(String)} 方法获取对应的解析器。</p>
|
* 外部通过 {@link #get(String)} 方法获取对应的解析器。</p>
|
||||||
*
|
*
|
||||||
* <p>用于 {@link org.jcnc.snow.compiler.parser.ParserEngine} 中,根据关键字动态解析不同语法块。</p>
|
* <p>用于 {@link ParserEngine} 中,根据关键字动态解析不同语法块。</p>
|
||||||
*/
|
*/
|
||||||
public class TopLevelParserFactory {
|
public class TopLevelParserFactory {
|
||||||
// 存储关键字 -> 解析器 实例的映射关系
|
// 存储关键字 -> 解析器 实例的映射关系
|
||||||
|
|||||||
@ -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.FunctionNode;
|
||||||
import org.jcnc.snow.compiler.parser.ast.base.ExpressionNode;
|
import org.jcnc.snow.compiler.parser.ast.base.ExpressionNode;
|
||||||
import org.jcnc.snow.compiler.semantic.Context;
|
import org.jcnc.snow.compiler.semantic.core.Context;
|
||||||
import org.jcnc.snow.compiler.semantic.ModuleInfo;
|
import org.jcnc.snow.compiler.semantic.core.ModuleInfo;
|
||||||
import org.jcnc.snow.compiler.semantic.SymbolTable;
|
import org.jcnc.snow.compiler.semantic.symbol.SymbolTable;
|
||||||
import org.jcnc.snow.compiler.semantic.Type;
|
import org.jcnc.snow.compiler.semantic.type.Type;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 表达式分析器接口。
|
* 表达式分析器接口。
|
||||||
|
|||||||
@ -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.FunctionNode;
|
||||||
import org.jcnc.snow.compiler.parser.ast.base.StatementNode;
|
import org.jcnc.snow.compiler.parser.ast.base.StatementNode;
|
||||||
import org.jcnc.snow.compiler.semantic.Context;
|
import org.jcnc.snow.compiler.semantic.core.Context;
|
||||||
import org.jcnc.snow.compiler.semantic.ModuleInfo;
|
import org.jcnc.snow.compiler.semantic.core.ModuleInfo;
|
||||||
import org.jcnc.snow.compiler.semantic.SymbolTable;
|
import org.jcnc.snow.compiler.semantic.symbol.SymbolTable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 语句分析器接口。
|
* 语句分析器接口。
|
||||||
|
|||||||
@ -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.BinaryExpressionNode;
|
||||||
import org.jcnc.snow.compiler.parser.ast.FunctionNode;
|
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.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<BinaryExpressionNode> {
|
public class BinaryExpressionAnalyzer implements ExpressionAnalyzer<BinaryExpressionNode> {
|
||||||
@Override
|
@Override
|
||||||
@ -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.CallExpressionNode;
|
||||||
import org.jcnc.snow.compiler.parser.ast.FunctionNode;
|
import org.jcnc.snow.compiler.parser.ast.FunctionNode;
|
||||||
import org.jcnc.snow.compiler.parser.ast.IdentifierNode;
|
import org.jcnc.snow.compiler.parser.ast.IdentifierNode;
|
||||||
import org.jcnc.snow.compiler.parser.ast.MemberExpressionNode;
|
import org.jcnc.snow.compiler.parser.ast.MemberExpressionNode;
|
||||||
import org.jcnc.snow.compiler.parser.ast.base.ExpressionNode;
|
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.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.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -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.FunctionNode;
|
||||||
import org.jcnc.snow.compiler.parser.ast.IdentifierNode;
|
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.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<IdentifierNode> {
|
public class IdentifierAnalyzer implements ExpressionAnalyzer<IdentifierNode> {
|
||||||
@Override
|
@Override
|
||||||
@ -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.FunctionNode;
|
||||||
import org.jcnc.snow.compiler.parser.ast.NumberLiteralNode;
|
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.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<NumberLiteralNode> {
|
public class NumberLiteralAnalyzer implements ExpressionAnalyzer<NumberLiteralNode> {
|
||||||
@Override
|
@Override
|
||||||
@ -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.FunctionNode;
|
||||||
import org.jcnc.snow.compiler.parser.ast.StringLiteralNode;
|
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.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<StringLiteralNode> {
|
public class StringLiteralAnalyzer implements ExpressionAnalyzer<StringLiteralNode> {
|
||||||
@Override
|
@Override
|
||||||
@ -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.FunctionNode;
|
||||||
import org.jcnc.snow.compiler.parser.ast.base.ExpressionNode;
|
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.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<ExpressionNode>
|
// 之前:implements ExpressionAnalyzer<ExpressionNode>
|
||||||
public class UnsupportedExpressionAnalyzer<E extends ExpressionNode>
|
public class UnsupportedExpressionAnalyzer<E extends ExpressionNode>
|
||||||
@ -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.AssignmentNode;
|
||||||
import org.jcnc.snow.compiler.parser.ast.FunctionNode;
|
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.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<AssignmentNode> {
|
public class AssignmentAnalyzer implements StatementAnalyzer<AssignmentNode> {
|
||||||
@Override
|
@Override
|
||||||
@ -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.DeclarationNode;
|
||||||
import org.jcnc.snow.compiler.parser.ast.FunctionNode;
|
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.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<DeclarationNode> {
|
public class DeclarationAnalyzer implements StatementAnalyzer<DeclarationNode> {
|
||||||
@Override
|
@Override
|
||||||
@ -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.FunctionNode;
|
||||||
import org.jcnc.snow.compiler.parser.ast.IfNode;
|
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.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<IfNode> {
|
public class IfAnalyzer implements StatementAnalyzer<IfNode> {
|
||||||
@Override
|
@Override
|
||||||
@ -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.FunctionNode;
|
||||||
import org.jcnc.snow.compiler.parser.ast.LoopNode;
|
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.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<LoopNode> {
|
public class LoopAnalyzer implements StatementAnalyzer<LoopNode> {
|
||||||
@Override
|
@Override
|
||||||
@ -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.FunctionNode;
|
||||||
import org.jcnc.snow.compiler.parser.ast.ReturnNode;
|
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.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<ReturnNode> {
|
public class ReturnAnalyzer implements StatementAnalyzer<ReturnNode> {
|
||||||
@Override
|
@Override
|
||||||
@ -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.analyzers.AnalyzerRegistry;
|
||||||
import org.jcnc.snow.compiler.semantic.expression.SemanticError;
|
import org.jcnc.snow.compiler.semantic.error.SemanticError;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
@ -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.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
@ -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.parser.ast.*;
|
||||||
import org.jcnc.snow.compiler.semantic.analyzers.AnalyzerRegistry;
|
import org.jcnc.snow.compiler.semantic.analyzers.AnalyzerRegistry;
|
||||||
import org.jcnc.snow.compiler.semantic.expression.*;
|
import org.jcnc.snow.compiler.semantic.error.SemanticError;
|
||||||
import org.jcnc.snow.compiler.semantic.statement.*;
|
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.*;
|
import java.util.*;
|
||||||
|
|
||||||
@ -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;
|
import org.jcnc.snow.compiler.parser.ast.base.Node;
|
||||||
|
|
||||||
@ -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)中的一条符号记录。
|
* 表示符号表(Symbol Table)中的一条符号记录。
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package org.jcnc.snow.compiler.semantic;
|
package org.jcnc.snow.compiler.semantic.symbol;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 表示符号的种类(Symbol Kind)。
|
* 表示符号的种类(Symbol Kind)。
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package org.jcnc.snow.compiler.semantic;
|
package org.jcnc.snow.compiler.semantic.symbol;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package org.jcnc.snow.compiler.semantic;
|
package org.jcnc.snow.compiler.semantic.type;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 内置基础类型枚举。
|
* 内置基础类型枚举。
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package org.jcnc.snow.compiler.semantic;
|
package org.jcnc.snow.compiler.semantic.type;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package org.jcnc.snow.compiler.semantic;
|
package org.jcnc.snow.compiler.semantic.type;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 类型接口。所有具体类型(内置类型、函数类型等)都应实现此接口。
|
* 类型接口。所有具体类型(内置类型、函数类型等)都应实现此接口。
|
||||||
Loading…
x
Reference in New Issue
Block a user