aboutsummaryrefslogtreecommitdiff
path: root/src/compiler/parser.c
diff options
context:
space:
mode:
authorA404M <ahmadmahmoudiprogrammer@gmail.com>2025-05-16 15:09:41 +0330
committerA404M <ahmadmahmoudiprogrammer@gmail.com>2025-05-16 16:24:06 +0330
commit0375ec4478101337ff1a30f583262a38055f9103 (patch)
treed50b9580b2e41a80c2cd1ab3af7714e4cf771e21 /src/compiler/parser.c
parent42eb5e5d3f10c3a9187dcf8edd7c023a3ea10dcd (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.c8
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: