From cc106f57e161924a4031e4a84b264f40667e1f10 Mon Sep 17 00:00:00 2001 From: Luke Date: Wed, 16 Jul 2025 23:37:15 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E4=BC=98=E5=8C=96=E7=BC=96?= =?UTF-8?q?=E8=AF=91=E6=B5=81=E7=A8=8B=EF=BC=8C=E8=AF=8D=E6=B3=95=E5=88=86?= =?UTF-8?q?=E6=9E=90=E6=9C=89=E9=94=99=E8=AF=AF=E6=97=B6=E7=AB=8B=E5=8D=B3?= =?UTF-8?q?=E7=BB=88=E6=AD=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在语法分析之前增加对词法分析错误的检查 - 若词法阶段存在错误,立即终止编译,避免进入后续的语法及语义分析 - 这种优化可以减少不必要的计算,提高编译效率 --- src/main/java/org/jcnc/snow/pkg/tasks/CompileTask.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/org/jcnc/snow/pkg/tasks/CompileTask.java b/src/main/java/org/jcnc/snow/pkg/tasks/CompileTask.java index 7ce1633..f570bee 100644 --- a/src/main/java/org/jcnc/snow/pkg/tasks/CompileTask.java +++ b/src/main/java/org/jcnc/snow/pkg/tasks/CompileTask.java @@ -168,6 +168,11 @@ public final class CompileTask implements Task { // 词法、语法分析 LexerEngine lexer = new LexerEngine(code, p.toString()); + // 若词法阶段存在错误,立即终止编译,避免进入后续的语法及语义分析 + if (!lexer.getErrors().isEmpty()) { + return 1; + } + ParserContext ctx = new ParserContext(lexer.getAllTokens(), p.toString()); allAst.addAll(new ParserEngine(ctx).parse()); }