2020-02-03 17:56:32 -05:00
|
|
|
#![allow(dead_code)]
|
|
|
|
|
|
2020-01-25 19:17:39 -05:00
|
|
|
mod common;
|
|
|
|
|
//mod syn;
|
|
|
|
|
mod vm;
|
|
|
|
|
|
2020-01-27 19:07:57 -05:00
|
|
|
use std::{
|
2020-02-09 13:04:56 -05:00
|
|
|
convert::TryFrom,
|
2020-01-27 19:07:57 -05:00
|
|
|
io::{self, Read},
|
|
|
|
|
process,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
type Result<T> = std::result::Result<T, Box<dyn std::error::Error>>;
|
|
|
|
|
|
|
|
|
|
fn get_input_string() -> io::Result<String> {
|
|
|
|
|
let mut buffer = String::new();
|
|
|
|
|
io::stdin().read_to_string(&mut buffer)?;
|
|
|
|
|
Ok(buffer)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fn main() -> Result<()> {
|
2020-02-09 13:04:56 -05:00
|
|
|
use vm::obj::syn::parser::SectionsParser;
|
2020-01-27 19:07:57 -05:00
|
|
|
let contents = get_input_string()?;
|
2020-02-09 13:04:56 -05:00
|
|
|
let ast = match SectionsParser::new().parse(&contents) {
|
2020-01-27 19:07:57 -05:00
|
|
|
Ok(ast) => ast,
|
|
|
|
|
Err(err) => {
|
|
|
|
|
eprintln!("{}", err);
|
|
|
|
|
process::exit(1);
|
2020-02-09 13:13:26 -05:00
|
|
|
}
|
2020-01-27 19:07:57 -05:00
|
|
|
};
|
2020-02-09 13:04:56 -05:00
|
|
|
let obj = vm::obj::obj::Object::try_from(&ast)?;
|
|
|
|
|
println!("{:#?}", obj);
|
2020-01-27 19:07:57 -05:00
|
|
|
Ok(())
|
2020-01-25 19:17:39 -05:00
|
|
|
}
|