Parseur d'expression et affichage du résultat avec l'ASTPrinter.
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user