|
|
|
@ -4,51 +4,52 @@
|
|
|
|
|
// MIT Licence
|
|
|
|
|
|
|
|
|
|
#include "init.h" |
|
|
|
|
#include "parse.h" |
|
|
|
|
#include "symbol.h" |
|
|
|
|
#include "type.h" |
|
|
|
|
|
|
|
|
|
#include <string.h> |
|
|
|
|
|
|
|
|
|
static sym kwds[] = { |
|
|
|
|
static ast kwds[] = { |
|
|
|
|
/* Boolean Types */ |
|
|
|
|
{ SK_TYPE, 0, 0, 0, "b8", &types[TY_B8], { 0 }, NULL }, |
|
|
|
|
{ SK_TYPE, 0, 0, 0, "b16", &types[TY_B16], { 0 }, NULL }, |
|
|
|
|
{ SK_TYPE, 0, 0, 0, "b32", &types[TY_B32], { 0 }, NULL }, |
|
|
|
|
{ SK_TYPE, 0, 0, 0, "b64", &types[TY_B64], { 0 }, NULL }, |
|
|
|
|
{ SK_TYPE, 0, 0, 0, "bool", &types[TY_B8], { 0 }, NULL }, |
|
|
|
|
{ AK_TYPE, 0, 0, 0, "b8", &types[TY_B8], { 0 }, NULL }, |
|
|
|
|
{ AK_TYPE, 0, 0, 0, "b16", &types[TY_B16], { 0 }, NULL }, |
|
|
|
|
{ AK_TYPE, 0, 0, 0, "b32", &types[TY_B32], { 0 }, NULL }, |
|
|
|
|
{ AK_TYPE, 0, 0, 0, "b64", &types[TY_B64], { 0 }, NULL }, |
|
|
|
|
{ AK_TYPE, 0, 0, 0, "bool", &types[TY_B8], { 0 }, NULL }, |
|
|
|
|
|
|
|
|
|
/* Integer Types */ |
|
|
|
|
{ SK_TYPE, 0, 0, 0, "u8", &types[TY_U8], { 0 }, NULL }, |
|
|
|
|
{ SK_TYPE, 0, 0, 0, "u16", &types[TY_U16], { 0 }, NULL }, |
|
|
|
|
{ SK_TYPE, 0, 0, 0, "u32", &types[TY_U32], { 0 }, NULL }, |
|
|
|
|
{ SK_TYPE, 0, 0, 0, "u64", &types[TY_U64], { 0 }, NULL }, |
|
|
|
|
{ SK_TYPE, 0, 0, 0, "u128", &types[TY_U128], { 0 }, NULL }, |
|
|
|
|
{ SK_TYPE, 0, 0, 0, "uint", &types[TY_UINT], { 0 }, NULL }, |
|
|
|
|
{ AK_TYPE, 0, 0, 0, "u8", &types[TY_U8], { 0 }, NULL }, |
|
|
|
|
{ AK_TYPE, 0, 0, 0, "u16", &types[TY_U16], { 0 }, NULL }, |
|
|
|
|
{ AK_TYPE, 0, 0, 0, "u32", &types[TY_U32], { 0 }, NULL }, |
|
|
|
|
{ AK_TYPE, 0, 0, 0, "u64", &types[TY_U64], { 0 }, NULL }, |
|
|
|
|
{ AK_TYPE, 0, 0, 0, "u128", &types[TY_U128], { 0 }, NULL }, |
|
|
|
|
{ AK_TYPE, 0, 0, 0, "uint", &types[TY_UINT], { 0 }, NULL }, |
|
|
|
|
|
|
|
|
|
{ SK_TYPE, 0, 0, 0, "s8", &types[TY_S8], { 0 }, NULL }, |
|
|
|
|
{ SK_TYPE, 0, 0, 0, "s16", &types[TY_S16], { 0 }, NULL }, |
|
|
|
|
{ SK_TYPE, 0, 0, 0, "s32", &types[TY_S32], { 0 }, NULL }, |
|
|
|
|
{ SK_TYPE, 0, 0, 0, "s64", &types[TY_S64], { 0 }, NULL }, |
|
|
|
|
{ SK_TYPE, 0, 0, 0, "s128", &types[TY_S128], { 0 }, NULL }, |
|
|
|
|
{ SK_TYPE, 0, 0, 0, "sint", &types[TY_SINT], { 0 }, NULL }, |
|
|
|
|
{ AK_TYPE, 0, 0, 0, "s8", &types[TY_S8], { 0 }, NULL }, |
|
|
|
|
{ AK_TYPE, 0, 0, 0, "s16", &types[TY_S16], { 0 }, NULL }, |
|
|
|
|
{ AK_TYPE, 0, 0, 0, "s32", &types[TY_S32], { 0 }, NULL }, |
|
|
|
|
{ AK_TYPE, 0, 0, 0, "s64", &types[TY_S64], { 0 }, NULL }, |
|
|
|
|
{ AK_TYPE, 0, 0, 0, "s128", &types[TY_S128], { 0 }, NULL }, |
|
|
|
|
{ AK_TYPE, 0, 0, 0, "sint", &types[TY_SINT], { 0 }, NULL }, |
|
|
|
|
|
|
|
|
|
/* Floating Point Types */ |
|
|
|
|
{ SK_TYPE, 0, 0, 0, "f16", &types[TY_F32], { 0 }, NULL }, |
|
|
|
|
{ SK_TYPE, 0, 0, 0, "f32", &types[TY_F32], { 0 }, NULL }, |
|
|
|
|
{ SK_TYPE, 0, 0, 0, "f64", &types[TY_F64], { 0 }, NULL }, |
|
|
|
|
{ SK_TYPE, 0, 0, 0, "f128", &types[TY_F128], { 0 }, NULL }, |
|
|
|
|
{ AK_TYPE, 0, 0, 0, "f16", &types[TY_F32], { 0 }, NULL }, |
|
|
|
|
{ AK_TYPE, 0, 0, 0, "f32", &types[TY_F32], { 0 }, NULL }, |
|
|
|
|
{ AK_TYPE, 0, 0, 0, "f64", &types[TY_F64], { 0 }, NULL }, |
|
|
|
|
{ AK_TYPE, 0, 0, 0, "f128", &types[TY_F128], { 0 }, NULL }, |
|
|
|
|
|
|
|
|
|
// { SK_NULL, 0, 0, 0, "proc", NULL, { 0 }, NULL },
|
|
|
|
|
// { SK_NULL, 0, 0, 0, "return", NULL, { 0 }, NULL },
|
|
|
|
|
|
|
|
|
|
{ SK_NULL, 0, 0, 0, NULL, NULL, { 0 }, NULL } |
|
|
|
|
{ AK_NULL, 0, 0, 0, NULL, NULL, { 0 }, NULL } |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
void initialise(void) { |
|
|
|
|
/* Populate the keyword symbol table */ |
|
|
|
|
for (UINT i = 0; kwds[i].s != NULL; i += 1) { |
|
|
|
|
kwds[i].h = syt_hash(kwds[i].s, strlen(kwds[i].s)); |
|
|
|
|
syt_insert_h(&kwt, kwds[i].h, kwds[i].s, kwds[i]); |
|
|
|
|
syt_insert_h(&kwt, kwds[i].h, kwds[i].s, &kwds[i]); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|