@@ -36,6 +36,7 @@ expression =
3636 builtins_expression |
3737 command |
3838 function_call |
39+ function_call_failed |
3940 identifier |
4041 list |
4142 null |
@@ -80,6 +81,7 @@ KEYWORD_REF = 'ref' ;
8081KEYWORD_RETURN = ' return' ;
8182KEYWORD_SILENT = ' silent' ;
8283KEYWORD_STATUS = ' status' ;
84+ KEYWORD_SUDO = ' sudo' ;
8385KEYWORD_SUCCEEDED = ' succeeded' ;
8486KEYWORD_THEN = ' then' ;
8587KEYWORD_TRUST = ' trust' ;
@@ -93,8 +95,6 @@ DIGIT = '0'..'9' ;
9395TYPE = ' Text' | ' Num' | ' Bool' | ' Null' ;
9496UNARY_OP = ' -' | KEYWORD_NOT ;
9597BINARY_OP = ' +' | ' -' | ' *' | ' /' | ' %' | KEYWORD_AND | KEYWORD_OR | ' ==' | ' !=' | ' <' | ' <=' | ' >' | ' >=' ;
96- SILENT_MOD = KEYWORD_SILENT ;
97- TRUST_MOD = KEYWORD_TRUST ;
9898VISIBILITY = KEYWORD_PUB ;
9999
100100(* Identifier *)
@@ -124,11 +124,10 @@ list = empty_list | full_list ;
124124
125125(* Command expression *)
126126(* The ordering of command modifiers doesn't matter *)
127- command_modifier = SILENT_MOD , [ TRUST_MOD ] ;
127+ command_modifier = [ KEYWORD_SILENT ] , [ KEYWORD_TRUST ], [ KEYWORD_SUDO ] ;
128128command_modifier_block = command_modifier , multiline_block ;
129129command_base = ' $' , { ANY_CHAR | interpolation }, ' $' ;
130- command = [ SILENT_MOD ], command_base , [ failure_handler | success_handler ] ;
131- command_trust = [ SILENT_MOD ], TRUST_MOD , command_base ;
130+ command = command_modifier , command_base , [ failure_handler | success_handler ] ;
132131
133132(* Operations *)
134133binary_operation = expression , BINARY_OP , expression ;
@@ -154,10 +153,8 @@ variable_get = identifier, variable_index? ;
154153variable_set = identifier , variable_index ? , ' =' , expression ;
155154
156155(* Function *)
157- function_call = identifier , ' (' , [ expression , { ' ,' , expression } ], ' )' ;
158- function_call_failed = [ SILENT_MOD ], function_call , failure_handler ;
159- function_call_succeeded = [ SILENT_MOD ], function_call , success_handler ;
160- function_call_trust = [ SILENT_MOD ], TRUST_MOD , function_call ;
156+ function_call = command_modifier , identifier , ' (' , [ expression , { ' ,' , expression } ], ' )' ;
157+ function_call_failed = function_call , [ failure_handler | success_handler ] ;
161158function_def = [ VISIBILITY ], KEYWORD_FUN , identifier , ' (' , [ identifier , { ' ,' , identifier } ], ' )' , block ;
162159function_def_typed = [ VISIBILITY ], KEYWORD_FUN , identifier , ' (' ,
163160 [ identifier , ' :' , TYPE , { ' ,' , identifier , ' :' , TYPE } ], ' )' , ' :' , TYPE , block ;
0 commit comments