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}