增加打印

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.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<Token> tokens = lexer.getAllTokens();
/* 2. 语法分析 */
ParserContext ctx = new ParserContext(tokens);
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. 语义分析 */
SemanticAnalyzerRunner.runSemanticAnalysis(ast, true);