Waddle_Language/grammar/declarations/function_declarations.bnf

36 lines
1 KiB
BNF

<function_declaration> ::= <accessibility_modifier> <function_keyword> <identifier>
<function_signature>
(<function_error_identifier> <error_type_list>)?
"{" <statement>* "}"
<function_signature> ::= "(" <parameter_list>? ")"
<arrow_keyword> <return_type_list>
<error_type_list> ::= <error_type> ("," <error_type>)*
<error_type> ::= <identifier> ("/" <identifier>)?
<parameter_list> ::=
<parameter_group>?
<parameter_group> ::=
<required_parameters>
| <required_parameters> "," <default_parameters>
| <default_parameters>
<required_parameters> ::=
<required_parameter>
| <required_parameter> "," <required_parameters>
<default_parameters> ::=
<default_parameter>
| <default_parameter> "," <default_parameters>
<required_parameter> ::= <parameter_type> <identifier>
<default_parameter> ::= <parameter_type> <identifier> ".default(" <literal> ")"
<lambda_declaration> ::= <function_keyword> "(" <parameter_list>? ")"
<arrow_keyword> "[" <type> "]"
"{" <statement>* "}"