blob: 0e2f67b007a131e067e3c371e47d8226a79e435d [file] [log] [blame]
Nika Layzell38b03792017-10-24 08:56:31 -04001extern crate syn;
2
3use std::env;
4use std::fs::File;
5use std::io::{self, Read};
6
7fn main() {
8 let mut args = env::args();
9 let _ = args.next(); // executable name
10 let filename = args.next().unwrap_or_else(|| {
11 panic!("USAGE: dump-ast FILENAME");
12 });
13 if args.next().is_some() {
14 panic!("dump-ast only takes one argument");
15 }
16
17 let mut src = String::new();
18 if filename != "-" {
19 let mut file = File::open(&filename).expect("Unable to open source file");
David Tolnay51382052017-12-27 13:46:21 -050020 file.read_to_string(&mut src)
21 .expect("Unable to read input file");
Nika Layzell38b03792017-10-24 08:56:31 -040022 } else {
David Tolnay51382052017-12-27 13:46:21 -050023 io::stdin()
24 .read_to_string(&mut src)
25 .expect("Unable to read stdin");
Nika Layzell38b03792017-10-24 08:56:31 -040026 }
27
28 let ast = syn::parse_file(&src).expect("Unable to parse file");
29 println!("{:#?}", ast);
30}