X-Git-Url: https://git.xonotic.org/?p=xonotic%2Fgmqcc.git;a=blobdiff_plain;f=parser.h;h=7f07bdf404c5e746bec00091421fe912bbbf617a;hp=43ebe6f0b0e3902c3173e666922a88039abdf0ad;hb=aabefd1bfe0c5b08bea9341c1394cfa8b96d754d;hpb=4de08db0e7b73a832d638acc03c6936395fd2095 diff --git a/parser.h b/parser.h index 43ebe6f..7f07bdf 100644 --- a/parser.h +++ b/parser.h @@ -4,26 +4,26 @@ #include "lexer.h" #include "ast.h" -typedef struct intrin_s intrin_t; -typedef struct parser_s parser_t; - -typedef struct { - struct parser_s *parser; - ast_value **imm_float; /* vector */ - ast_value **imm_vector; /* vector */ - ast_value **imm_string; /* vector */ - hash_table_t *imm_string_untranslate; /* map */ - hash_table_t *imm_string_dotranslate; /* map */ -} fold_t; - -typedef struct { +struct parser_t; +struct intrin_t; + +struct fold_t { + parser_t *parser; + ast_value **imm_float; /* vector */ + ast_value **imm_vector; /* vector */ + ast_value **imm_string; /* vector */ + hash_table_t *imm_string_untranslate; /* map */ + hash_table_t *imm_string_dotranslate; /* map */ +}; + +struct intrin_func_t { ast_expression *(*intrin)(intrin_t *); - const char *name; - const char *alias; - size_t args; -} intrin_func_t; + const char *name; + const char *alias; + size_t args; +}; -struct intrin_s { +struct intrin_t { intrin_func_t *intrinsics; /* vector */ ast_expression **generated; /* vector */ parser_t *parser; @@ -32,7 +32,7 @@ struct intrin_s { #define parser_ctx(p) ((p)->lex->tok.ctx) -struct parser_s { +struct parser_t { lex_file *lex; int tok;