retoken_macros/
lib.rs

1use input::ast::Ast;
2use output::Output;
3use proc_macro::TokenStream;
4use quote::ToTokens;
5use syn::parse_macro_input;
6
7mod input;
8mod output;
9
10#[proc_macro]
11pub fn relex(input_tokens: TokenStream) -> TokenStream {
12    let ast = parse_macro_input!(input_tokens as Ast);
13
14    let output = match Output::new(ast) {
15        Ok(ok) => ok,
16        Err(err) => return err.into_compile_error().into(),
17    };
18
19    output.into_token_stream().into()
20}