虚拟机¶
jaon/vm.py 实现了一个栈式虚拟机,负责解释执行 Bytecode。
核心组件¶
操作数栈:存放运算过程中的中间值
调用帧(CallFrame):每个函数调用对应一个帧,包含局部变量、指令指针等
全局环境:存放顶层变量、类、内建函数
类与实例模型:
JaonClass、JaonInstance、JaonMethod
对象模型¶
JaonFunction:用户定义函数JaonMethod:绑定到实例的方法JaonClass:类定义,包含方法与字段JaonInstance:类的实例
执行流程¶
从模块
CodeObject创建初始调用帧循环取出指令并执行
函数调用时压入新帧
返回时弹出帧并将结果压入调用者栈
遇到
THROW或运行时错误时沿调用栈传播异常
使用示例¶
from jaon.lexer import tokenize
from jaon.parser import parse
from jaon.analyzer import analyze
from jaon.compiler import compile_program
from jaon.vm import execute
tokens = tokenize('println("Hello");')
program = parse(tokens)
analyze(program)
compiler = compile_program(program)
execute(compiler.module_code)