Variables globales (déclaration, affectation avec une expression et évaluation)

This commit is contained in:
2024-06-03 08:04:53 +02:00
parent de653f9bc5
commit e121ba2160
7 changed files with 154 additions and 32 deletions

View File

@@ -2,7 +2,6 @@ use std::{env, fs, io};
use std::io::Write;
use std::process;
use crate::astprinter::ASTPrinter;
use crate::expr::ExprVisitor;
use crate::interpreter::Interpreter;
use crate::parser::Parser;
@@ -14,15 +13,16 @@ mod expr;
mod astprinter;
mod parser;
mod stmt;
mod environment;
use crate::scanner::Scanner;
use crate::stmt::{Statement, StatementVisitor};
// Exit codes from #include <sysexits.h>
const EX_OK: i32 = 0;
const EX_DATAERR: i32 = 65;
//const EX_DATAERR: i32 = 65;
const EX_USAGE : i32 = 66;
const EX_EXECERR: i32 = 70;
//const EX_EXECERR: i32 = 70;
fn main() {
let args: Vec<String> = env::args().collect();
@@ -81,15 +81,17 @@ fn run(src: String) -> i32 {
match s {
Statement::Expression(e) => { printer.visit_expr_stmt(&e) }
Statement::Print(p) => { printer.visit_print(&p) }
Statement::Var(v) => { printer.visit_var_stmt(&v) }
}
}
println!("Interpretation");
let mut interpreter = Interpreter;
let mut interpreter = Interpreter::new();
for s in program {
match s {
Statement::Expression(e) => { interpreter.visit_expr_stmt(&e) }
Statement::Print(p) => { interpreter.visit_print(&p) }
Statement::Var(v) => { interpreter.visit_var_stmt(&v) }
}
}