增加打印

This commit is contained in:
Luke 2025-04-28 17:49:04 +08:00
parent fc549217db
commit e34a9b8c89

View File

@ -7,9 +7,11 @@ import org.jcnc.snow.compiler.ir.IRProgram;
import org.jcnc.snow.compiler.ir.instr.IRFunction; import org.jcnc.snow.compiler.ir.instr.IRFunction;
import org.jcnc.snow.compiler.lexer.core.LexerEngine; import org.jcnc.snow.compiler.lexer.core.LexerEngine;
import org.jcnc.snow.compiler.lexer.token.Token; import org.jcnc.snow.compiler.lexer.token.Token;
import org.jcnc.snow.compiler.lexer.utils.TokenPrinter;
import org.jcnc.snow.compiler.parser.ast.base.Node; import org.jcnc.snow.compiler.parser.ast.base.Node;
import org.jcnc.snow.compiler.parser.context.ParserContext; import org.jcnc.snow.compiler.parser.context.ParserContext;
import org.jcnc.snow.compiler.parser.core.ParserEngine; import org.jcnc.snow.compiler.parser.core.ParserEngine;
import org.jcnc.snow.compiler.parser.function.ASTPrinter;
import org.jcnc.snow.compiler.semantic.core.SemanticAnalyzerRunner; import org.jcnc.snow.compiler.semantic.core.SemanticAnalyzerRunner;
import org.jcnc.snow.vm.engine.VMMode; import org.jcnc.snow.vm.engine.VMMode;
import org.jcnc.snow.vm.engine.VirtualMachineEngine; import org.jcnc.snow.vm.engine.VirtualMachineEngine;
@ -36,14 +38,20 @@ public class SnowCompiler {
} }
String source = Files.readString(srcPath, StandardCharsets.UTF_8); String source = Files.readString(srcPath, StandardCharsets.UTF_8);
/* 1. 词法分析 */ /* 1. 词法分析 */
LexerEngine lexer = new LexerEngine(source); LexerEngine lexer = new LexerEngine(source);
List<Token> tokens = lexer.getAllTokens(); List<Token> tokens = lexer.getAllTokens();
/* 2. 语法分析 */ /* 2. 语法分析 */
ParserContext ctx = new ParserContext(tokens); ParserContext ctx = new ParserContext(tokens);
List<Node> ast = new ParserEngine(ctx).parse(); List<Node> ast = new ParserEngine(ctx).parse();
System.out.println(source);
TokenPrinter.print(tokens); // 打印 Token 列表
ASTPrinter.print(ast); // 打印 AST
ASTPrinter.printJson(ast); // 打印JSON AST
/* 3. 语义分析 */ /* 3. 语义分析 */
SemanticAnalyzerRunner.runSemanticAnalysis(ast, true); SemanticAnalyzerRunner.runSemanticAnalysis(ast, true);