Waddle_Language/grammar/operations/control_flow.bnf

66 lines
2.5 KiB
BNF
Raw Permalink Normal View History

<statement> ::= <optional_whitespace>
<comment>*
<optional_whitespace>
(<assignment_statement>
| <if_statement>
| <while_statement>
| <loop_statement>
| <reverse_loop_statement>
| <function_call_statement>
| <return_statement>
| <using_statement>
| <attempt_statement>
| <fail_statement>)
<optional_whitespace>
<comment>*
<optional_whitespace>
2025-11-23 06:58:46 +00:00
<assignment_statement> ::= <my_identifier> ".set(" <expression> ")" ";"
<if_statement> ::= <if_statement_keyword>
<optional_whitespace>
"("
<optional_whitespace>
<boolean_expression>
<optional_whitespace> ")"
<standard_statement_block>
(<elseif_statement_keyword>
<optional_whitespace>
"("
<optional_whitespace>
<boolean_expression>
<optional_whitespace>
")"
<standard_statement_block>
)?
(<else_statement_keyword>
<optional_whitespace>
<standard_statement_block>
)?
2025-11-23 06:58:46 +00:00
<standard_statement_block> ::= <optional_whitespace> "{" <optional_whitespace> <statement>* <optional_whitespace> "}" <optional_whitespace>
<while_statement> ::= <while_loop_keyword> "(" <expression> ")" <standard_statement_block>
2025-11-23 06:58:46 +00:00
<loop_statement> ::= <for_loop_keyword> "(" <identifier> "," <expression> "->" <expression>
("," <expression>)? ")"
<standard_statement_block>
<reverse_loop_statement> ::= <reverse_for_loop_keyword> "(" <identifier> "," <expression> "->" <expression>
("," <expression>)? ")"
<standard_statement_block>
2025-11-23 06:58:46 +00:00
<function_call_statement> ::= <my_identifier> "(" <argument_list>? ")" ";"
<return_statement> ::= <return_statement_keyword> <expression> ";"
2025-11-23 06:58:46 +00:00
<using_statement> ::= <context_management_keyword> <type> <identifier> ".set(" <expression> ")"
<standard_statement_block>
<attempt_statement> ::= <expression> ".attempt" "{" <attempt_handler>* "}"
<attempt_handler> ::= ("ok" | <identifier> | "error") <standard_statement_block>
<fail_statement> ::= <my_identifier> "." <exception_throw_keyword> "(" <inherited_error_type> ("(" <argument_list>? ")")? ")" ";"