refactor(tazjin/rlox): Add Interpreter trait for switching impls
Change-Id: Iae28d64ce879014c5e5d7e145c536c1f16ad307d Reviewed-on: https://cl.tvl.fyi/c/depot/+/2418 Reviewed-by: tazjin <mail@tazj.in> Tested-by: BuildkiteCI
This commit is contained in:
parent
d6d3c12efb
commit
1ff7a2686c
8 changed files with 125 additions and 102 deletions
|
|
@ -32,7 +32,7 @@ macro_rules! binary_op {
|
|||
}
|
||||
|
||||
impl VM {
|
||||
fn run(&mut self) -> LoxResult<()> {
|
||||
fn run(&mut self) -> LoxResult<Value> {
|
||||
loop {
|
||||
let op = &self.chunk.code[self.ip];
|
||||
|
||||
|
|
@ -42,10 +42,7 @@ impl VM {
|
|||
self.ip += 1;
|
||||
|
||||
match op {
|
||||
OpCode::OpReturn => {
|
||||
println!("{:?}", self.pop());
|
||||
return Ok(());
|
||||
}
|
||||
OpCode::OpReturn => return Ok(self.pop()),
|
||||
|
||||
OpCode::OpConstant(idx) => {
|
||||
let c = *self.chunk.constant(*idx);
|
||||
|
|
@ -66,7 +63,7 @@ impl VM {
|
|||
}
|
||||
}
|
||||
|
||||
pub fn interpret(chunk: chunk::Chunk) -> LoxResult<()> {
|
||||
pub fn interpret(chunk: chunk::Chunk) -> LoxResult<Value> {
|
||||
let mut vm = VM {
|
||||
chunk,
|
||||
ip: 0,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue