roza/doc/roza.bnf

25 lines
521 B
BNF
Raw Normal View History

2023-12-09 17:24:41 +00:00
MOD ::= EXPR*
2023-12-11 17:01:22 +00:00
EXPR ::=
| ASSERT
| VARDECL
| VARSET
| BLOCK
2023-12-16 18:12:20 +00:00
| OR
2023-12-11 17:01:22 +00:00
ASSERT ::= assert EXPR
VARDECL ::= let ident assign EXPR
VARSET ::= ident assign EXPR
BLOCK ::= begin EXPR* end
2023-12-16 18:12:20 +00:00
OR ::= AND (or AND)*
AND ::= EQNE (and EQNE)*
EQNE ::=
2023-12-15 20:32:17 +00:00
| CMP
| CMP eq CMP
| CMP ne CMP
2023-12-15 21:31:01 +00:00
CMP ::= TERM ((lt | le | ge | gt) TERM)?
TERM ::= FACTOR ((add | sub) FACTOR)*
FACTOR ::= POWER ((mul | div | mod) POWER)*
POWER ::= UNARY (pow UNARY)?
2023-12-16 18:12:20 +00:00
UNARY ::= sub? GROUP | not? GROUP
2023-12-15 21:31:01 +00:00
GROUP ::= BUILTIN | opar EXPR cpar
BUILTIN ::= num | bool | str | ident