()
| 82 | type Result<T> = result::Result<T, Box<error::Error + Send + Sync>>; |
| 83 | |
| 84 | fn main() { |
| 85 | let mut args: Args = Docopt::new(USAGE) |
| 86 | .and_then(|d| d.deserialize()) |
| 87 | .unwrap_or_else(|e| e.exit()); |
| 88 | if args.flag_dfa_reverse { |
| 89 | args.flag_dfa = true; |
| 90 | } |
| 91 | match run(&args) { |
| 92 | Ok(_) => process::exit(0), |
| 93 | Err(err) => { |
| 94 | let _ = writeln!(&mut io::stderr(), "{}", err); |
| 95 | process::exit(1) |
| 96 | } |
| 97 | } |
| 98 | } |
| 99 | |
| 100 | fn run(args: &Args) -> Result<()> { |
| 101 | if args.cmd_ast { |