From 69a4e1a69239c4de6bcade6aac04205db10ec9c5 Mon Sep 17 00:00:00 2001 From: A404M Date: Fri, 16 May 2025 18:31:59 +0330 Subject: add continue --- src/compiler/parser.c | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'src/compiler/parser.c') diff --git a/src/compiler/parser.c b/src/compiler/parser.c index 4193fd3..b7a6e46 100644 --- a/src/compiler/parser.c +++ b/src/compiler/parser.c @@ -61,6 +61,7 @@ const char *PARSER_TOKEN_STRINGS[] = { "PARSER_TOKEN_KEYWORD_PUTC", "PARSER_TOKEN_KEYWORD_BREAK", + "PARSER_TOKEN_KEYWORD_CONTINUE", "PARSER_TOKEN_KEYWORD_RETURN", "PARSER_TOKEN_KEYWORD_IF", "PARSER_TOKEN_KEYWORD_WHILE", @@ -282,6 +283,7 @@ void parserNodePrint(const ParserNode *node, int indent) { case PARSER_TOKEN_KEYWORD_NULL: case PARSER_TOKEN_KEYWORD_UNDEFINED: case PARSER_TOKEN_KEYWORD_BREAK: + case PARSER_TOKEN_KEYWORD_CONTINUE: goto RETURN_SUCCESS; case PARSER_TOKEN_VALUE_INT: { ParserNodeIntMetadata *metadata = node->metadata; @@ -586,6 +588,7 @@ void parserNodeDelete(ParserNode *node) { case PARSER_TOKEN_KEYWORD_NULL: case PARSER_TOKEN_KEYWORD_UNDEFINED: case PARSER_TOKEN_KEYWORD_BREAK: + case PARSER_TOKEN_KEYWORD_CONTINUE: goto RETURN_SUCCESS; case PARSER_TOKEN_VALUE_BOOL: { ParserNodeBoolMetadata *metadata = node->metadata; @@ -929,6 +932,8 @@ ParserNode *parseNode(LexerNode *node, LexerNode *begin, LexerNode *end, 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_CONTINUE: + return parserNoMetadata(node, parent, PARSER_TOKEN_KEYWORD_CONTINUE); case LEXER_TOKEN_KEYWORD_PUTC: return parserPutc(node, end, parent); case LEXER_TOKEN_KEYWORD_RETURN: @@ -1720,6 +1725,7 @@ ParserNode *parserFunction(LexerNode *node, LexerNode *begin, LexerNode *end, case PARSER_TOKEN_KEYWORD_NULL: case PARSER_TOKEN_KEYWORD_UNDEFINED: case PARSER_TOKEN_KEYWORD_BREAK: + case PARSER_TOKEN_KEYWORD_CONTINUE: case PARSER_TOKEN_KEYWORD_PUTC: case PARSER_TOKEN_KEYWORD_RETURN: case PARSER_TOKEN_KEYWORD_STRUCT: @@ -2258,6 +2264,7 @@ bool isExpression(ParserNode *node) { case PARSER_TOKEN_KEYWORD_NULL: case PARSER_TOKEN_KEYWORD_UNDEFINED: case PARSER_TOKEN_KEYWORD_BREAK: + case PARSER_TOKEN_KEYWORD_CONTINUE: case PARSER_TOKEN_KEYWORD_STRUCT: return true; case PARSER_TOKEN_ROOT: @@ -2340,6 +2347,7 @@ bool isType(ParserNode *node) { case PARSER_TOKEN_KEYWORD_PUTC: case PARSER_TOKEN_KEYWORD_RETURN: case PARSER_TOKEN_KEYWORD_BREAK: + case PARSER_TOKEN_KEYWORD_CONTINUE: case PARSER_TOKEN_OPERATOR_ASSIGN: case PARSER_TOKEN_OPERATOR_SUM_ASSIGN: case PARSER_TOKEN_OPERATOR_SUB_ASSIGN: @@ -2463,6 +2471,7 @@ bool isValue(ParserNode *node) { case PARSER_TOKEN_KEYWORD_PUTC: case PARSER_TOKEN_KEYWORD_RETURN: case PARSER_TOKEN_KEYWORD_BREAK: + case PARSER_TOKEN_KEYWORD_CONTINUE: case PARSER_TOKEN_KEYWORD_WHILE: return false; case PARSER_TOKEN_NONE: -- cgit v1.2.3