blob: 89e205a70bd3acce6c59d74b4ea101a02d2e07d4 (
plain) (
blame)
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
42
43
44
|
mod bytecode;
mod data;
mod encoding;
mod heap;
use std::fs::File;
fn usage() {
println!("Usage: bytecode <file>");
}
fn main() {
let filepath = match std::env::args().nth(1) {
Some(x) => x,
None => {
usage();
std::process::exit(255);
}
};
let prog = {
let mut file = match File::open(filepath) {
Ok(x) => x,
Err(err) => {
println!("Can't open file for reading: {}", err);
std::process::exit(255);
}
};
match encoding::decode(&mut file) {
Ok(x) => x,
Err(err) => {
println!("Invalid bytecode: {}", err);
std::process::exit(255);
}
}
};
let exit_code = match bytecode::eval(&prog) {
Ok(x) => x,
Err(err) => {
println!("{}", err);
std::process::exit(255);
}
};
std::process::exit(i32::from(exit_code));
}
|