extern crate gll;
extern crate proc_macro;
use gll::generate::rust::Options;
use proc_macro::TokenStream;
fn options() -> Options {
let mut options = Options::default();
options.no_macros = true;
options
}
#[proc_macro]
pub fn scannerless_parser(input: TokenStream) -> TokenStream {
input
.to_string()
.parse::<gll::scannerless::Grammar>()
.unwrap()
.generate_rust_with_options(options())
.parse()
.unwrap()
}
#[proc_macro]
pub fn proc_macro_parser(input: TokenStream) -> TokenStream {
let mut grammar = gll::proc_macro::builtin();
grammar.extend(input.to_string().parse().unwrap());
grammar
.generate_rust_with_options(options())
.parse()
.unwrap()
}