#include "../../emit.h" #include #include void rer_emit_error(const char *str, i32 length, i32 line) { printf("Error at line: %d > %.*s\n ", line, length, str); exit(1); } void rer_mem(u32 a) { USED(a); } void rer_prolog() { } void rer_epilogue() { } void rer_emit_add() { } void rer_emit_sub() { } void rer_emit_mul() { } void rer_emit_div() { } void rer_emit_lt() { } void rer_emit_le() { } void rer_emit_gt() { } void rer_emit_ge() { } void rer_emit_ne() { } void rer_emit_eq() { } void rer_emit_false() { } void rer_emit_true() { } void rer_emit_nil() { } void rer_emit_neg() { } void rer_emit_not() { } void rer_emit_void() { } i32 rer_emit_bool_type(const char *str, i32 length) { USED(str);USED(length); return 1; } i32 rer_emit_byte_type(const char *str, i32 length) { USED(str);USED(length); return 1; } i32 rer_emit_int_type(const char *str, i32 length) { USED(str);USED(length); return 2; } i32 rer_emit_nat_type(const char *str, i32 length) { USED(str);USED(length); return 2; } i32 rer_emit_real_type(const char *str, i32 length) { USED(str);USED(length); return 2; } i32 rer_emit_str_type(const char *str, i32 length) { USED(str);USED(length); return 2; } i32 rer_emit_u8_type(const char *str, i32 length) { USED(str);USED(length); return 1; } i32 rer_emit_i8_type(const char *str, i32 length) { USED(str);USED(length); return 1; } i32 rer_emit_i16_type(const char *str, i32 length) { USED(str);USED(length); return 2; } i32 rer_emit_u16_type(const char *str, i32 length) { USED(str);USED(length); return 2; } i32 rer_emit_i32_type(const char *str, i32 length) { USED(str);USED(length); return 4; } i32 rer_emit_u32_type(const char *str, i32 length) { USED(str);USED(length); return 4; } i32 rer_emit_f32_type(const char *str, i32 length) { USED(str);USED(length); return 4; } void rer_emit_int(const char *str, i32 length) { i32 i = (i32)strtol(str, nil, 10); printf("#%04x ", i); USED(length); } void rer_emit_nat(const char *str, i32 length) { u32 i = (u32)strtol(str, nil, 10); printf("#%04x ", i); USED(length); } void rer_emit_real(const char *str, i32 length) { USED(str); USED(length); /// TODO: implement this } void rer_emit_byte(const char *str, i32 length) { u8 i = (u8)strtol(str, nil, 10); printf("#%04x ", i); USED(length); } void rer_emit_str(const char *str, i32 length) { printf("\"%.*s ", length, str); } void rer_emit_constant(const char *str, i32 length) { printf(";%.*s STA2 ", length, str); } void rer_emit_array() { } void rer_emit_function() { } void rer_emit_plex() { } void rer_emit_method() { } void rer_emit_trait() { } void rer_emit_const() { } void rer_emit_print() { printf("print "); } void rer_emit_open_paren() { } void rer_emit_close_paren() { } void rer_emit_variable(Symbol *sym) { printf(";%.*s LDA2 ", sym->name_length, sym->name); } void rer_emit_write() { } void rer_emit_read() { } void rer_emit_open() { } void rer_emit_close() { } void rer_emit_stat() { } void rer_emit_end_statement() { } void rer_emit_set_value() { } void rer_emit_plex_def() { } void rer_emit_cast_int_to_nat() { } void rer_emit_cast_int_to_real() { } void rer_emit_cast_int_to_str() { } void rer_emit_cast_nat_to_int() { } void rer_emit_cast_nat_to_real() { } void rer_emit_cast_nat_to_str() { } void rer_emit_cast_real_to_int() { } void rer_emit_cast_real_to_nat() { } void rer_emit_cast_real_to_str() { } void rer_emit_strbuf_init() { } void rer_emit_strbuf_append() { } void rer_emit_strbuf_to_str() { } void rer_emit_arena_fn_call() { } void rer_emit_arena_fn_return_plex() { } void rer_emit_arena_fn_return_array() { } void rer_emit_arena_fn_return_strbuf() { } void rer_emit_cast_str_to_int() { } void rer_emit_cast_str_to_nat() { } void rer_emit_cast_str_to_real() { } Emitter rer_emitter() { return (Emitter){ rer_emit_error, rer_prolog, rer_epilogue, rer_emit_add, rer_emit_sub, rer_emit_mul, rer_emit_div, rer_emit_lt, rer_emit_le, rer_emit_gt, rer_emit_ge, rer_emit_ne, rer_emit_eq, rer_emit_false, rer_emit_true, rer_emit_nil, rer_emit_void, rer_emit_int, rer_emit_nat, rer_emit_real, rer_emit_byte, rer_emit_str, rer_emit_bool_type, rer_emit_byte_type, rer_emit_int_type, rer_emit_nat_type, rer_emit_real_type, rer_emit_str_type, rer_emit_u8_type, rer_emit_i8_type, rer_emit_i16_type, rer_emit_u16_type, rer_emit_i32_type, rer_emit_u32_type, rer_emit_f32_type, rer_emit_array, rer_emit_function, rer_emit_plex, rer_emit_method, rer_emit_trait, rer_emit_const, rer_emit_print, rer_emit_neg, rer_emit_not, rer_emit_open_paren, rer_emit_close_paren, rer_emit_constant, rer_emit_variable, rer_emit_write, rer_emit_read, rer_emit_open, rer_emit_close, rer_emit_stat, rer_emit_end_statement, rer_emit_set_value, rer_emit_plex_def, rer_emit_cast_int_to_nat, rer_emit_cast_int_to_real, rer_emit_cast_int_to_str, rer_emit_cast_nat_to_int, rer_emit_cast_nat_to_real, rer_emit_cast_nat_to_str, rer_emit_cast_real_to_int, rer_emit_cast_real_to_nat, rer_emit_cast_real_to_str, rer_emit_strbuf_init, rer_emit_strbuf_append, rer_emit_strbuf_to_str, rer_emit_arena_fn_call, rer_emit_arena_fn_return_plex, rer_emit_arena_fn_return_array, rer_emit_arena_fn_return_strbuf, rer_emit_cast_str_to_int, rer_emit_cast_str_to_nat, rer_emit_cast_str_to_real, }; }