snake/doc/grammar.bnf

20 lines
382 B
BNF

DOC ::= (VAR_DECL | RULE)*
RULE ::= TARGET rarrow DEPS BLOCK
TARGET ::= LITERAL+
DEPS ::= LITERAL*
BLOCK ::= obrace CMD_LST cbrace
CMD_LST ::= (CMD (comma CMD)* comma?)?
CMD ::= LITERAL*
LITERAL ::=
| ident
| var
| generic
| ARRAY
| INDEX
VAR_DECL ::= var assign (LITERAL | ARRAY | INDEX)
ARRAY ::= opar LITERAL* cpar
INDEX ::=
| (var|ARRAY) osquare ident (assign ident)? csquare