undar-lang/emit/rer/emit.c

510 lines
5.4 KiB
C

#include "../../emit.h"
#include <stdio.h>
#include <stdlib.h>
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,
};
}