1extern crate proc_macro;
2extern crate proc_macro2;
3extern crate quote;
4extern crate proc_macro_hack;
5
6use proc_macro::TokenStream;
7use proc_macro_hack::proc_macro_hack;
8
9use parse::{parse_spanned, parse_unspanned};
10use compile::compile;
11
12mod buffer;
13mod error;
14mod parse;
15mod language;
16mod compile;
17
18#[proc_macro_hack]
19pub fn mquote(input: TokenStream) -> TokenStream {
20 match parse_unspanned(input.into()) {
21 Ok(qtokens) => compile(qtokens, None).into(),
22 Err(error) => error.raise().into(),
23 }
24}
25
26#[proc_macro_hack]
27pub fn mquote_spanned(input: TokenStream) -> TokenStream {
28 match parse_spanned(input.into()) {
29 Ok((requested_span, qtokens)) => compile(qtokens, Some(requested_span)).into(),
30 Err(error) => error.raise().into(),
31 }
32}