diff --git a/src/main/java/org/jcnc/snow/compiler/Main.java b/src/main/java/org/jcnc/snow/compiler/Main.java index dc6fa5c..ec0a0a1 100644 --- a/src/main/java/org/jcnc/snow/compiler/Main.java +++ b/src/main/java/org/jcnc/snow/compiler/Main.java @@ -2,7 +2,6 @@ package org.jcnc.snow.compiler; import org.jcnc.snow.compiler.lexer.LexerEngine; import org.jcnc.snow.compiler.lexer.token.Token; -import org.jcnc.snow.compiler.lexer.utils.TokenPrinter; import org.jcnc.snow.compiler.parser.ParserEngine; import org.jcnc.snow.compiler.parser.context.ParserContext; import org.jcnc.snow.compiler.parser.ast.base.Node; @@ -28,6 +27,8 @@ public class Main { ParserContext ctx = new ParserContext(tokens); List ast = new ParserEngine(ctx).parse(); + // 3. 语义分析 + // 打印 diff --git a/src/main/java/org/jcnc/snow/compiler/parser/statement/IfStatementParser.java b/src/main/java/org/jcnc/snow/compiler/parser/statement/IfStatementParser.java index 61d044e..7c42555 100644 --- a/src/main/java/org/jcnc/snow/compiler/parser/statement/IfStatementParser.java +++ b/src/main/java/org/jcnc/snow/compiler/parser/statement/IfStatementParser.java @@ -13,7 +13,7 @@ import java.util.List; /** * 解析 if 语句: - * + *

* 支持格式: * if then * diff --git a/src/main/java/org/jcnc/snow/compiler/parser/util/JSONParser.java b/src/main/java/org/jcnc/snow/compiler/parser/util/JSONParser.java index d5204a6..9a52939 100644 --- a/src/main/java/org/jcnc/snow/compiler/parser/util/JSONParser.java +++ b/src/main/java/org/jcnc/snow/compiler/parser/util/JSONParser.java @@ -203,8 +203,8 @@ public class JSONParser { if (currentChar() == '-') advance(); while (isDigit(currentChar())) advance(); if (currentChar() == '.') { - advance(); - while (isDigit(currentChar())) advance(); + do advance(); + while (isDigit(currentChar())); } if (currentChar() == 'e' || currentChar() == 'E') { advance(); @@ -316,14 +316,13 @@ public class JSONParser { /** * 根据对象类型选择合适的写入方式 */ - @SuppressWarnings("unchecked") private static void writeValue(Object obj, StringBuilder sb) { if (obj == null) { sb.append("null"); } else if (obj instanceof String) { quote((String) obj, sb); } else if (obj instanceof Number || obj instanceof Boolean) { - sb.append(obj.toString()); + sb.append(obj); } else if (obj instanceof Map) { sb.append('{'); boolean first = true;