blob: 584fe3cabfc36ac420ab52ce141324a31bf39570 [file] [log] [blame]
//! Parse a Rust source file into a `syn::File` and print out a debug
//! representation of the syntax tree.
//!
//! Use the following command from this directory to test this program by
//! running it on its own source code:
//!
//! cargo run -- main.rs
//!
//! The output will begin with:
//!
//! File {
//! shebang: None,
//! attrs: [
//! Attribute {
//! pound_token: Pound,
//! style: Inner(
//! ...
//! }
extern crate syn;
use std::env;
use std::fs::File;
use std::io::Read;
use std::process;
fn main() {
let mut args = env::args();
let _ = args.next(); // executable name
let filename = match (args.next(), args.next()) {
(Some(filename), None) => filename,
_ => {
eprintln!("Usage: dump-syntax path/to/filename.rs");
process::exit(1);
}
};
let mut file = File::open(&filename).expect("Unable to open file");
let mut src = String::new();
file.read_to_string(&mut src).expect("Unable to read file");
let syntax = syn::parse_file(&src).expect("Unable to parse file");
println!("{:#?}", syntax);
}