Mercurial > python-compiler.rs
view src/main.rs @ 22:25b202005d1d
Return a String from ast_dump instead of printing it directly.
author | Bastien Orivel <eijebong@bananium.fr> |
---|---|
date | Fri, 03 Jun 2016 19:00:09 +0200 |
parents | 38b0d63697b1 |
children | 5a7c3393382b |
line wrap: on
line source
extern crate cpython; mod python_tb; mod python_parse; mod python_dump; mod python_ast; mod ast_convert; mod ast_dump; //mod ast_scope; //mod ast_rewrite; //mod ast_type; use std::fs::File; use std::io::Read; fn main() { let filename = match std::env::args().nth(1) { Some(filename) => filename, None => { // TODO: use stderr instead. println!("USAGE: {} <filename> [filename…]", std::env::args().nth(0).unwrap()); std::process::exit(1); } }; let code = { let mut file = match File::open(&filename) { Ok(file) => file, Err(err) => { // TODO: use stderr instead. println!("Error while opening file “{}”: {}", filename, err); std::process::exit(2); } }; let mut code = String::new(); file.read_to_string(&mut code).unwrap(); code }; let module = match python_parse::parse_ast(code) { Ok(module) => module, Err(err) => { // TODO: use stderr instead. println!("Error while parsing file “{}”:", filename); python_tb::traceback(err); std::process::exit(3); } }; //python_dump::dump_module(&module); let module_ast = ast_convert::convert_ast("__main__".to_string(), &module); println!("{}", ast_dump::dump_ast(&module_ast)); //let scoped_ast = ast_scope::scope_ast(vec!(module_ast)); //println!("{:#?}", scoped_ast); //let new_scoped_ast = ast_scope::check_scoping(scoped_ast); //println!("{:#?}", new_scoped_ast); //ast_rewrite::rewrite_ast(module_ast); //ast_type::type_ast(scoped_ast); }