1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
use super::parser::Parser;
#[derive(Debug)]
pub struct Interpreter {
file_name: String,
content: String,
imports: Vec<Box<Interpreter>>,
parser: Parser,
}
impl Interpreter {
pub fn new(arg_file_name: String, arg_content: String,) -> Interpreter {
Interpreter {
file_name: arg_file_name.clone(),
content: arg_content.clone(),
imports: vec![],
parser: Parser::new(arg_file_name, arg_content.clone()),
}
}
pub fn get_name(&self) -> String { return self.file_name.clone();}
pub fn run(&mut self) -> i32 {
let parser_result = self.parser.parse();
match parser_result {
Ok(_) => 0,
Err(vec) => {
for e in vec {
println!("{}", e);
}
return 1;
},
}
}
}