Mercurial > python-compiler.rs
annotate src/main.rs @ 88:5923cd4bfc36
Remove bitrotten code.
author | Emmanuel Gil Peyrot <linkmauve@linkmauve.fr> |
---|---|
date | Wed, 22 Jun 2016 23:09:12 +0100 |
parents | d255a932553f |
children | 4e62a8927dcc |
rev | line source |
---|---|
0 | 1 extern crate cpython; |
2 | |
62
d255a932553f
Fix a few warnings.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
23
diff
changeset
|
3 #[cfg(test)] |
23
5a7c3393382b
Add a simple test for ast.Assign.
Bastien Orivel <eijebong@bananium.fr>
parents:
22
diff
changeset
|
4 mod tests; |
5a7c3393382b
Add a simple test for ast.Assign.
Bastien Orivel <eijebong@bananium.fr>
parents:
22
diff
changeset
|
5 |
0 | 6 mod python_tb; |
7 mod python_parse; | |
8 mod python_ast; | |
9 mod ast_convert; | |
10 mod ast_dump; | |
13
38b0d63697b1
Import the full AST grammar from CPython 3.5.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
9
diff
changeset
|
11 //mod ast_scope; |
0 | 12 //mod ast_rewrite; |
9
fa7e285f88e7
Add a scoping pass, associating each module/statement with a block.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
0
diff
changeset
|
13 //mod ast_type; |
0 | 14 |
15 use std::fs::File; | |
16 use std::io::Read; | |
17 | |
18 fn main() { | |
19 let filename = match std::env::args().nth(1) { | |
20 Some(filename) => filename, | |
21 None => { | |
22 // TODO: use stderr instead. | |
23 println!("USAGE: {} <filename> [filename…]", std::env::args().nth(0).unwrap()); | |
24 std::process::exit(1); | |
25 } | |
26 }; | |
27 | |
28 let code = { | |
29 let mut file = match File::open(&filename) { | |
30 Ok(file) => file, | |
31 Err(err) => { | |
32 // TODO: use stderr instead. | |
33 println!("Error while opening file “{}”: {}", filename, err); | |
34 std::process::exit(2); | |
35 } | |
36 }; | |
37 let mut code = String::new(); | |
38 file.read_to_string(&mut code).unwrap(); | |
39 code | |
40 }; | |
41 | |
42 let module = match python_parse::parse_ast(code) { | |
43 Ok(module) => module, | |
44 Err(err) => { | |
45 // TODO: use stderr instead. | |
46 println!("Error while parsing file “{}”:", filename); | |
47 python_tb::traceback(err); | |
48 std::process::exit(3); | |
49 } | |
50 }; | |
51 | |
52 let module_ast = ast_convert::convert_ast("__main__".to_string(), &module); | |
22
25b202005d1d
Return a String from ast_dump instead of printing it directly.
Bastien Orivel <eijebong@bananium.fr>
parents:
13
diff
changeset
|
53 println!("{}", ast_dump::dump_ast(&module_ast)); |
13
38b0d63697b1
Import the full AST grammar from CPython 3.5.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
9
diff
changeset
|
54 //let scoped_ast = ast_scope::scope_ast(vec!(module_ast)); |
38b0d63697b1
Import the full AST grammar from CPython 3.5.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
9
diff
changeset
|
55 //println!("{:#?}", scoped_ast); |
38b0d63697b1
Import the full AST grammar from CPython 3.5.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
9
diff
changeset
|
56 //let new_scoped_ast = ast_scope::check_scoping(scoped_ast); |
38b0d63697b1
Import the full AST grammar from CPython 3.5.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
9
diff
changeset
|
57 //println!("{:#?}", new_scoped_ast); |
0 | 58 //ast_rewrite::rewrite_ast(module_ast); |
9
fa7e285f88e7
Add a scoping pass, associating each module/statement with a block.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
0
diff
changeset
|
59 //ast_type::type_ast(scoped_ast); |
0 | 60 } |