blob: 46ad77b95cb3564fbcdd52bde27b568d62b29fc0 [file] [edit]
use diagnostics::Diagnostics;
use parser::coverage::Coverage;
use tracing_subscriber::layer::SubscriberExt;
use tracing_subscriber::util::SubscriberInitExt;
fn main() {
let filter = tracing_subscriber::EnvFilter::builder()
.with_env_var("GRAMMAR_LOG")
.with_default_directive(tracing_subscriber::filter::LevelFilter::INFO.into())
.from_env_lossy();
tracing_subscriber::registry()
.with(filter)
.with(
tracing_tree::HierarchicalLayer::new(2)
.with_writer(std::io::stderr)
.with_ansi(std::io::IsTerminal::is_terminal(&std::io::stderr())),
)
.init();
let src = r###"r"test""###;
let mut diag = Diagnostics::new();
let grammar = grammar::load_grammar(&mut diag);
let mut coverage = Coverage::default();
let ts = match parser::lexer::tokenize(&grammar, &mut coverage, src) {
Ok(ts) => ts,
Err(e) => {
eprintln!("error: {}", e.display(src));
std::process::exit(1);
}
};
for token in ts.tokens {
eprintln!(
"{} {:?}: `{}`",
token.name,
token.range.clone(),
&src[token.range]
);
}
}