From e34a9b8c894b6e8d7c1d1e783cffaf8830e39b8d Mon Sep 17 00:00:00 2001 From: Luke Date: Mon, 28 Apr 2025 17:49:04 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=89=93=E5=8D=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/jcnc/snow/compiler/cli/SnowCompiler.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/java/org/jcnc/snow/compiler/cli/SnowCompiler.java b/src/main/java/org/jcnc/snow/compiler/cli/SnowCompiler.java index e185b4b..c66e0ed 100644 --- a/src/main/java/org/jcnc/snow/compiler/cli/SnowCompiler.java +++ b/src/main/java/org/jcnc/snow/compiler/cli/SnowCompiler.java @@ -7,9 +7,11 @@ import org.jcnc.snow.compiler.ir.IRProgram; import org.jcnc.snow.compiler.ir.instr.IRFunction; import org.jcnc.snow.compiler.lexer.core.LexerEngine; 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.context.ParserContext; 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.vm.engine.VMMode; import org.jcnc.snow.vm.engine.VirtualMachineEngine; @@ -36,14 +38,20 @@ public class SnowCompiler { } String source = Files.readString(srcPath, StandardCharsets.UTF_8); + /* 1. 词法分析 */ LexerEngine lexer = new LexerEngine(source); + List tokens = lexer.getAllTokens(); /* 2. 语法分析 */ ParserContext ctx = new ParserContext(tokens); List ast = new ParserEngine(ctx).parse(); + System.out.println(source); + TokenPrinter.print(tokens); // 打印 Token 列表 + ASTPrinter.print(ast); // 打印 AST + ASTPrinter.printJson(ast); // 打印JSON AST /* 3. 语义分析 */ SemanticAnalyzerRunner.runSemanticAnalysis(ast, true);