Add simple and very rough interpreter

- Implemented an interpreter that
  - Only works with int64 values
  - Executes maths expressions
  - Declares and assigns variables in global table
  - Can use variables in expressions
  - Debug prints expression only statements
  - Can NOT use, or declare functions
This commit is contained in:
2021-12-24 02:25:27 +01:00
parent 6bd58a4ecb
commit 623fa71355
3 changed files with 104 additions and 5 deletions

View File

@@ -4,9 +4,9 @@ use plang2_lib::*;
fn main() {
let code = r#"
a = 54 * 3;
b = 5;
print("{}", a + b);
let a = 5 * 3;
let b = 5;
(a + b * 3) / 5;
"#;
let mut lexer = Lexer::new(code);
@@ -16,8 +16,12 @@ fn main() {
println!("Tokens: \n{}\n", tokens);
let mut parser = Parser::new(tokens);
let expr = parser.parse().unwrap();
let prog = parser.parse().unwrap();
println!("{:#?}", expr);
println!("{:#?}\n\n", prog);
let mut interpreter = Interpreter::new(prog);
interpreter.run();
}