clean
This commit is contained in:
parent
4fa6cd9ae0
commit
bfafb46f38
|
|
@ -473,6 +473,7 @@ impl<'a> FuncBuild<'a> {
|
||||||
Val::Nil
|
Val::Nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Expr::If(cond, true_case, false_case) => todo!(),
|
||||||
|
|
||||||
/* captured literal */
|
/* captured literal */
|
||||||
Expr::Literal(lit) if do_yield => {
|
Expr::Literal(lit) if do_yield => {
|
||||||
|
|
@ -629,8 +630,6 @@ impl<'a> FuncBuild<'a> {
|
||||||
Expr::LessThanOrEqualTo(l, r) => {
|
Expr::LessThanOrEqualTo(l, r) => {
|
||||||
self.translate(Expr::GreaterThanOrEqualTo(r, l), do_compute, false)
|
self.translate(Expr::GreaterThanOrEqualTo(r, l), do_compute, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
e => unimplemented!("{e:?}"),
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,21 +9,25 @@ mod parser;
|
||||||
mod vm;
|
mod vm;
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
|
// lexer (iterator)
|
||||||
let script = std::fs::read_to_string("./start.lf").unwrap();
|
let script = std::fs::read_to_string("./start.lf").unwrap();
|
||||||
let lexer = Lexer::new(script.chars());
|
let lexer = Lexer::new(script.chars());
|
||||||
let mut parser = Parser::new(lexer.map(Result::unwrap));
|
let mut parser = Parser::new(lexer.map(Result::unwrap));
|
||||||
|
|
||||||
|
// parser
|
||||||
let start = Instant::now();
|
let start = Instant::now();
|
||||||
let block = parser.parse().unwrap();
|
let block = parser.parse().unwrap();
|
||||||
println!("Parse took {:?}", start.elapsed());
|
println!("Parse took {:?}", start.elapsed());
|
||||||
let mut e = parser::Expr::Block(block);
|
let mut e = parser::Expr::Block(block);
|
||||||
parser::util::display(&e);
|
parser::util::display(&e);
|
||||||
|
|
||||||
|
// compiler - analysis
|
||||||
let start = Instant::now();
|
let start = Instant::now();
|
||||||
compiler::analysis_demo(&mut e);
|
compiler::analysis_demo(&mut e);
|
||||||
println!("Analysis took {:?}", start.elapsed());
|
println!("Analysis took {:?}", start.elapsed());
|
||||||
parser::util::display(&e);
|
parser::util::display(&e);
|
||||||
|
|
||||||
|
// compiler - translation
|
||||||
let start = Instant::now();
|
let start = Instant::now();
|
||||||
let insts = compiler::translation_demo(e);
|
let insts = compiler::translation_demo(e);
|
||||||
println!("Translation took {:?}", start.elapsed());
|
println!("Translation took {:?}", start.elapsed());
|
||||||
|
|
@ -31,6 +35,7 @@ fn main() {
|
||||||
println!("=> {i:?}");
|
println!("=> {i:?}");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// vm
|
||||||
println!("Starting VM!!!!!!!!!!!!!!!!");
|
println!("Starting VM!!!!!!!!!!!!!!!!");
|
||||||
let start = Instant::now();
|
let start = Instant::now();
|
||||||
let out = vm::run(&insts);
|
let out = vm::run(&insts);
|
||||||
|
|
|
||||||
|
|
@ -46,8 +46,6 @@ impl<'a> FuncVm<'a> {
|
||||||
while pc < insts.len() {
|
while pc < insts.len() {
|
||||||
let inst = &insts[pc];
|
let inst = &insts[pc];
|
||||||
|
|
||||||
// println!("{}> {:?} {inst:?}", "=".repeat(self.depth), self.locals);
|
|
||||||
|
|
||||||
match inst {
|
match inst {
|
||||||
/* rhs */
|
/* rhs */
|
||||||
Not(a) | Return(a) => {
|
Not(a) | Return(a) => {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue