From f44fc18c52013dcb65f755f0e657bacb1d460a15 Mon Sep 17 00:00:00 2001 From: zhangxun <1958638841@qq.com> Date: Fri, 18 Jul 2025 02:36:32 +0000 Subject: [PATCH 1/5] =?UTF-8?q?docs:=20Snow-Lang=20=E8=AF=AD=E6=B3=95?= =?UTF-8?q?=E8=A7=84=E8=8C=83=E4=B8=8D=E8=83=BD=E8=B7=B3=E8=BD=AC=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index cd31809..da8a7f2 100644 --- a/README.md +++ b/README.md @@ -71,7 +71,7 @@ Snow 语言受到 LLM 驱动代码生成趋势的启发,强调简单而清晰的 ## 相关文档 [Snow-Lang 指南](docs/Snow-Lang-Syntax/Snow-Lang-Syntax.md) -[Snow-Lang 语法规范](docs/Snow-Lang-Syntax/Snow-Lang-Grammar-Specification) +[Snow-Lang 语法规范](docs/Snow-Lang-Syntax/Snow-Lang-Grammar-Specification.md) [Git 管理规范](docs/Snow-Lang-Git-Management/Snow-Lang-Git-Management.md) From e2d4f97d75858d8fc09ce32042285b4079fe954c Mon Sep 17 00:00:00 2001 From: zhangxun <1958638841@qq.com> Date: Fri, 18 Jul 2025 10:43:55 +0800 Subject: [PATCH 2/5] =?UTF-8?q?docs:=20=E7=A7=BB=E9=99=A4=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E6=95=B4=E6=95=B0=E5=92=8C=E6=B5=AE=E7=82=B9=E6=95=B0?= =?UTF-8?q?=E7=9A=84=E5=90=8E=E7=BC=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/Snow-Lang-Syntax/Snow-Lang-Grammar-Specification.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/Snow-Lang-Syntax/Snow-Lang-Grammar-Specification.md b/docs/Snow-Lang-Syntax/Snow-Lang-Grammar-Specification.md index d8a816a..64d2af4 100644 --- a/docs/Snow-Lang-Syntax/Snow-Lang-Grammar-Specification.md +++ b/docs/Snow-Lang-Syntax/Snow-Lang-Grammar-Specification.md @@ -321,10 +321,8 @@ Snow-Lang 支持下列**数值类型**,用于声明变量、参数、结构体 |----|--------|----------| | b | byte | 7b, -2B | | s | short | 123s | -| i | int | 100i | | l | long | 5l, 123L | | f | float | 3.14f | -| d | double | 1.0d | - 没有后缀的整数字面量自动为 `int`。 - 没有后缀的浮点字面量自动为 `double`。 From 901d2f842ae08acef547ba6536ace61e54ea1d11 Mon Sep 17 00:00:00 2001 From: zhangxun <1958638841@qq.com> Date: Fri, 18 Jul 2025 11:03:21 +0800 Subject: [PATCH 3/5] =?UTF-8?q?fix:=20=E6=95=B0=E5=80=BC=E5=AD=97=E9=9D=A2?= =?UTF-8?q?=E9=87=8F=E5=90=8E=E7=B4=A7=E6=8C=A8=E7=9D=80=E6=A0=87=E8=AF=86?= =?UTF-8?q?=E7=AC=A6=E6=97=B6=EF=BC=8C=E6=8A=A5=E9=94=99=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E8=BE=93=E5=87=BA=E5=AE=8C=E6=95=B4=E6=A0=87=E8=AF=86=E7=AC=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jcnc/snow/compiler/lexer/scanners/NumberTokenScanner.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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 c655595..b1adea1 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 @@ -177,8 +177,10 @@ public class NumberTokenScanner extends AbstractTokenScanner { /* 2-B. **非法字母**(既不是后缀,也没有空白隔开) */ } else if (Character.isLetter(next)) { + var its = new IdentifierTokenScanner(); + var token = its.scanToken(ctx, line, col); throw new LexicalException( - "数字后不能紧跟未知标识符 '" + next + "'", line, col); + "数字后不能紧跟未知标识符 '" + token.getLexeme() + "'", line, col); /* 2-C. **非法下划线** */ } else if (next == '_') { throw new LexicalException( From 3dd06261e2cd554afb5a38c8190e9a50e55bcaf3 Mon Sep 17 00:00:00 2001 From: zhangxun <1958638841@qq.com> Date: Fri, 18 Jul 2025 11:15:35 +0800 Subject: [PATCH 4/5] =?UTF-8?q?refactor:=20=E7=A7=BB=E9=99=A4=E5=AF=B9?= =?UTF-8?q?=E6=B5=AE=E7=82=B9=E6=95=B0=E5=AD=97=E9=9D=A2=E9=87=8F=E5=90=8E?= =?UTF-8?q?=E7=BC=80=20D=20=E7=9A=84=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jcnc/snow/compiler/lexer/scanners/NumberTokenScanner.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 b1adea1..7cd0894 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 @@ -42,7 +42,7 @@ import org.jcnc.snow.compiler.lexer.token.TokenType; *
  • 小数点后缺失数字(如 1.)—— 抛出 LexicalException
  • * *

    - * 支持的单字符类型后缀包括: b, s, l, f, d 及其大写形式。若需支持多字符后缀,可将该集合扩展为 Set。 + * 支持的单字符类型后缀包括: b, s, l, f 及其大写形式。若需支持多字符后缀,可将该集合扩展为 Set。 */ public class NumberTokenScanner extends AbstractTokenScanner { @@ -51,7 +51,7 @@ public class NumberTokenScanner extends AbstractTokenScanner { * 包含: b, s, l, f, d 及其大写形式。 * 对于多字符后缀,可扩展为 Set 并在扫描尾部做贪婪匹配。 */ - private static final String SUFFIX_CHARS = "bslfdBSLFD"; + private static final String SUFFIX_CHARS = "bslfBSLF"; /** * 判断是否由该扫描器处理。 From 6fb24f3f2f9b97d33264af03e8f5531e21bf5ce3 Mon Sep 17 00:00:00 2001 From: zhangxun <1958638841@qq.com> Date: Fri, 18 Jul 2025 11:16:08 +0800 Subject: [PATCH 5/5] =?UTF-8?q?test:=20=E4=BF=AE=E6=94=B9=20Demo13=20?= =?UTF-8?q?=E4=BB=A5=E6=94=AF=E6=8C=81=E6=96=B0=E7=89=88=E8=AF=AD=E6=B3=95?= =?UTF-8?q?=EF=BC=88=E7=A7=BB=E9=99=A4=E5=AF=B9=E5=AD=97=E9=9D=A2=E9=87=8F?= =?UTF-8?q?=20D=20=E7=9A=84=E6=94=AF=E6=8C=81=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- playground/Demo/Demo13/Main.snow | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/playground/Demo/Demo13/Main.snow b/playground/Demo/Demo13/Main.snow index dee7b5b..7b6479b 100644 --- a/playground/Demo/Demo13/Main.snow +++ b/playground/Demo/Demo13/Main.snow @@ -7,34 +7,34 @@ module: Main 5 == 7b 5 == 7l 5 == 7f - 5 == 7d + 5 == 7.0 5b == 5b 5b == 5s 5b == 5l 5b == 5f - 5b == 5d + 5b == 5.0 5s == 5s 5s == 5l 5s == 5f - 5s == 5d + 5s == 5.0 5l == 5l 5l == 5f - 5l == 5d + 5l == 5.0 5f == 5f - 5f == 5d + 5f == 5.0 - 5d == 5d + 5.0 == 5.0 declare b: byte = 8b declare s: short = 8s declare i: int = 8 declare l: long = 8l declare f: float = 8f - declare d: double = 8d + declare d: double = 8 b == b b == s