about summary refs log tree commit diff
path: root/src/bootstrap/parser.pry
diff options
context:
space:
mode:
Diffstat (limited to 'src/bootstrap/parser.pry')
-rw-r--r--src/bootstrap/parser.pry33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/bootstrap/parser.pry b/src/bootstrap/parser.pry
index cf5cabd..f77bc77 100644
--- a/src/bootstrap/parser.pry
+++ b/src/bootstrap/parser.pry
@@ -1389,6 +1389,39 @@ let parser_parse_statement = (p: *parser) => *Node {
 		};
 	    return retu;
 	};
+	
+	/*  Break and continue */
+	let retu = parser_accept_parse(p, (ip: *parser) => *Node {
+		if parser_accept_token(ip, TOKEN_BREAK) == cast(*token, null) {
+		    return cast(*Node, null);
+		};
+		
+		let n = Node{};
+		n.type = NODE_BREAK_STATEMENT;
+		return create_node(ip, n);
+	});
+	if retu != cast(*Node, null) {
+		if parser_accept_token(p, TOKEN_SEMICOLON) == cast(*token, null) {
+		    return cast(*Node, null);
+		};
+	    return retu;
+	};
+
+	let retu = parser_accept_parse(p, (ip: *parser) => *Node {
+		if parser_accept_token(ip, TOKEN_CONTINUE) == cast(*token, null) {
+		    return cast(*Node, null);
+		};
+		
+		let n = Node{};
+		n.type = NODE_CONTINUE_STATEMENT;
+		return create_node(ip, n);
+	});
+	if retu != cast(*Node, null) {
+		if parser_accept_token(p, TOKEN_SEMICOLON) == cast(*token, null) {
+		    return cast(*Node, null);
+		};
+	    return retu;
+	};
 
 	printf("None\n");