diff --git a/src/main/java/org/jcnc/snow/compiler/ir/builder/ExpressionBuilder.java b/src/main/java/org/jcnc/snow/compiler/ir/builder/ExpressionBuilder.java index 37c0c72..4070347 100644 --- a/src/main/java/org/jcnc/snow/compiler/ir/builder/ExpressionBuilder.java +++ b/src/main/java/org/jcnc/snow/compiler/ir/builder/ExpressionBuilder.java @@ -20,7 +20,7 @@ import java.util.Map; /** * ExpressionBuilder 将 AST 中的 ExpressionNode 转换为 IR 指令,并返回结果的虚拟寄存器。 - * + *
* 支持以下表达式类型: *
* 通过 FlexibleSectionParser 按区块顺序解析函数的各个部分: * 函数头(名称)、参数列表、返回类型、函数体,并最终生成 FunctionNode。 * 支持在参数或返回类型声明中出现注释,自动跳过注释和空行而不干扰语法解析。 diff --git a/src/main/java/org/jcnc/snow/compiler/parser/utils/FlexibleSectionParser.java b/src/main/java/org/jcnc/snow/compiler/parser/utils/FlexibleSectionParser.java index 3143421..db5f9b6 100644 --- a/src/main/java/org/jcnc/snow/compiler/parser/utils/FlexibleSectionParser.java +++ b/src/main/java/org/jcnc/snow/compiler/parser/utils/FlexibleSectionParser.java @@ -10,10 +10,10 @@ import java.util.function.Predicate; /** * 通用的解析器,用于解析结构化的内容部分,完全解耦合关键字和语法。 - * + *
* FlexibleSectionParser 提供了一个灵活的机制来解析可变的语法块。每个语法块的解析逻辑通过外部提供, * 该类仅负责按顺序解析不同的区块,直到遇到结束标记,同时能够跳过并收集注释供后续使用。 - * + *
* 使用此类可以解析如函数定义中的多个部分(如参数、返回类型、函数体等),而无需在解析器中硬编码这些结构, * 并且保留注释信息以便 IDE 或工具链进行注释跳转、重构等操作。 */ diff --git a/src/main/java/org/jcnc/snow/vm/module/LocalVariableStore.java b/src/main/java/org/jcnc/snow/vm/module/LocalVariableStore.java index 8384aff..d1b56c0 100644 --- a/src/main/java/org/jcnc/snow/vm/module/LocalVariableStore.java +++ b/src/main/java/org/jcnc/snow/vm/module/LocalVariableStore.java @@ -5,6 +5,7 @@ import org.jcnc.snow.vm.utils.LoggingUtils; import org.jcnc.snow.vm.engine.VMMode; import java.util.ArrayList; +import java.util.Objects; /** * The {@code LocalVariableStore} represents a simple dynamically-sized @@ -107,11 +108,9 @@ public class LocalVariableStore { /** Mode-specific UI hook (unchanged). */ private void handleMode() { - switch (vmMode) { - case DEBUG -> - LocalVariableStoreSwing.display(this, "Local Variable Table"); - case RUN -> { /* no-op */ } - default -> { /* no-op */ } + /* no-op */ + if (Objects.requireNonNull(vmMode) == VMMode.DEBUG) { + LocalVariableStoreSwing.display(this, "Local Variable Table"); } } }