diff options
author | A404M <ahmadmahmoudiprogrammer@gmail.com> | 2025-05-16 15:09:41 +0330 |
---|---|---|
committer | A404M <ahmadmahmoudiprogrammer@gmail.com> | 2025-05-16 16:24:06 +0330 |
commit | 0375ec4478101337ff1a30f583262a38055f9103 (patch) | |
tree | d50b9580b2e41a80c2cd1ab3af7714e4cf771e21 /src/compiler/parser.c | |
parent | 42eb5e5d3f10c3a9187dcf8edd7c023a3ea10dcd (diff) |
break now works
removed unused helper in ast to make code cleaner
now you can't define variables everywhere
Diffstat (limited to 'src/compiler/parser.c')
-rw-r--r-- | src/compiler/parser.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/compiler/parser.c b/src/compiler/parser.c index ebfd66f..4193fd3 100644 --- a/src/compiler/parser.c +++ b/src/compiler/parser.c @@ -281,6 +281,7 @@ void parserNodePrint(const ParserNode *node, int indent) { case PARSER_TOKEN_TYPE_SHAPE_SHIFTER: case PARSER_TOKEN_KEYWORD_NULL: case PARSER_TOKEN_KEYWORD_UNDEFINED: + case PARSER_TOKEN_KEYWORD_BREAK: goto RETURN_SUCCESS; case PARSER_TOKEN_VALUE_INT: { ParserNodeIntMetadata *metadata = node->metadata; @@ -584,6 +585,7 @@ void parserNodeDelete(ParserNode *node) { case PARSER_TOKEN_TYPE_SHAPE_SHIFTER: case PARSER_TOKEN_KEYWORD_NULL: case PARSER_TOKEN_KEYWORD_UNDEFINED: + case PARSER_TOKEN_KEYWORD_BREAK: goto RETURN_SUCCESS; case PARSER_TOKEN_VALUE_BOOL: { ParserNodeBoolMetadata *metadata = node->metadata; @@ -925,6 +927,8 @@ ParserNode *parseNode(LexerNode *node, LexerNode *begin, LexerNode *end, return parserNoMetadata(node, parent, PARSER_TOKEN_KEYWORD_NULL); case LEXER_TOKEN_KEYWORD_UNDEFINED: return parserNoMetadata(node, parent, PARSER_TOKEN_KEYWORD_UNDEFINED); + case LEXER_TOKEN_KEYWORD_BREAK: + return parserNoMetadata(node, parent, PARSER_TOKEN_KEYWORD_BREAK); case LEXER_TOKEN_KEYWORD_PUTC: return parserPutc(node, end, parent); case LEXER_TOKEN_KEYWORD_RETURN: @@ -1715,6 +1719,7 @@ ParserNode *parserFunction(LexerNode *node, LexerNode *begin, LexerNode *end, case PARSER_TOKEN_TYPE_SHAPE_SHIFTER: case PARSER_TOKEN_KEYWORD_NULL: case PARSER_TOKEN_KEYWORD_UNDEFINED: + case PARSER_TOKEN_KEYWORD_BREAK: case PARSER_TOKEN_KEYWORD_PUTC: case PARSER_TOKEN_KEYWORD_RETURN: case PARSER_TOKEN_KEYWORD_STRUCT: @@ -2252,6 +2257,7 @@ bool isExpression(ParserNode *node) { case PARSER_TOKEN_TYPE_SHAPE_SHIFTER: case PARSER_TOKEN_KEYWORD_NULL: case PARSER_TOKEN_KEYWORD_UNDEFINED: + case PARSER_TOKEN_KEYWORD_BREAK: case PARSER_TOKEN_KEYWORD_STRUCT: return true; case PARSER_TOKEN_ROOT: @@ -2333,6 +2339,7 @@ bool isType(ParserNode *node) { case PARSER_TOKEN_VALUE_STRING: case PARSER_TOKEN_KEYWORD_PUTC: case PARSER_TOKEN_KEYWORD_RETURN: + case PARSER_TOKEN_KEYWORD_BREAK: case PARSER_TOKEN_OPERATOR_ASSIGN: case PARSER_TOKEN_OPERATOR_SUM_ASSIGN: case PARSER_TOKEN_OPERATOR_SUB_ASSIGN: @@ -2455,6 +2462,7 @@ bool isValue(ParserNode *node) { case PARSER_TOKEN_SYMBOL_COMMA: case PARSER_TOKEN_KEYWORD_PUTC: case PARSER_TOKEN_KEYWORD_RETURN: + case PARSER_TOKEN_KEYWORD_BREAK: case PARSER_TOKEN_KEYWORD_WHILE: return false; case PARSER_TOKEN_NONE: |