From fe6cec90b465181f5964157e016b43c428405486 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Fri, 3 Jul 2020 12:19:31 -0500 Subject: [PATCH] Removed unnecessary tokens in the lexer --- include/onyxlex.h | 102 +++++++++++++-------------------- onyx | Bin 214480 -> 213024 bytes src/onyxlex.c | 89 +++++++++-------------------- src/onyxparser.c | 141 ++++++++++++++++++++++------------------------ 4 files changed, 134 insertions(+), 198 deletions(-) diff --git a/include/onyxlex.h b/include/onyxlex.h index 6502862d..6b35fe61 100644 --- a/include/onyxlex.h +++ b/include/onyxlex.h @@ -4,68 +4,46 @@ #include "bh.h" typedef enum TokenType { - TOKEN_TYPE_UNKNOWN, - TOKEN_TYPE_END_STREAM, - - TOKEN_TYPE_COMMENT, - - TOKEN_TYPE_KEYWORD_STRUCT, - TOKEN_TYPE_KEYWORD_USE, - TOKEN_TYPE_KEYWORD_EXPORT, - TOKEN_TYPE_KEYWORD_IF, - TOKEN_TYPE_KEYWORD_ELSE, - TOKEN_TYPE_KEYWORD_ELSEIF, - TOKEN_TYPE_KEYWORD_RETURN, - TOKEN_TYPE_KEYWORD_FOREIGN, - TOKEN_TYPE_KEYWORD_PROC, - TOKEN_TYPE_KEYWORD_CAST, - TOKEN_TYPE_KEYWORD_WHILE, - TOKEN_TYPE_KEYWORD_BREAK, - TOKEN_TYPE_KEYWORD_CONTINUE, - - TOKEN_TYPE_RIGHT_ARROW, - TOKEN_TYPE_LEFT_ARROW, - TOKEN_TYPE_OPEN_PAREN, - TOKEN_TYPE_CLOSE_PAREN, - TOKEN_TYPE_OPEN_BRACE, - TOKEN_TYPE_CLOSE_BRACE, - TOKEN_TYPE_OPEN_BRACKET, - TOKEN_TYPE_CLOSE_BRACKET, - - TOKEN_TYPE_SYM_PLUS, - TOKEN_TYPE_SYM_MINUS, - TOKEN_TYPE_SYM_STAR, - TOKEN_TYPE_SYM_PERCENT, - TOKEN_TYPE_SYM_DOT, - TOKEN_TYPE_SYM_FSLASH, - TOKEN_TYPE_SYM_BSLASH, - TOKEN_TYPE_SYM_COLON, - TOKEN_TYPE_SYM_SEMICOLON, - TOKEN_TYPE_SYM_COMMA, - TOKEN_TYPE_SYM_GREATER, - TOKEN_TYPE_SYM_GREATER_EQUAL, - TOKEN_TYPE_SYM_LESS, - TOKEN_TYPE_SYM_LESS_EQUAL, - TOKEN_TYPE_SYM_EQUAL_EQUAL, - TOKEN_TYPE_SYM_NOT_EQUAL, - TOKEN_TYPE_SYM_EQUALS, - TOKEN_TYPE_SYM_TILDE, - TOKEN_TYPE_SYM_BANG, - TOKEN_TYPE_SYM_CARET, - TOKEN_TYPE_SYM_AMPERSAND, - TOKEN_TYPE_SYM_PLUS_EQUAL, - TOKEN_TYPE_SYM_MINUS_EQUAL, - TOKEN_TYPE_SYM_STAR_EQUAL, - TOKEN_TYPE_SYM_FSLASH_EQUAL, - TOKEN_TYPE_SYM_PERCENT_EQUAL, - - TOKEN_TYPE_SYMBOL, - TOKEN_TYPE_LITERAL_STRING, - TOKEN_TYPE_LITERAL_NUMERIC, - TOKEN_TYPE_LITERAL_BOOL_TRUE, - TOKEN_TYPE_LITERAL_BOOL_FALSE, - - TOKEN_TYPE_COUNT + TOKEN_TYPE_ASCII_END = 256, + TOKEN_TYPE_UNKNOWN = 256, + TOKEN_TYPE_END_STREAM = 257, + + TOKEN_TYPE_COMMENT = 258, + + TOKEN_TYPE_KEYWORD_STRUCT = 259, + TOKEN_TYPE_KEYWORD_USE = 260, + TOKEN_TYPE_KEYWORD_EXPORT = 261, + TOKEN_TYPE_KEYWORD_IF = 262, + TOKEN_TYPE_KEYWORD_ELSE = 263, + TOKEN_TYPE_KEYWORD_ELSEIF = 264, + TOKEN_TYPE_KEYWORD_RETURN = 265, + TOKEN_TYPE_KEYWORD_FOREIGN = 266, + TOKEN_TYPE_KEYWORD_PROC = 267, + TOKEN_TYPE_KEYWORD_CAST = 268, + TOKEN_TYPE_KEYWORD_WHILE = 269, + TOKEN_TYPE_KEYWORD_BREAK = 270, + TOKEN_TYPE_KEYWORD_CONTINUE = 271, + + TOKEN_TYPE_RIGHT_ARROW = 272, + TOKEN_TYPE_LEFT_ARROW = 273, + + TOKEN_TYPE_GREATER_EQUAL = 274, + TOKEN_TYPE_LESS_EQUAL = 275, + TOKEN_TYPE_EQUAL_EQUAL = 276, + TOKEN_TYPE_NOT_EQUAL = 277, + TOKEN_TYPE_PLUS_EQUAL = 278, + TOKEN_TYPE_MINUS_EQUAL = 279, + TOKEN_TYPE_STAR_EQUAL = 280, + TOKEN_TYPE_FSLASH_EQUAL = 281, + TOKEN_TYPE_PERCENT_EQUAL = 282, + + TOKEN_TYPE_SYMBOL = 283, + TOKEN_TYPE_LITERAL_STRING = 284, + TOKEN_TYPE_LITERAL_NUMERIC = 285, + TOKEN_TYPE_LITERAL_BOOL_TRUE = 286, + TOKEN_TYPE_LITERAL_BOOL_FALSE = 287, + + TOKEN_TYPE_COUNT = 288 } TokenType; typedef struct OnyxFilePos { diff --git a/onyx b/onyx index 1ca270bf0e65bfd757b6bcdca4221f22e6bbfb74..283c8b4757ba6fae35aa15d501aed108cc124665 100755 GIT binary patch delta 85824 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 diff --git a/src/onyxlex.c b/src/onyxlex.c index a280e6a4..600d796d 100644 --- a/src/onyxlex.c +++ b/src/onyxlex.c @@ -1,5 +1,6 @@ #include "bh.h" #include "onyxlex.h" +#include "onyxutils.h" static const char* token_type_names[] = { "TOKEN_TYPE_UNKNOWN", @@ -23,34 +24,11 @@ static const char* token_type_names[] = { "->", //"TOKEN_TYPE_RIGHT_ARROW", "<-", //"TOKEN_TYPE_LEFT_ARROW", - "(", //"TOKEN_TYPE_OPEN_PAREN", - ")", //"TOKEN_TYPE_CLOSE_PAREN", - "{", //"TOKEN_TYPE_OPEN_BRACE", - "}", //"TOKEN_TYPE_CLOSE_BRACE", - "[", //"TOKEN_TYPE_OPEN_BRACKET", - "]", //"TOKEN_TYPE_CLOSE_BRACKET", - - "+", // "TOKEN_TYPE_SYM_PLUS", - "-", // "TOKEN_TYPE_SYM_MINUS", - "*", // "TOKEN_TYPE_SYM_STAR", - "%", // "TOKEN_TYPE_SYM_PERCENT", - ".", // "TOKEN_TYPE_SYM_DOT", - "/", // "TOKEN_TYPE_SYM_FSLASH", - "\\", // "TOKEN_TYPE_SYM_BSLASH", - ":", // "TOKEN_TYPE_SYM_COLON", - ";", // "TOKEN_TYPE_SYM_SEMICOLON", - ",", // "TOKEN_TYPE_SYM_COMMA", - ">", // "TOKEN_TYPE_SYM_GREATER", + ">=", // "TOKEN_TYPE_SYM_GREATER_EQUAL", - "<", // "TOKEN_TYPE_SYM_LESS", "<=", // "TOKEN_TYPE_SYM_LESS_EQUAL", "==", // "TOKEN_TYPE_SYM_EQUALS_EQUALS", "!=", // "TOKEN_TYPE_SYM_NOT_EQUAL", - "=", // "TOKEN_TYPE_SYM_EQUALS", - "~", // "TOKEN_TYPE_SYM_TILDE", - "!", // "TOKEN_TYPE_SYM_BANG", - "^", // "TOKEN_TYPE_SYM_CARET", - "&", // "TOKEN_TYPE_SYM_AMPERSAND", "+=", // "TOKEN_TYPE_SYM_PLUS_EQUAL", "-=", // "TOKEN_TYPE_SYM_MINUS_EQUAL", "*=", // "TOKEN_TYPE_SYM_STAR_EQUAL", @@ -101,7 +79,11 @@ static b32 token_lit(OnyxTokenizer* tokenizer, OnyxToken* tk, char* lit, b32 is_ } const char* onyx_get_token_type_name(TokenType tkn_type) { - return token_type_names[tkn_type]; + if (tkn_type < TOKEN_TYPE_ASCII_END) { + return bh_aprintf(global_scratch_allocator, "%c", (char) tkn_type); + } else { + return token_type_names[tkn_type - TOKEN_TYPE_ASCII_END]; + } } void onyx_token_null_toggle(OnyxToken* tkn) { @@ -161,38 +143,15 @@ OnyxToken* onyx_get_token(OnyxTokenizer* tokenizer) { LITERAL_TOKEN("false", 1, TOKEN_TYPE_LITERAL_BOOL_FALSE); LITERAL_TOKEN("->", 0, TOKEN_TYPE_RIGHT_ARROW); LITERAL_TOKEN("<-", 0, TOKEN_TYPE_RIGHT_ARROW); - LITERAL_TOKEN("<=", 0, TOKEN_TYPE_SYM_LESS_EQUAL); - LITERAL_TOKEN(">=", 0, TOKEN_TYPE_SYM_GREATER_EQUAL); - LITERAL_TOKEN("==", 0, TOKEN_TYPE_SYM_EQUAL_EQUAL); - LITERAL_TOKEN("!=", 0, TOKEN_TYPE_SYM_NOT_EQUAL); - LITERAL_TOKEN("+=", 0, TOKEN_TYPE_SYM_PLUS_EQUAL); - LITERAL_TOKEN("-=", 0, TOKEN_TYPE_SYM_MINUS_EQUAL); - LITERAL_TOKEN("*=", 0, TOKEN_TYPE_SYM_STAR_EQUAL); - LITERAL_TOKEN("/=", 0, TOKEN_TYPE_SYM_FSLASH_EQUAL); - LITERAL_TOKEN("%=", 0, TOKEN_TYPE_SYM_PERCENT_EQUAL); - LITERAL_TOKEN("(", 0, TOKEN_TYPE_OPEN_PAREN); - LITERAL_TOKEN(")", 0, TOKEN_TYPE_CLOSE_PAREN); - LITERAL_TOKEN("{", 0, TOKEN_TYPE_OPEN_BRACE); - LITERAL_TOKEN("}", 0, TOKEN_TYPE_CLOSE_BRACE); - LITERAL_TOKEN("[", 0, TOKEN_TYPE_OPEN_BRACKET); - LITERAL_TOKEN("]", 0, TOKEN_TYPE_CLOSE_BRACKET); - LITERAL_TOKEN("+", 0, TOKEN_TYPE_SYM_PLUS); - LITERAL_TOKEN("-", 0, TOKEN_TYPE_SYM_MINUS); - LITERAL_TOKEN("*", 0, TOKEN_TYPE_SYM_STAR); - LITERAL_TOKEN(".", 0, TOKEN_TYPE_SYM_DOT); - LITERAL_TOKEN("%", 0, TOKEN_TYPE_SYM_PERCENT); - LITERAL_TOKEN("/", 0, TOKEN_TYPE_SYM_FSLASH); - LITERAL_TOKEN("\\", 0, TOKEN_TYPE_SYM_BSLASH); - LITERAL_TOKEN(":", 0, TOKEN_TYPE_SYM_COLON); - LITERAL_TOKEN(";", 0, TOKEN_TYPE_SYM_SEMICOLON); - LITERAL_TOKEN(",", 0, TOKEN_TYPE_SYM_COMMA); - LITERAL_TOKEN(">", 0, TOKEN_TYPE_SYM_GREATER); - LITERAL_TOKEN("<", 0, TOKEN_TYPE_SYM_LESS); - LITERAL_TOKEN("=", 0, TOKEN_TYPE_SYM_EQUALS); - LITERAL_TOKEN("~", 0, TOKEN_TYPE_SYM_TILDE); - LITERAL_TOKEN("!", 0, TOKEN_TYPE_SYM_BANG); - LITERAL_TOKEN("^", 0, TOKEN_TYPE_SYM_CARET); - LITERAL_TOKEN("&", 0, TOKEN_TYPE_SYM_AMPERSAND); + LITERAL_TOKEN("<=", 0, TOKEN_TYPE_LESS_EQUAL); + LITERAL_TOKEN(">=", 0, TOKEN_TYPE_GREATER_EQUAL); + LITERAL_TOKEN("==", 0, TOKEN_TYPE_EQUAL_EQUAL); + LITERAL_TOKEN("!=", 0, TOKEN_TYPE_NOT_EQUAL); + LITERAL_TOKEN("+=", 0, TOKEN_TYPE_PLUS_EQUAL); + LITERAL_TOKEN("-=", 0, TOKEN_TYPE_MINUS_EQUAL); + LITERAL_TOKEN("*=", 0, TOKEN_TYPE_STAR_EQUAL); + LITERAL_TOKEN("/=", 0, TOKEN_TYPE_FSLASH_EQUAL); + LITERAL_TOKEN("%=", 0, TOKEN_TYPE_PERCENT_EQUAL); // Symbols if (char_is_alpha(*tk.token)) { @@ -250,8 +209,12 @@ OnyxToken* onyx_get_token(OnyxTokenizer* tokenizer) { tk.type = TOKEN_TYPE_LITERAL_NUMERIC; tk.length = len; + + INCREMENT_CURR_TOKEN(tokenizer); + goto token_parsed; } + tk.type = (TokenType) *tokenizer->curr; INCREMENT_CURR_TOKEN(tokenizer); token_parsed: @@ -262,15 +225,15 @@ token_parsed: OnyxTokenizer onyx_tokenizer_create(bh_allocator allocator, bh_file_contents *fc) { OnyxTokenizer tknizer = { - .start = fc->data, - .curr = fc->data, - .end = fc->data + fc->length, + .start = fc->data, + .curr = fc->data, + .end = fc->data + fc->length, - .filename = fc->filename, + .filename = fc->filename, - .line_number = 1, + .line_number = 1, .line_start = fc->data, - .tokens = NULL, + .tokens = NULL, }; bh_arr_new(allocator, tknizer.tokens, 512); diff --git a/src/onyxparser.c b/src/onyxparser.c index 0d203444..4391ab51 100644 --- a/src/onyxparser.c +++ b/src/onyxparser.c @@ -65,15 +65,10 @@ static void parser_prev_token(OnyxParser* parser) { } static b32 is_terminating_token(TokenType token_type) { - switch (token_type) { - case TOKEN_TYPE_SYM_SEMICOLON: - case TOKEN_TYPE_CLOSE_BRACE: - case TOKEN_TYPE_OPEN_BRACE: - case TOKEN_TYPE_END_STREAM: - return 1; - default: - return 0; - } + return (token_type == ';') + || (token_type == '}') + || (token_type == '{') + || (token_type == TOKEN_TYPE_END_STREAM); } static void find_token(OnyxParser* parser, TokenType token_type) { @@ -138,17 +133,17 @@ static AstNodeNumLit* parse_numeric_literal(OnyxParser* parser) { static AstNodeTyped* parse_factor(OnyxParser* parser) { AstNodeTyped* retval = NULL; - switch (parser->curr_token->type) { - case TOKEN_TYPE_OPEN_PAREN: + switch ((u16) parser->curr_token->type) { + case '(': { parser_next_token(parser); AstNodeTyped* expr = parse_expression(parser); - expect(parser, TOKEN_TYPE_CLOSE_PAREN); + expect(parser, ')'); retval = expr; break; } - case TOKEN_TYPE_SYM_MINUS: + case '-': { parser_next_token(parser); AstNodeTyped* factor = parse_factor(parser); @@ -171,19 +166,19 @@ static AstNodeTyped* parse_factor(OnyxParser* parser) { AstNodeTyped* sym_node = make_node(AstNode, AST_NODE_KIND_SYMBOL); sym_node->token = sym_token; - if (parser->curr_token->type != TOKEN_TYPE_OPEN_PAREN) { + if (parser->curr_token->type != '(') { retval = sym_node; break; } // NOTE: Function call AstNodeCall* call_node = make_node(AstNodeCall, AST_NODE_KIND_CALL); - call_node->base.token = expect(parser, TOKEN_TYPE_OPEN_PAREN); + call_node->base.token = expect(parser, '('); call_node->callee = (AstNode *) sym_node; AstNodeArgument** prev = &call_node->arguments; AstNodeArgument* curr = NULL; - while (parser->curr_token->type != TOKEN_TYPE_CLOSE_PAREN) { + while (parser->curr_token->type != ')') { curr = make_node(AstNodeArgument, AST_NODE_KIND_ARGUMENT); curr->value = parse_expression(parser); @@ -192,14 +187,14 @@ static AstNodeTyped* parse_factor(OnyxParser* parser) { prev = (AstNodeArgument **) &curr->base.next; } - if (parser->curr_token->type == TOKEN_TYPE_CLOSE_PAREN) + if (parser->curr_token->type == ')') break; - if (parser->curr_token->type != TOKEN_TYPE_SYM_COMMA) { + if (parser->curr_token->type != ',') { onyx_message_add(parser->msgs, ONYX_MESSAGE_TYPE_EXPECTED_TOKEN, parser->curr_token->pos, - onyx_get_token_type_name(TOKEN_TYPE_SYM_COMMA), + onyx_get_token_type_name(','), onyx_get_token_type_name(parser->curr_token->type)); return (AstNodeTyped *) &error_node; } @@ -292,19 +287,19 @@ static AstNodeTyped* parse_expression(OnyxParser* parser) { while (1) { bin_op_kind = -1; - switch (parser->curr_token->type) { - case TOKEN_TYPE_SYM_EQUAL_EQUAL: bin_op_kind = ONYX_BINARY_OP_EQUAL; break; - case TOKEN_TYPE_SYM_NOT_EQUAL: bin_op_kind = ONYX_BINARY_OP_NOT_EQUAL; break; - case TOKEN_TYPE_SYM_LESS_EQUAL: bin_op_kind = ONYX_BINARY_OP_LESS_EQUAL; break; - case TOKEN_TYPE_SYM_LESS: bin_op_kind = ONYX_BINARY_OP_LESS; break; - case TOKEN_TYPE_SYM_GREATER_EQUAL: bin_op_kind = ONYX_BINARY_OP_GREATER_EQUAL; break; - case TOKEN_TYPE_SYM_GREATER: bin_op_kind = ONYX_BINARY_OP_GREATER; break; - - case TOKEN_TYPE_SYM_PLUS: bin_op_kind = ONYX_BINARY_OP_ADD; break; - case TOKEN_TYPE_SYM_MINUS: bin_op_kind = ONYX_BINARY_OP_MINUS; break; - case TOKEN_TYPE_SYM_STAR: bin_op_kind = ONYX_BINARY_OP_MULTIPLY; break; - case TOKEN_TYPE_SYM_FSLASH: bin_op_kind = ONYX_BINARY_OP_DIVIDE; break; - case TOKEN_TYPE_SYM_PERCENT: bin_op_kind = ONYX_BINARY_OP_MODULUS; break; + switch ((u16) parser->curr_token->type) { + case TOKEN_TYPE_EQUAL_EQUAL: bin_op_kind = ONYX_BINARY_OP_EQUAL; break; + case TOKEN_TYPE_NOT_EQUAL: bin_op_kind = ONYX_BINARY_OP_NOT_EQUAL; break; + case TOKEN_TYPE_LESS_EQUAL: bin_op_kind = ONYX_BINARY_OP_LESS_EQUAL; break; + case TOKEN_TYPE_GREATER_EQUAL: bin_op_kind = ONYX_BINARY_OP_GREATER_EQUAL; break; + case '<': bin_op_kind = ONYX_BINARY_OP_LESS; break; + case '>': bin_op_kind = ONYX_BINARY_OP_GREATER; break; + + case '+': bin_op_kind = ONYX_BINARY_OP_ADD; break; + case '-': bin_op_kind = ONYX_BINARY_OP_MINUS; break; + case '*': bin_op_kind = ONYX_BINARY_OP_MULTIPLY; break; + case '/': bin_op_kind = ONYX_BINARY_OP_DIVIDE; break; + case '%': bin_op_kind = ONYX_BINARY_OP_MODULUS; break; default: goto expression_done; } @@ -403,9 +398,9 @@ static b32 parse_symbol_statement(OnyxParser* parser, AstNode** ret) { if (parser->curr_token->type != TOKEN_TYPE_SYMBOL) return 0; OnyxToken* symbol = expect(parser, TOKEN_TYPE_SYMBOL); - switch (parser->curr_token->type) { + switch ((u16) parser->curr_token->type) { // NOTE: Declaration - case TOKEN_TYPE_SYM_COLON: + case ':': { parser_next_token(parser); TypeInfo* type = &builtin_types[TYPE_INFO_KIND_UNKNOWN]; @@ -421,8 +416,8 @@ static b32 parse_symbol_statement(OnyxParser* parser, AstNode** ret) { local->base.flags |= ONYX_AST_FLAG_LVAL; // NOTE: DELETE *ret = (AstNode *) local; - if (parser->curr_token->type == TOKEN_TYPE_SYM_EQUALS || parser->curr_token->type == TOKEN_TYPE_SYM_COLON) { - if (parser->curr_token->type == TOKEN_TYPE_SYM_COLON) { + if (parser->curr_token->type == '=' || parser->curr_token->type == ':') { + if (parser->curr_token->type == ':') { local->base.flags |= ONYX_AST_FLAG_CONST; } @@ -451,7 +446,7 @@ static b32 parse_symbol_statement(OnyxParser* parser, AstNode** ret) { } // NOTE: Assignment - case TOKEN_TYPE_SYM_EQUALS: + case '=': { AstNodeAssign* assignment = make_node(AstNodeAssign, AST_NODE_KIND_ASSIGNMENT); assignment->base.token = parser->curr_token; @@ -467,18 +462,18 @@ static b32 parse_symbol_statement(OnyxParser* parser, AstNode** ret) { return 1; } - case TOKEN_TYPE_SYM_PLUS_EQUAL: - case TOKEN_TYPE_SYM_MINUS_EQUAL: - case TOKEN_TYPE_SYM_STAR_EQUAL: - case TOKEN_TYPE_SYM_FSLASH_EQUAL: - case TOKEN_TYPE_SYM_PERCENT_EQUAL: + case TOKEN_TYPE_PLUS_EQUAL: + case TOKEN_TYPE_MINUS_EQUAL: + case TOKEN_TYPE_STAR_EQUAL: + case TOKEN_TYPE_FSLASH_EQUAL: + case TOKEN_TYPE_PERCENT_EQUAL: { OnyxBinaryOp bin_op; - if (parser->curr_token->type == TOKEN_TYPE_SYM_PLUS_EQUAL) bin_op = ONYX_BINARY_OP_ADD; - else if (parser->curr_token->type == TOKEN_TYPE_SYM_MINUS_EQUAL) bin_op = ONYX_BINARY_OP_MINUS; - else if (parser->curr_token->type == TOKEN_TYPE_SYM_STAR_EQUAL) bin_op = ONYX_BINARY_OP_MULTIPLY; - else if (parser->curr_token->type == TOKEN_TYPE_SYM_FSLASH_EQUAL) bin_op = ONYX_BINARY_OP_DIVIDE; - else if (parser->curr_token->type == TOKEN_TYPE_SYM_PERCENT_EQUAL) bin_op = ONYX_BINARY_OP_MODULUS; + if (parser->curr_token->type == TOKEN_TYPE_PLUS_EQUAL) bin_op = ONYX_BINARY_OP_ADD; + else if (parser->curr_token->type == TOKEN_TYPE_MINUS_EQUAL) bin_op = ONYX_BINARY_OP_MINUS; + else if (parser->curr_token->type == TOKEN_TYPE_STAR_EQUAL) bin_op = ONYX_BINARY_OP_MULTIPLY; + else if (parser->curr_token->type == TOKEN_TYPE_FSLASH_EQUAL) bin_op = ONYX_BINARY_OP_DIVIDE; + else if (parser->curr_token->type == TOKEN_TYPE_PERCENT_EQUAL) bin_op = ONYX_BINARY_OP_MODULUS; parser_next_token(parser); @@ -518,7 +513,7 @@ static AstNodeReturn* parse_return_statement(OnyxParser* parser) { AstNodeTyped* expr = NULL; - if (parser->curr_token->type != TOKEN_TYPE_SYM_SEMICOLON) { + if (parser->curr_token->type != ';') { expr = parse_expression(parser); if (expr == NULL || expr == (AstNodeTyped *) &error_node) { @@ -535,12 +530,12 @@ static AstNode* parse_statement(OnyxParser* parser) { b32 needs_semicolon = 1; AstNode* retval = NULL; - switch (parser->curr_token->type) { + switch ((u16) parser->curr_token->type) { case TOKEN_TYPE_KEYWORD_RETURN: retval = (AstNode *) parse_return_statement(parser); break; - case TOKEN_TYPE_OPEN_BRACE: + case '{': needs_semicolon = 0; retval = (AstNode *) parse_block(parser); break; @@ -549,10 +544,10 @@ static AstNode* parse_statement(OnyxParser* parser) { if (parse_symbol_statement(parser, &retval)) break; // fallthrough - case TOKEN_TYPE_OPEN_PAREN: - case TOKEN_TYPE_SYM_PLUS: - case TOKEN_TYPE_SYM_MINUS: - case TOKEN_TYPE_SYM_BANG: + case '(': + case '+': + case '-': + case '!': case TOKEN_TYPE_LITERAL_NUMERIC: case TOKEN_TYPE_LITERAL_STRING: retval = (AstNode *) parse_expression(parser); @@ -583,14 +578,14 @@ static AstNode* parse_statement(OnyxParser* parser) { } if (needs_semicolon) { - if (parser->curr_token->type != TOKEN_TYPE_SYM_SEMICOLON) { + if (parser->curr_token->type != ';') { onyx_message_add(parser->msgs, ONYX_MESSAGE_TYPE_EXPECTED_TOKEN, parser->curr_token->pos, - onyx_get_token_type_name(TOKEN_TYPE_SYM_SEMICOLON), + onyx_get_token_type_name(';'), onyx_get_token_type_name(parser->curr_token->type)); - find_token(parser, TOKEN_TYPE_SYM_SEMICOLON); + find_token(parser, ';'); } parser_next_token(parser); } @@ -604,18 +599,18 @@ static AstNodeBlock* parse_block(OnyxParser* parser) { block->scope = scope; // --- is for an empty block - if (parser->curr_token->type == TOKEN_TYPE_SYM_MINUS) { - expect(parser, TOKEN_TYPE_SYM_MINUS); - expect(parser, TOKEN_TYPE_SYM_MINUS); - expect(parser, TOKEN_TYPE_SYM_MINUS); + if (parser->curr_token->type == '-') { + expect(parser, '-'); + expect(parser, '-'); + expect(parser, '-'); return block; } - expect(parser, TOKEN_TYPE_OPEN_BRACE); + expect(parser, '{'); AstNode** next = &block->body; AstNode* stmt = NULL; - while (parser->curr_token->type != TOKEN_TYPE_CLOSE_BRACE) { + while (parser->curr_token->type != '}') { stmt = parse_statement(parser); if (stmt != NULL && stmt->kind != AST_NODE_KIND_ERROR) { @@ -626,7 +621,7 @@ static AstNodeBlock* parse_block(OnyxParser* parser) { } } - expect(parser, TOKEN_TYPE_CLOSE_BRACE); + expect(parser, '}'); return block; } @@ -654,12 +649,12 @@ static TypeInfo* parse_type(OnyxParser* parser) { } static AstNodeLocal* parse_function_params(OnyxParser* parser) { - if (parser->curr_token->type != TOKEN_TYPE_OPEN_PAREN) + if (parser->curr_token->type != '(') return NULL; - expect(parser, TOKEN_TYPE_OPEN_PAREN); + expect(parser, '('); - if (parser->curr_token->type == TOKEN_TYPE_CLOSE_PAREN) { + if (parser->curr_token->type == ')') { parser_next_token(parser); return NULL; } @@ -669,11 +664,11 @@ static AstNodeLocal* parse_function_params(OnyxParser* parser) { AstNodeLocal* trailer = NULL; OnyxToken* symbol; - while (parser->curr_token->type != TOKEN_TYPE_CLOSE_PAREN) { - if (parser->curr_token->type == TOKEN_TYPE_SYM_COMMA) parser_next_token(parser); + while (parser->curr_token->type != ')') { + if (parser->curr_token->type == ',') parser_next_token(parser); symbol = expect(parser, TOKEN_TYPE_SYMBOL); - expect(parser, TOKEN_TYPE_SYM_COLON); + expect(parser, ':'); curr_param = make_node(AstNodeLocal, AST_NODE_KIND_PARAM); curr_param->base.token = symbol; @@ -794,7 +789,7 @@ static AstNode* parse_top_level_statement(OnyxParser* parser) { OnyxToken* symbol = parser->curr_token; parser_next_token(parser); - expect(parser, TOKEN_TYPE_SYM_COLON); + expect(parser, ':'); TypeInfo* type = &builtin_types[TYPE_INFO_KIND_UNKNOWN]; @@ -802,7 +797,7 @@ static AstNode* parse_top_level_statement(OnyxParser* parser) { type = parse_type(parser); } - if (parser->curr_token->type == TOKEN_TYPE_SYM_COLON) { + if (parser->curr_token->type == ':') { parser_next_token(parser); AstNode* node = parse_top_level_constant_symbol(parser); @@ -820,7 +815,7 @@ static AstNode* parse_top_level_statement(OnyxParser* parser) { return node; - } else if (parser->curr_token->type == TOKEN_TYPE_SYM_EQUALS) { + } else if (parser->curr_token->type == '=') { parser_next_token(parser); AstNodeGlobal* global = make_node(AstNodeGlobal, AST_NODE_KIND_GLOBAL); -- 2.25.1