34 lines
789 B
Rust
34 lines
789 B
Rust
use std::env;
|
|
use std::io::Write;
|
|
use std::process;
|
|
|
|
mod rlox;
|
|
use crate::rlox::rlox_interpreter::RLoxInterpreter;
|
|
|
|
// Exit codes from #include <sysexits.h>
|
|
const EX_OK: i32 = 0;
|
|
const EX_DATAERR: i32 = 65;
|
|
const EX_USAGE : i32 = 66;
|
|
|
|
fn main() {
|
|
let args: Vec<String> = env::args().collect();
|
|
|
|
let exit_code = match args.len() {
|
|
1 => { RLoxInterpreter::new().run_prompt() } ,
|
|
2 => { RLoxInterpreter::new().run_file(&args[1]) },
|
|
_ => {
|
|
println!("Usage : rlox [script]");
|
|
EX_USAGE
|
|
}
|
|
};
|
|
|
|
process::exit(exit_code);
|
|
}
|
|
|
|
|
|
// Implémentations de référence :
|
|
// https://github.com/munificent/craftinginterpreters/wiki/Lox-implementations#rust
|
|
|
|
// Pause :
|
|
// http://www.craftinginterpreters.com/scanning.html#lexical-errors
|