dont serialize meta flag, wasm work

This commit is contained in:
Krzosa Karol
2025-01-05 12:05:39 +01:00
parent 67f654f72e
commit b9106abadb
15 changed files with 139 additions and 219 deletions

View File

@@ -120,6 +120,7 @@ fn void lex_token_ex(lexer_t *lex, lex_t *token) {
case ';': token->kind = lex_kind_semicolon; break;
case ':': token->kind = lex_kind_colon; break;
case ',': token->kind = lex_kind_comma; break;
case '@': token->kind = lex_kind_tag; break;
case '"': lex_eat_string(lex, token); break;
case '`': lex_eat_string(lex, token); break;
case '\'': lex_eat_string(lex, token); break;
@@ -314,6 +315,12 @@ fn lex_t *parser_expect(parser_t *par, lex_kind_t kind) {
return token;
}
fn lex_t *parser_expecti(parser_t *par, s8_t ident) {
lex_t *token = parser_matchi(par, ident);
if (!token) parser_panicf(par->at, "expected identifier: '%S'", ident);
return token;
}
fn void parser_eat_until(parser_t *par, lex_kind_t kind) {
while (par->at->kind != kind && par->at->kind != lex_kind_eof) {
parser_next(par);

View File

@@ -56,6 +56,7 @@ enum lex_kind_t {
X(lex_kind_colon , "':' colon" , ":" )\
X(lex_kind_arrow , "'->' arrow" , "->" )\
X(lex_kind_question , "'?' question mark" , "?" )\
X(lex_kind_tag , "'@' tag sign" , "@" )\
#define X(KIND, STR, SIMPLE) KIND,
LEX_KIND_XLIST

View File

@@ -31,6 +31,7 @@ struct sb8_t {
sb8_node_t *first;
sb8_node_t *last;
// WARNING: remember to update typeinfo after editing this
i32 indent;
};

View File

@@ -46,6 +46,7 @@ struct type_member_t {
type_t *type;
i64 value;
u64 offset;
b8 dont_serialize;
};
//
@@ -120,6 +121,22 @@ gb_read_only type_t type__ma_arena_t = { type_kind_struct, s8_const_lit("ma_aren
}
};
gb_read_only type_t type__sb8_node_t = {type_kind_struct, s8_const_lit("sb8_node_t"), sizeof(sb8_t), .count = 2,
.members = (type_member_t[]){
{s8_const_lit("next"), &POINTER(sb8_node_t), .offset = offsetof(sb8_node_t, next)},
{s8_const_lit("string"), &type__s8_t, .offset = offsetof(sb8_node_t, string)},
}
};
gb_read_only type_t type__sb8_t = { type_kind_struct, s8_const_lit("sb8_t"), sizeof(sb8_t), .count = 4,
.members = (type_member_t[]){
{s8_const_lit("arena"), &POINTER(ma_arena_t), .offset = offsetof(sb8_t, arena)},
{s8_const_lit("first"), &POINTER(sb8_node_t), .offset = offsetof(sb8_t, first)},
{s8_const_lit("last"), &POINTER(sb8_node_t), .offset = offsetof(sb8_t, last)},
{s8_const_lit("indent"), &type__i32, .offset = offsetof(sb8_t, first)},
}
};
gb_read_only type_t type__ma_temp_t = { type_kind_struct, s8_const_lit("ma_temp_t"), sizeof(ma_temp_t), .count = 2,
.members = (type_member_t[]){
{s8_const_lit("arena"), &POINTER(ma_arena_t), .offset = offsetof(ma_temp_t, arena)},