1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
mod c; pub use c::C; mod go; pub use go::Go; pub trait Target { fn get_name(&self) -> char; fn prelude(&self) -> String; fn postlude(&self) -> String; fn begin_entry_point(&self, var_size: i32, heap_size: i32) -> String; fn end_entry_point(&self) -> String; fn push(&self, n: f64) -> String; fn add(&self) -> String; fn subtract(&self) -> String; fn multiply(&self) -> String; fn divide(&self) -> String; fn sign(&self) -> String; fn allocate(&self) -> String; fn free(&self) -> String; fn store(&self, size: i32) -> String; fn load(&self, size: i32) -> String; fn fn_header(&self, name: String) -> String; fn fn_definition(&self, name: String, body: String) -> String; fn call_fn(&self, name: String) -> String; fn call_foreign_fn(&self, name: String) -> String; fn begin_while(&self) -> String; fn end_while(&self) -> String; fn compile(&self, code: String) -> std::io::Result<()>; }