M kabel/src/codegen.rs => kabel/src/codegen.rs +2 -5
@@ 97,12 97,10 @@ impl Codegen {
let breaks = self.break_stack.pop().expect("break stack empty on pop");
for loc in breaks {
- println!("{:?}", self.scopes);
self.patch_jump(loc, 0);
}
let continues = self.continue_stack.pop().expect("continue stack empty on pop");
for loc in continues {
- println!("{:?}", self.scopes);
let jump = loc - end_jmp + 2;
self.vm.chunk[loc] = ((jump >> 8) & 0xFF) as u8;
self.vm.chunk[loc + 1] = (jump & 0xFF) as u8;
@@ 184,10 182,9 @@ impl Codegen {
self.vm.lines.last_mut().unwrap().1 += 3;
}
+ println!("jmp: {}", self.vm.chunk.len());
self.patch_jump(start_jmp_loc, 0);
- if let ASTType::Block(ref stmts) = ast.ast_type {
- self.visit_block(&ast, stmts.clone(), ScopeType::If);
- }
+ self.visit(ast);
self.patch_jump(end_jmp_loc, 0);
}
ASTType::Block(_) => {
M kabel/src/main.rs => kabel/src/main.rs +0 -1
@@ 54,7 54,6 @@ fn main() {
let mut vm = codegen.vm;
output += &debug_bytecode(&vm);
output += "\n";
- println!("{}", output);
output += "\n";
match vm.run(&mut output) {
M kabel/src/vm.rs => kabel/src/vm.rs +0 -1
@@ 272,7 272,6 @@ impl VM {
0xFD => { // POP
let times = self.read();
for _ in 0..times {
- println!("{:?}", self.stack);
self.stack.pop().expect(&format!("{}: Unable to pop stack", self.ip));
}
}
A kabel/test/runtime/fizzbuzz.kab => kabel/test/runtime/fizzbuzz.kab +6 -0
@@ 0,0 1,6 @@
+for (var i = 1; i < 101; i++) {
+ if (i % 3 != 0 && i % 5 != 0) { print i; }
+ else if (i % 3 == 0 && i % 5 != 0) { print "Fizz"; }
+ else if (i % 3 != 0 && i % 5 == 0) { print "Buzz"; }
+ else if (i % 3 == 0 && i % 5 == 0) { print "FizzBuzz"; }
+}
A kabel/test/runtime/fizzbuzz.out => kabel/test/runtime/fizzbuzz.out +100 -0
@@ 0,0 1,100 @@
+1
+2
+Fizz
+4
+Buzz
+Fizz
+7
+8
+Fizz
+Buzz
+11
+Fizz
+13
+14
+FizzBuzz
+16
+17
+Fizz
+19
+Buzz
+Fizz
+22
+23
+Fizz
+Buzz
+26
+Fizz
+28
+29
+FizzBuzz
+31
+32
+Fizz
+34
+Buzz
+Fizz
+37
+38
+Fizz
+Buzz
+41
+Fizz
+43
+44
+FizzBuzz
+46
+47
+Fizz
+49
+Buzz
+Fizz
+52
+53
+Fizz
+Buzz
+56
+Fizz
+58
+59
+FizzBuzz
+61
+62
+Fizz
+64
+Buzz
+Fizz
+67
+68
+Fizz
+Buzz
+71
+Fizz
+73
+74
+FizzBuzz
+76
+77
+Fizz
+79
+Buzz
+Fizz
+82
+83
+Fizz
+Buzz
+86
+Fizz
+88
+89
+FizzBuzz
+91
+92
+Fizz
+94
+Buzz
+Fizz
+97
+98
+Fizz
+Buzz
M kabel/test/syntax/no_semicolon.out => kabel/test/syntax/no_semicolon.out +1 -1
@@ 1,3 1,3 @@
-Error 0002: Expected ; found print at line 3, column 1
+Error 0002: Expected ; but found print at line 3, column 1
print("call");
^
M kabel/tmp.kab => kabel/tmp.kab +6 -1
@@ 1,1 1,6 @@
-print f"kabel is not py";
+for (var i = 1; i < 101; i++) {
+ if (i % 3 != 0 && i % 5 != 0) { print i; }
+ else if (i % 3 == 0 && i % 5 != 0) { print "Fizz"; }
+ else if (i % 3 != 0 && i % 5 == 0) { print "Buzz"; }
+ else if (i % 3 == 0 && i % 5 == 0) { print "FizzBuzz"; }
+}