diff --git a/src/main/java/org/jcnc/snow/compiler/parser/utils/ASTJsonSerializer.java b/src/main/java/org/jcnc/snow/compiler/parser/utils/ASTJsonSerializer.java
index 87dc160..775d492 100644
--- a/src/main/java/org/jcnc/snow/compiler/parser/utils/ASTJsonSerializer.java
+++ b/src/main/java/org/jcnc/snow/compiler/parser/utils/ASTJsonSerializer.java
@@ -13,7 +13,7 @@ import java.util.*;
* 并可借助 {@code JSONParser.toJson(Object)} 方法将其序列化为 JSON 字符串,用于调试、
* 可视化或跨语言数据传输。
*
- * 支持的节点类型包括:
+ * 支持的节点类型包括(新增对 {@code BoolLiteralNode}、{@code UnaryExpressionNode} 的完整支持):
*
* - {@link ModuleNode}
* - {@link FunctionNode}
@@ -23,7 +23,9 @@ import java.util.*;
* - {@link LoopNode}
* - {@link ReturnNode}
* - {@link ExpressionStatementNode}
- * - 各类 {@link ExpressionNode} 子类型,如 {@code BinaryExpressionNode}, {@code IdentifierNode} 等
+ * - {@link BoolLiteralNode}
+ * - {@link UnaryExpressionNode}
+ * - 以及各类 {@link ExpressionNode} 子类型,如 {@code BinaryExpressionNode}, {@code IdentifierNode} 等
*
*/
public class ASTJsonSerializer {
@@ -174,19 +176,32 @@ public class ASTJsonSerializer {
*/
private static Object exprToMap(ExpressionNode expr) {
return switch (expr) {
+ // 二元表达式
case BinaryExpressionNode(ExpressionNode left, String operator, ExpressionNode right) -> exprMap("BinaryExpression",
"left", exprToMap(left),
"operator", operator,
"right", exprToMap(right)
);
+ // 一元表达式
+ case UnaryExpressionNode(String operator, ExpressionNode operand) -> exprMap("UnaryExpression",
+ "operator", operator,
+ "operand", exprToMap(operand)
+ );
+ // 布尔字面量
+ case BoolLiteralNode(boolean value) -> exprMap("BoolLiteral", "value", value);
+ // 标识符
case IdentifierNode(String name) -> exprMap("Identifier", "name", name);
+ // 数字字面量
case NumberLiteralNode(String value) -> exprMap("NumberLiteral", "value", value);
+ // 字符串字面量
case StringLiteralNode(String value) -> exprMap("StringLiteral", "value", value);
+ // 调用表达式
case CallExpressionNode(ExpressionNode callee, List arguments, int line, int column, String file) -> {
List