// #![feature(try_blocks)]
// #![feature(inner_deref)]
// #![feature(test)]
// extern crate test;

// mod gen {
//     use test::Bencher;
//
//     // use crate::gen::perflexer::PerfLexer;
//     // use crate::gen::perfparser::PerfParser;
//     // mod perflexer;
//     // mod perfparser;
//     // mod perflistener;
//
//     // #[cfg(not(debug_assertions))]
//     // #[test]
//     // fn performance(){
//     #[ignore]
//     // #[bench]
//     fn performance(_b: &mut Bencher) {
//         // b.iter(|| {
//         //     let lexer = PerfLexer::new(Box::new(InputStream::new(input.to_string())));
//         //     let source = CommonTokenStream::new(lexer);
//         //     let mut parser = PerfParser::new(Box::new(source));
//         //     let result = parser.stat().expect("oops");
//         // });
//     }
//
//     const input: &str = "\
// 		 between X1 and X2 or between X3 and X4 and
// 		 between X1 and X2 or between X3 and X4 and
// 		 between X1 and X2 or between X3 and X4 and
// 		 between X1 and X2 or between X3 and X4 and
// 		 between X1 and X2 or between X3 and X4 and
// 		 between X1 and X2 or between X3 and X4 and
// 		 between X1 and X2 or between X3 and X4 and
// 		 between X1 and X2 or between X3 and X4 and
// 		 between X1 and X2 or between X3 and X4 and
// 		 between X1 and X2 or between X3 and X4 and
// 		 between X1 and X2 or between X3 and X4 and
// 		 between X1 and X2 or between X3 and X4 and
// 		 between X1 and X2 or between X3 and X4 and
// 		 between X1 and X2 or between X3 and X4 and
// 		 between X1 and X2 or between X3 and X4
// 		 ;";
// }
