undar-lang/emit/c99/emit.c

385 lines
4.1 KiB
C

#include "../../emit.h"
#include <stdio.h>
#include <stdlib.h>
void
c99_emit_error(const char *str, i32 length, i32 line)
{
printf("Error at line: %d (%.*s)\n ", line, length, str);
exit(1);
}
void
c99_prolog()
{
}
void
c99_epilogue()
{
}
void
c99_emit_add()
{
printf("+ ");
}
void
c99_emit_sub()
{
printf("- ");
}
void
c99_emit_mul()
{
printf("* ");
}
void
c99_emit_div()
{
printf("/ ");
}
void
c99_emit_lt()
{
printf("< ");
}
void
c99_emit_le()
{
printf("<= ");
}
void
c99_emit_gt()
{
printf("> ");
}
void
c99_emit_ge()
{
printf(">= ");
}
void
c99_emit_ne()
{
printf("!= ");
}
void
c99_emit_eq()
{
printf("== ");
}
void
c99_emit_false()
{
printf("false ");
}
void
c99_emit_true()
{
printf("true ");
}
void
c99_emit_nil()
{
printf("nil ");
}
void
c99_emit_neg()
{
printf("-");
}
void
c99_emit_not()
{
printf("!");
}
void
c99_emit_void()
{
}
i32
c99_emit_bool_type(const char *str, i32 length)
{
printf("%.*s ", length, str);
return 1;
}
i32
c99_emit_byte_type(const char *str, i32 length)
{
printf("%.*s ", length, str);
return 1;
}
i32
c99_emit_int_type(const char *str, i32 length)
{
printf("%.*s ", length, str);
return 2;
}
i32
c99_emit_nat_type(const char *str, i32 length)
{
printf("%.*s ", length, str);
return 2;
}
i32
c99_emit_real_type(const char *str, i32 length)
{
printf("%.*s ", length, str);
return 2;
}
i32
c99_emit_str_type(const char *str, i32 length)
{
printf("%.*s ", length, str);
return 2;
}
i32
c99_emit_u8_type(const char *str, i32 length)
{
printf("%.*s ", length, str);
return 1;
}
i32
c99_emit_i8_type(const char *str, i32 length)
{
printf("%.*s ", length, str);
return 1;
}
i32
c99_emit_i16_type(const char *str, i32 length)
{
printf("%.*s ", length, str);
return 2;
}
i32
c99_emit_u16_type(const char *str, i32 length)
{
printf("%.*s ", length, str);
return 2;
}
i32
c99_emit_i32_type(const char *str, i32 length)
{
printf("%.*s ", length, str);
return 4;
}
i32
c99_emit_u32_type(const char *str, i32 length)
{
printf("%.*s ", length, str);
return 4;
}
i32
c99_emit_f32_type(const char *str, i32 length)
{
printf("%.*s ", length, str);
return 4;
}
void
c99_emit_int(const char *str, i32 length)
{
printf("%.*s ", length, str);
}
void
c99_emit_nat(const char *str, i32 length)
{
printf("%.*s ", length, str);
}
void
c99_emit_real(const char *str, i32 length)
{
printf("%.*s ", length, str);
}
void
c99_emit_byte(const char *str, i32 length)
{
printf("%.*s ", length, str);
}
void
c99_emit_str(const char *str, i32 length)
{
printf("%.*s ", length, str);
}
void
c99_emit_array()
{
}
void
c99_emit_function()
{
}
void
c99_emit_plex()
{
}
void
c99_emit_method()
{
}
void
c99_emit_trait()
{
}
void
c99_emit_const()
{
}
void
c99_emit_print()
{
printf("printf");
}
void
c99_emit_open_paren()
{
printf("(");
}
void
c99_emit_close_paren()
{
printf(")");
}
void
c99_emit_constant(const char *str, i32 length)
{
USED(str);
USED(length);
}
void
c99_emit_variable(Symbol *sym)
{
USED(sym);
}
void
c99_emit_write()
{
}
void
c99_emit_read()
{
}
void
c99_emit_open()
{
}
void
c99_emit_close()
{
}
void
c99_emit_stat()
{
}
Emitter
c99_emitter()
{
return (Emitter){
INFIX,
TEXT,
c99_emit_error,
c99_prolog,
c99_epilogue,
c99_emit_add,
c99_emit_sub,
c99_emit_mul,
c99_emit_div,
c99_emit_lt,
c99_emit_le,
c99_emit_gt,
c99_emit_ge,
c99_emit_ne,
c99_emit_eq,
c99_emit_false,
c99_emit_true,
c99_emit_nil,
c99_emit_void,
c99_emit_int,
c99_emit_nat,
c99_emit_real,
c99_emit_byte,
c99_emit_str,
c99_emit_bool_type,
c99_emit_byte_type,
c99_emit_int_type,
c99_emit_nat_type,
c99_emit_real_type,
c99_emit_str_type,
c99_emit_u8_type,
c99_emit_i8_type,
c99_emit_i16_type,
c99_emit_u16_type,
c99_emit_i32_type,
c99_emit_u32_type,
c99_emit_f32_type,
c99_emit_array,
c99_emit_function,
c99_emit_plex,
c99_emit_method,
c99_emit_trait,
c99_emit_const,
c99_emit_print,
c99_emit_neg,
c99_emit_not,
c99_emit_open_paren,
c99_emit_close_paren,
c99_emit_constant,
c99_emit_variable,
c99_emit_write,
c99_emit_read,
c99_emit_open,
c99_emit_close,
c99_emit_stat,
};
}