gux/doc/gux.bnf

41 lines
700 B
BNF
Raw Normal View History

ROOT ::= INSTR*
2024-02-10 15:16:00 +00:00
INSTR ::=
| LEXPR semicolon
| BEXPR
2024-02-10 15:16:00 +00:00
EXPR ::= LEXPR | BEXPR
LEXPR ::=
2024-02-10 15:16:00 +00:00
| OR
| ASSERT EXPR
| VARDECL
| CONSTDECL
| ASSIGN
2024-02-13 04:14:56 +00:00
BEXPR ::=
| BLOCK
| IF
IF ::=
| if EXPR BLOCK
| if EXPR BLOCK else BLOCK
| if EXPR BLOCK else IF
BLOCK ::= obrace INSTR* cbrace
VARDECL ::= var ident colon type? assign EXPR
CONSTDECL ::= ident colon type? assign EXPR
ASSIGN ::= ident assign EXPR
2024-02-10 15:16:00 +00:00
OR ::= AND (or AND)*
2024-02-11 14:45:39 +00:00
AND ::= EQNE (and EQNE)*
EQNE ::= CMP ((eq|ne) CMP)?
CMP ::= TERM ((lt|le|gt|ge) TERM)?
TERM ::= FACTOR ((add|sub) FACTOR)*
FACTOR ::= POW ((mul|div|mod) POW)*
POW ::= NOT (pow NOT)?
2024-02-10 15:16:00 +00:00
2024-02-11 14:45:39 +00:00
NOT ::= not* LITERAL
LITERAL ::= ident | BUILTIN | opar EXPR cpar
2024-02-11 14:45:39 +00:00
BUILTIN ::= bool | int | float | string