ui expander working!
This commit is contained in:
@@ -228,7 +228,11 @@ ast_t *parse_decls(ma_arena_t *arena, char *file, s8_t code) {
|
||||
result->string = s8_copy_char(arena, file);
|
||||
for (;par->at->kind != lex_kind_eof;) {
|
||||
lex_t *pos = par->at;
|
||||
if (parser_matchi(par, s8_lit("enum"))) {
|
||||
|
||||
b32 matched = false;
|
||||
b32 is_typedef = !!parser_matchi(par, s8_lit("typedef"));
|
||||
|
||||
if (is_typedef && parser_matchi(par, s8_lit("enum"))) {
|
||||
ast_t *n = create_ast(par, pos, set_bit(ast_flag_string) | set_bit(ast_flag_enum));
|
||||
ast_append(result, n);
|
||||
|
||||
@@ -248,7 +252,17 @@ ast_t *parse_decls(ma_arena_t *arena, char *file, s8_t code) {
|
||||
parser_expect(par, lex_kind_close_brace);
|
||||
n->string = parser_expect(par, lex_kind_ident)->string;
|
||||
parser_expect(par, lex_kind_semicolon);
|
||||
} else if (parser_matchi(par, s8_lit("struct"))) {
|
||||
matched = true;
|
||||
}
|
||||
|
||||
if (is_typedef && parser_matchi(par, s8_lit("struct"))) {
|
||||
parser_match(par, lex_kind_ident);
|
||||
parser_match(par, lex_kind_ident);
|
||||
parser_match(par, lex_kind_semicolon);
|
||||
matched = true;
|
||||
}
|
||||
|
||||
if (parser_matchi(par, s8_lit("struct"))) {
|
||||
ast_t *n = create_ast(par, pos, set_bit(ast_flag_string) | set_bit(ast_flag_struct));
|
||||
ast_append(result, n);
|
||||
n->string = parser_expect(par, lex_kind_ident)->string;
|
||||
@@ -270,10 +284,10 @@ ast_t *parse_decls(ma_arena_t *arena, char *file, s8_t code) {
|
||||
}
|
||||
parser_expect(par, lex_kind_close_brace);
|
||||
parser_expect(par, lex_kind_semicolon);
|
||||
|
||||
} else {
|
||||
parser_next(par);
|
||||
matched = true;
|
||||
}
|
||||
|
||||
if (!matched) parser_next(par);
|
||||
}
|
||||
|
||||
return result;
|
||||
|
||||
Reference in New Issue
Block a user