diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/compiler/ast-tree.c | 10 | ||||
-rw-r--r-- | src/compiler/lexer.h | 5 | ||||
-rw-r--r-- | src/compiler/parser.c | 9 |
3 files changed, 13 insertions, 11 deletions
diff --git a/src/compiler/ast-tree.c b/src/compiler/ast-tree.c index f010067..8cea6f7 100644 --- a/src/compiler/ast-tree.c +++ b/src/compiler/ast-tree.c @@ -3750,6 +3750,11 @@ AstTree *astTreeParseBracket(const ParserNode *parserNode, AstTreeToken token) { metadata->operand = astTreeParse(node_metadata->operand); + if (metadata->operand == NULL) { + free(metadata); + return NULL; + } + metadata->parameters.size = node_metadata->params->size; metadata->parameters.data = a404m_malloc(sizeof(*metadata->parameters.data) * metadata->parameters.size); @@ -3762,6 +3767,11 @@ AstTree *astTreeParseBracket(const ParserNode *parserNode, AstTreeToken token) { } metadata->parameters.data[i] = astTreeParse(node_param); + + if (metadata->parameters.data[i] == NULL) { + free(metadata); + return NULL; + } } return newAstTree(token, metadata, NULL, parserNode->str_begin, diff --git a/src/compiler/lexer.h b/src/compiler/lexer.h index 1802e41..568fabc 100644 --- a/src/compiler/lexer.h +++ b/src/compiler/lexer.h @@ -136,18 +136,15 @@ typedef enum LexerToken { LEXER_TOKEN_KEYWORD_BREAK, LEXER_TOKEN_KEYWORD_CONTINUE, LEXER_TOKEN_KEYWORD_COMPTIME, - LEXER_TOKEN_SYMBOL_EOL, - LEXER_TOKEN_ORDER14 = LEXER_TOKEN_SYMBOL_EOL, LEXER_TOKEN_SYMBOL_COMMA, LEXER_TOKEN_KEYWORD_IF, - LEXER_TOKEN_ORDER15 = LEXER_TOKEN_KEYWORD_IF, + LEXER_TOKEN_ORDER14 = LEXER_TOKEN_KEYWORD_IF, LEXER_TOKEN_KEYWORD_WHILE, LEXER_TOKEN_KEYWORD_ELSE, LEXER_TOKEN_END_ORDERS = LEXER_TOKEN_KEYWORD_ELSE, - LEXER_TOKEN_SYMBOL, LEXER_TOKEN_SYMBOL_OPEN_PARENTHESIS, LEXER_TOKEN_SYMBOL_OPEN_BRACKET, diff --git a/src/compiler/parser.c b/src/compiler/parser.c index 1becd88..ea54e52 100644 --- a/src/compiler/parser.c +++ b/src/compiler/parser.c @@ -201,18 +201,13 @@ static const ParserOrder PARSER_ORDER[] = { .end = LEXER_TOKEN_ORDER13, }, { - .ltr = false, + .ltr = true, .begin = LEXER_TOKEN_ORDER13, .end = LEXER_TOKEN_ORDER14, }, { - .ltr = true, - .begin = LEXER_TOKEN_ORDER14, - .end = LEXER_TOKEN_ORDER15, - }, - { .ltr = false, - .begin = LEXER_TOKEN_ORDER15, + .begin = LEXER_TOKEN_ORDER14, .end = LEXER_TOKEN_END_ORDERS, }, }; |