From 4507e3589fcaa909e4e139044dcd696c084a31a9 Mon Sep 17 00:00:00 2001 From: Luke Date: Tue, 1 Jul 2025 09:55:21 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20NumberTokenScanner=20=E7=A7=BB=E9=99=A4?= =?UTF-8?q?=E6=95=B0=E5=AD=97=E5=AD=97=E9=9D=A2=E9=87=8F=E5=90=8E=E7=9B=B4?= =?UTF-8?q?=E6=8E=A5=E8=B7=9F=20/=20=E7=9A=84=E8=A7=84=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/jcnc/snow/compiler/lexer/core/LexerEngine.java | 2 +- .../snow/compiler/lexer/scanners/NumberTokenScanner.java | 5 ----- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/src/main/java/org/jcnc/snow/compiler/lexer/core/LexerEngine.java b/src/main/java/org/jcnc/snow/compiler/lexer/core/LexerEngine.java index 970ec59..5df39fa 100644 --- a/src/main/java/org/jcnc/snow/compiler/lexer/core/LexerEngine.java +++ b/src/main/java/org/jcnc/snow/compiler/lexer/core/LexerEngine.java @@ -136,7 +136,7 @@ public class LexerEngine { } } if (!handled) { - // 万一没有任何扫描器能处理,跳过一个字符防止死循环 + // 没有任何扫描器能处理,跳过一个字符防止死循环 context.advance(); } } diff --git a/src/main/java/org/jcnc/snow/compiler/lexer/scanners/NumberTokenScanner.java b/src/main/java/org/jcnc/snow/compiler/lexer/scanners/NumberTokenScanner.java index eea6458..11eefa5 100644 --- a/src/main/java/org/jcnc/snow/compiler/lexer/scanners/NumberTokenScanner.java +++ b/src/main/java/org/jcnc/snow/compiler/lexer/scanners/NumberTokenScanner.java @@ -40,7 +40,6 @@ import org.jcnc.snow.compiler.lexer.token.TokenType; *
    *
  1. 数字后跟未知字母(如 42X)—— 抛出 LexicalException
  2. *
  3. 数字与合法后缀间有空白(如 3 L)—— 抛出 LexicalException
  4. - *
  5. 数字后直接出现 '/'(如 3/ 或 3/*)—— 抛出 LexicalException,避免死循环
  6. *
  7. 小数点后缺失数字(如 1.)—— 抛出 LexicalException
  8. *
* 支持的单字符类型后缀包括:b, s, l, f, d 及其大写形式。若需支持多字符后缀,可将该集合扩展为 Set。 @@ -154,10 +153,6 @@ public class NumberTokenScanner extends AbstractTokenScanner { throw new LexicalException("数字字面量与类型后缀之间不允许有空白符", line, col); } } - // 2‑D. 紧跟 '/'(如 3/ 或 3/*) - else if (next == '/') { - throw new LexicalException("数字字面量后不允许直接出现 '/'", line, col); - } // 其他字符(分号、运算符、括号等)留给外层扫描流程处理 }