diff --git a/src/main/java/org/jcnc/snow/compiler/backend/generator/CallGenerator.java b/src/main/java/org/jcnc/snow/compiler/backend/generator/CallGenerator.java index 15957a1..58d721d 100644 --- a/src/main/java/org/jcnc/snow/compiler/backend/generator/CallGenerator.java +++ b/src/main/java/org/jcnc/snow/compiler/backend/generator/CallGenerator.java @@ -10,42 +10,46 @@ import org.jcnc.snow.compiler.ir.value.IRConstant; import org.jcnc.snow.compiler.ir.value.IRVirtualRegister; import org.jcnc.snow.vm.engine.VMOpCode; -import java.util.*; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; /** * {@code CallGenerator} 负责将 IR 层的 {@link CallInstruction} 生成对应的 VM 层函数调用指令。 *
- * 支持: - *
- * 对于 syscall 子命令,支持常量字符串和字符串寄存器两种来源,并支持寄存器-字符串常量池注册机制。 + * 支持 syscall、普通函数调用、一维/多维数组下标访问、以及字符串常量池绑定等功能。 *
+ * 用于多维数组的链式下标访问(如 arr[1][2]),保证中间结果是“可被再次下标”的引用。 + *
+ * 尝试将表达式节点 {@code expr} 折叠为常量值,用于编译期计算/优化。 + *
+ * 支持普通函数调用(foo(a, b))与成员方法调用(obj.method(a, b))。 + *
+ * 遍历并递归处理数组字面量的所有元素: + *
Instruction format: {@code R_PUSH }
Behavior:
- * Supported element types in array literals include integers, floating-point numbers, booleans, - * and quoted strings (surrounded by double quotes). + * Example usages: + *
+ * Supported element types in array literals include integers, floating-point numbers (parsed as {@code Double}), + * booleans ({@code true}/{@code false} → {@code 1}/{@code 0}), quoted strings (surrounded by double quotes), + * and further nested arrays. *