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:
Vincent Ambo 2021-01-18 03:21:52 +03:00 committed by tazjin
parent d6d3c12efb
commit 1ff7a2686c
8 changed files with 125 additions and 102 deletions

View file

@ -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,