Parseur d'expression et affichage du résultat avec l'ASTPrinter.

This commit is contained in:
2024-05-16 22:45:40 +02:00
parent 72ef4e3bbf
commit b4d2170eb4
4 changed files with 230 additions and 10 deletions

View File

@@ -1,6 +1,9 @@
use std::{fs, io};
use crate::EX_OK;
use std::io::Write;
use crate::astprinter::ASTPrinter;
use crate::expr::ExprVisitor;
use crate::parser::Parser;
use crate::scanner::Scanner;
@@ -40,15 +43,15 @@ impl RLoxInterpreter {
fn run(&self, src: String) -> i32 {
let mut scanner = Scanner::new( src );
scanner.scan_tokens();
let mut current_line = 0;
for t in scanner.tokens {
if t.line!=current_line {
current_line = t.line;
println!("-- line {} --------------------", current_line);
}
println!("{}\t{}\t{}", t.token_type, t.lexeme, t.literal);
let mut parser = Parser::new( scanner.tokens );
match parser.parse() {
Some(expr) => {
let printer = ASTPrinter;
printer.visit_expr(&expr);
},
None => println!("An error occurred while parsing expression.")
}
EX_OK