Skip to content

Commit 1ff3ed0

Browse files
committed
feat: update staging with keyword rename
1 parent 48d4ee8 commit 1ff3ed0

File tree

1 file changed

+11
-3
lines changed

1 file changed

+11
-3
lines changed

grammar.ebnf

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ KEYWORD_SUDO = 'sudo' ;
8585
KEYWORD_SUCCEEDED = 'succeeded' ;
8686
KEYWORD_THEN = 'then' ;
8787
KEYWORD_TRUST = 'trust' ;
88+
KEYWORD_EXITED = 'exited' ;
8889
KEYWORD_UNSAFE = 'unsafe' ;
8990
KEYWORD_WHILE = 'while' ;
9091
@@ -127,7 +128,7 @@ list = empty_list | full_list ;
127128
command_modifier = [ KEYWORD_SILENT ], [ KEYWORD_TRUST ], [ KEYWORD_SUDO ] ;
128129
command_modifier_block = command_modifier, multiline_block ;
129130
command_base = '$', { ANY_CHAR | interpolation }, '$' ;
130-
command = command_modifier, command_base, [ failure_handler | success_handler ] ;
131+
command = command_modifier, command_base, [ handler ] ;
131132
132133
(* Operations *)
133134
binary_operation = expression, BINARY_OP, expression ;
@@ -138,13 +139,20 @@ parentheses = '(', expression, ')' ;
138139
139140
(* Failure handler *)
140141
failure_propagation = '?';
141-
failure_block = KEYWORD_FAILED, block ;
142+
failure_block = KEYWORD_FAILED, {'(', identifier, ')'}, block ;
142143
failure_handler = failure_propagation | failure_block ;
143144
144145
(* Success handler *)
145146
success_block = KEYWORD_SUCCEEDED, block ;
146147
success_handler = success_block ;
147148
149+
(* Exited handler *)
150+
exited_block = KEYWORD_EXITED, {'(', identifier, ')'}, block ;
151+
exited_handler = exited_block ;
152+
153+
(* All handlers combined *)
154+
handler = success_handler | failure_handler | exited_handler ;
155+
148156
(* Variable *)
149157
variable_index = '[', expression, ']' ;
150158
variable_init_mut = KEYWORD_LET, identifier, '=', expression ;
@@ -154,7 +162,7 @@ variable_set = identifier, variable_index?, '=', expression ;
154162
155163
(* Function *)
156164
function_call = command_modifier, identifier, '(', [ expression, { ',', expression } ], ')' ;
157-
function_call_failed = function_call, [ failure_handler | success_handler ] ;
165+
function_call_failed = function_call, [ handler ] ;
158166
function_def = [ VISIBILITY ], KEYWORD_FUN, identifier, '(', [ identifier, { ',', identifier } ], ')', block ;
159167
function_def_typed = [ VISIBILITY ], KEYWORD_FUN, identifier, '(',
160168
[ identifier, ':', TYPE, { ',', identifier, ':', TYPE } ], ')', ':', TYPE, block ;

0 commit comments

Comments
 (0)