rerust/
lib.rs

1use analysis::visitor::ReVisitor;
2use codegen::generate;
3use parser::ReBlock;
4use petgraph::dot::Dot;
5use proc_macro::TokenStream;
6use syn::parse_macro_input;
7
8mod analysis;
9mod codegen;
10mod parser;
11
12#[proc_macro]
13pub fn rerust(input: TokenStream) -> TokenStream {
14    let input = parse_macro_input!(input as ReBlock);
15    let mut visitor = ReVisitor::new();
16    let result = visitor.visit_reblock(&input);
17    if result.is_err() {
18        return result.unwrap_err().to_compile_error().into();
19    }
20    let graph = visitor.reactive_graph();
21    //println!("{:#?}", Dot::new(&graph));
22    generate(&graph).into()
23}