Waddle_Language/core/bnf/expressions.bnf

47 lines
1.8 KiB
BNF
Raw Normal View History

2025-11-23 06:58:46 +00:00
<expression> ::= <my_identifier>
| <literal>
| <object_method_call>
| "(" <expression> ")"
| <lambda_expression>
<boolean_expression> ::= <boolean_literal>
| "(" <boolean_expression> ")"
| <my_identifier>.eq(<expression>)
| <my_identifier>.is(<expression>)
| <my_identifier>.not(<expression>)
| <my_identifier>.gt(<expression>)
| <my_identifier>.lt(<expression>)
| <my_identifier>.gte(<expression>)
| <my_identifier>.lte(<expression>)
| Boolean.or(<boolean_expression>, <boolean_expression>)
| Boolean.and(<boolean_expression>, <boolean_expression>)
<object_method_call> ::= <my_identifier> "." <method_name> "(" <argument_list>? ")"
| <my_identifier> ".sum()"
Note: "set" is available on all base objects.
Methods listed after it are grouped by type:
group 1 are String methods,
group 2 are Integer/Decimal methods,
group 3 are Array methods,
group 4 are Integer Array methods
<method_name> ::= "set"
| "length" | "reverse" | "split" | "format" | "search" | "concat" | "replace"
| "add" | "subtract" | "multiply" | "divide" | "mod" | "round"
| "remove" | "first" | "last" | "find" | "glue" | "contains" | "add" | "each"
| "sum"
| <identifier>
<lambda_expression> ::= "fn" "(" <parameter_list>? ")" "->" "[" <type> "]" "{" <statement>* "}"
<literal> ::= <number_literal> | <string_literal> | <boolean_literal>
<number_literal> ::= <digit>+
<string_literal> ::= '"' [^"]* '"'
<boolean_literal> ::= "True" | "False"
<my_identifier> ::= "my." <identifier>