From 22c7ec46f88180bc9a6d193e4656fd906ebb1ca8 Mon Sep 17 00:00:00 2001 From: zhangxun <1958638841@qq.com> Date: Sat, 28 Jun 2025 10:20:11 +0800 Subject: [PATCH] =?UTF-8?q?style:=20TokenStream.isAtEnd=20=E8=BF=94?= =?UTF-8?q?=E5=9B=9E=E5=80=BC=E7=AC=A6=E5=90=88=E6=96=87=E6=A1=A3=E8=AF=B4?= =?UTF-8?q?=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/jcnc/snow/compiler/parser/context/TokenStream.java | 2 +- .../org/jcnc/snow/compiler/parser/core/ParserEngine.java | 6 +++--- .../compiler/parser/expression/PrattExpressionParser.java | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/jcnc/snow/compiler/parser/context/TokenStream.java b/src/main/java/org/jcnc/snow/compiler/parser/context/TokenStream.java index 5841b7b..2788300 100644 --- a/src/main/java/org/jcnc/snow/compiler/parser/context/TokenStream.java +++ b/src/main/java/org/jcnc/snow/compiler/parser/context/TokenStream.java @@ -120,7 +120,7 @@ public class TokenStream { * @return 若当前位置 Token 为 EOF,则返回 true,否则 false */ public boolean isAtEnd() { - return peek().getType() != TokenType.EOF; + return peek().getType() == TokenType.EOF; } diff --git a/src/main/java/org/jcnc/snow/compiler/parser/core/ParserEngine.java b/src/main/java/org/jcnc/snow/compiler/parser/core/ParserEngine.java index 7d0854f..14dc783 100644 --- a/src/main/java/org/jcnc/snow/compiler/parser/core/ParserEngine.java +++ b/src/main/java/org/jcnc/snow/compiler/parser/core/ParserEngine.java @@ -17,7 +17,7 @@ public record ParserEngine(ParserContext ctx) { List errs = new ArrayList<>(); TokenStream ts = ctx.getTokens(); - while (ts.isAtEnd()) { + while (!ts.isAtEnd()) { // 跳过空行 if (ts.peek().getType() == TokenType.NEWLINE) { ts.next(); @@ -46,7 +46,7 @@ public record ParserEngine(ParserContext ctx) { * 错误同步:跳到下一行或下一个已注册顶层关键字 */ private void synchronize(TokenStream ts) { - while (ts.isAtEnd()) { + while (!ts.isAtEnd()) { if (ts.peek().getType() == TokenType.NEWLINE) { ts.next(); break; @@ -57,7 +57,7 @@ public record ParserEngine(ParserContext ctx) { ts.next(); } // 连续空行全部吃掉 - while (ts.isAtEnd() && ts.peek().getType() == TokenType.NEWLINE) { + while (!ts.isAtEnd() && ts.peek().getType() == TokenType.NEWLINE) { ts.next(); } } diff --git a/src/main/java/org/jcnc/snow/compiler/parser/expression/PrattExpressionParser.java b/src/main/java/org/jcnc/snow/compiler/parser/expression/PrattExpressionParser.java index 4f79274..c5529d4 100644 --- a/src/main/java/org/jcnc/snow/compiler/parser/expression/PrattExpressionParser.java +++ b/src/main/java/org/jcnc/snow/compiler/parser/expression/PrattExpressionParser.java @@ -92,7 +92,7 @@ public class PrattExpressionParser implements ExpressionParser { ExpressionNode left = prefix.parse(ctx, token); - while (ctx.getTokens().isAtEnd() + while (!ctx.getTokens().isAtEnd() && prec.ordinal() < nextPrecedence(ctx)) { String lex = ctx.getTokens().peek().getLexeme(); InfixParselet infix = infixes.get(lex);