use emit::Context;
use crate::prelude::*;
mod emit;
mod parse;
mod reparse;
pub use parse::Input;
pub(super) fn run(input: Input) -> TokenStream {
let mut diag = TokenStream::new();
let (cx, grammars) = Context::new(input, &mut diag);
let items = cx.emit(&grammars);
[diag, items].into_iter().collect()
}