compile_claw/
lib.rs

1use claw_codegen::generate;
2use claw_common::{make_source, OkPretty};
3use claw_parser::{parse, tokenize};
4use claw_resolver::{resolve, wit::ResolvedWit};
5use wit_parser::Resolve;
6
7pub fn compile(source_name: String, source_code: &str, wit: Resolve) -> Option<Vec<u8>> {
8    let src = make_source(source_name.as_str(), source_code);
9
10    let tokens = tokenize(src.clone(), source_code).ok_pretty()?;
11
12    let ast = parse(src.clone(), tokens).ok_pretty()?;
13
14    let wit = ResolvedWit::new(wit);
15
16    let resolved = resolve(src, ast, wit).ok_pretty()?;
17
18    generate(&resolved).ok_pretty()
19}