aboutsummaryrefslogtreecommitdiff
path: root/boot/parser.yy
diff options
context:
space:
mode:
Diffstat (limited to 'boot/parser.yy')
-rw-r--r--boot/parser.yy6
1 files changed, 6 insertions, 0 deletions
diff --git a/boot/parser.yy b/boot/parser.yy
index ab386fe..eaf1a7c 100644
--- a/boot/parser.yy
+++ b/boot/parser.yy
@@ -112,6 +112,8 @@ along with GCC; see the file COPYING3. If not see
BEGIN_BLOCK "begin"
END_BLOCK "end"
DEFER "defer"
+ BLOCK "block"
+ BREAK "break"
CASE "case"
OF "of"
TO "to"
@@ -582,6 +584,10 @@ statement:
| call_expression { $$ = $1.release(); }
| "defer" statements "end"
{ $$ = new boot::defer_statement(boot::make_position(@$), $2); }
+ | "block" identifier statements "end"
+ { $$ = new boot::block_statement(boot::make_position(@$), std::move(*$2), $3); }
+ | "break" identifier
+ { $$ = new boot::break_statement(boot::make_position(@$), std::move(*$2)); }
| "case" expression "of" switch_cases else_statements "end"
{ $$ = new boot::case_statement(boot::make_position(@$), $2, $4, $5); }
| %empty { $$ = new boot::empty_statement(boot::make_position(@$)); }