diff options
author | s-over-4 | 2023-08-29 10:17:27 -0400 |
---|---|---|
committer | s-over-4 | 2023-08-29 10:17:27 -0400 |
commit | 4176dea8503cc8eebfa24b14aaefc3a8dc643230 (patch) | |
tree | d2fd320fa4c83fcd397995ff009ae565b6a5e933 /src/include | |
parent | 497a3b690c3828775ad1d141f53484a748d5b61a (diff) |
g
Diffstat (limited to 'src/include')
-rw-r--r-- | src/include/parser.h | 7 | ||||
-rw-r--r-- | src/include/tree.h | 6 |
2 files changed, 8 insertions, 5 deletions
diff --git a/src/include/parser.h b/src/include/parser.h index 0ba2038..deb6c7c 100644 --- a/src/include/parser.h +++ b/src/include/parser.h @@ -4,6 +4,8 @@ #include "lexer.h" #include "tree.h" +#include <stdarg.h> + typedef struct PARSER_STRUC { lexer_t* lexer; // lexer used by the parser token_t* token; // current token @@ -12,9 +14,8 @@ typedef struct PARSER_STRUC { parser_t* parser_init(lexer_t* lexer); void parser_destroy(parser_t* parser); -// expect token, or die -void parser_token_expect(parser_t* parser, int token); -void parser_token_expectf(parser_t* parser, int (*expected_token)(token_t*)); +// expect token(s), or die +void parser_token_expect(parser_t* parser, int token, ...); // do the parse tree_t* parser_parse(parser_t* parser); diff --git a/src/include/tree.h b/src/include/tree.h index fde66ea..a2b71da 100644 --- a/src/include/tree.h +++ b/src/include/tree.h @@ -21,15 +21,17 @@ typedef struct TREE_STRUC { struct { // === DEFINITIONS === char* type; // the definition type char** tags; // the definition tags + size_t tags_size; // the number of tags char* name; // the definition name + struct TREE_STRUC** args; // the arguments the definition will accept + size_t args_size; // the number of arguments struct TREE_STRUC* value; // value of definition - // :D lines line up :D } def; struct { // === CALLS === char* target; // name of definition being called struct TREE_STRUC** args; // arguments passed to definition - size_t args_size; // size of arguments + size_t args_size; // the number of arguments } call; // === TYPES === |