From aecec3006ccb1c6ca6a8d9704b47237a344de0b9 Mon Sep 17 00:00:00 2001 From: c+1 Date: Thu, 1 Jun 2023 16:18:26 -0400 Subject: HALK --- src/parser.c | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) (limited to 'src/parser.c') diff --git a/src/parser.c b/src/parser.c index c647e64..613f30a 100644 --- a/src/parser.c +++ b/src/parser.c @@ -19,7 +19,7 @@ parser_t* parser_init(lexer_t* lexer) { } // check for expected token, or throw syntax error -void parser_check_expect(parser_t* parser, int token_type) { +void parser_token_expect(parser_t* parser, int token_type) { if (parser->token->type == token_type) { log_dbg(strcat("Got expected token", lexer_get_c_as_string(parser->lexer))); parser->token = lexer_get_next_token(parser->lexer); @@ -31,14 +31,14 @@ void parser_check_expect(parser_t* parser, int token_type) { // creates the abstract syntax tree tree_t* parser_parse(parser_t* parser) { - return parser_parse_chunks(parser); + return parser_parse_hunks(parser); } -tree_t* parser_parse_token_id(parser_t* parser) { - if (strcmp(parser->token->value, "let")) { - return parser_parse_var(parser); - } else { // if id not recognized, check for variables under that name - return parser_parse_var_def(parser); +tree_t* parser_parse_token(parser_t* parser) { + if (parser_is_def_tag(parser->token->value)) { + return parser_parse_def(parser); + } else { + return parser_parse_call(parser); } } @@ -166,3 +166,10 @@ tree_t* parser_parse_keyword(parser_t* parser) { } } + +int parser_is_def_tag(char* maybe_tag) { + if (strcmp(maybe_tag, "int") || + strcmp(maybe_tag, "str")) { + return 1; + } else { return 0; } +} -- cgit v1.2.3