crisp_macro/lib.rs
1use crisp_runtime::{parsing::*, transpile_to_rust};
2use pest::Parser;
3use proc_macro::TokenStream;
4use quote::quote;
5
6#[proc_macro]
7pub fn crisp(input: TokenStream) -> TokenStream {
8 let ts_str = input.to_string();
9 let parsed_ts = CrispParser::parse(Rule::program, &ts_str).expect("Parsing failed.");
10 let parsed_crisp = transpile_to_rust(parsed_ts);
11 TokenStream::from(quote! {
12 #parsed_crisp
13 })
14}