1#![allow(non_snake_case)]
2#![recursion_limit = "150"]
3
4extern crate itertools;
5extern crate proc_macro;
6extern crate proc_macro2;
7#[macro_use]
8extern crate syn;
9#[macro_use]
10extern crate quote;
11
12#[allow(non_snake_case)]
13#[proc_macro_derive(FromPest, attributes(pest_ast))]
14pub fn derive_FromPest(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
15 syn::parse(input)
17 .and_then(from_pest::derive)
18 .unwrap_or_else(|err| err.to_compile_error())
19 .into()
22}
23
24mod attributes;
25mod from_pest;
26
27#[cfg(feature = "trace")]
28fn trace(t: proc_macro2::TokenStream) -> proc_macro2::TokenStream {
29 quote! { ::from_pest::log::trace!( #t ); }
30}
31
32#[cfg(not(feature = "trace"))]
33fn trace(_t: proc_macro2::TokenStream) -> proc_macro2::TokenStream {
34 quote! {}
35}