diff --git a/Cargo.toml b/Cargo.toml index 10d9811..aeae3bc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,6 +16,11 @@ path = "src/main.rs" [dependencies] lalrpop-util = "0.17.0" regex = "0.2.1" +measure_time = "0.6" # To mesure parsing time, only required by binary + +# Logging macros API +log = { version = "0.4", features = ["max_level_trace", "release_max_level_debug"] } +pretty_env_logger = "0.3" # Logger implementation [build-dependencies] lalrpop = "0.17.0" diff --git a/src/main.rs b/src/main.rs index de9a830..30b27b0 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,3 +1,6 @@ +#[macro_use] +extern crate measure_time; + extern crate parser; use parser::queries; @@ -5,11 +8,17 @@ use parser::queries; use std::io; fn main() { + // If RUST_LOG is unset, set it to INFO, otherwise keep it as-is. + if std::env::var("RUST_LOG").is_err() { + std::env::set_var("RUST_LOG", "info"); + } + pretty_env_logger::init(); + //let parser = queries::FiltersParser::new(); let parser = queries::QueryParser::new(); loop { - println!("\n> Expression to parse (type `quit` to exit): "); + info!("Expression to parse (type `quit` to exit): "); let mut input = String::new(); @@ -23,6 +32,13 @@ fn main() { if input.trim().eq_ignore_ascii_case("quit") { break; } - println!("\n> Tree: \n{:?}", parser.parse(input.as_str())); + + let input = input.as_str(); + let mut out; + { + debug_time!("Parsing"); + out = parser.parse(input); + } + info!("Tree: \n{:?}", out); } }