This repository has been archived on 2024-03-07. You can view files and clone it, but cannot push or open issues/pull-requests.
wongola/doc/grammar.bnf

33 lines
575 B
BNF
Raw Normal View History

PROG ::= INSTR*
2023-09-27 21:05:04 +00:00
INSTR ::=
| DIR
| EXPR semicolon
| FUNDECL
| return EXPR semicolon
| EXTERN semicolon
EXTERN ::= extern fun ident opar PARAMS cpar RET
FUNDECL ::= fun ident opar PARAMS cpar RET BLOCK
PARAMS ::= (ident type? (comma ident type?)*)
RET ::= type?
BLOCK ::= obrace INSTR* cbrace
2023-09-27 21:05:04 +00:00
2023-09-29 16:26:05 +00:00
DIR ::= hash ident EXPR (as ident)?
2023-09-27 21:05:04 +00:00
EXPR ::=
| ADDSUB
2023-09-27 21:05:04 +00:00
ADDSUB ::= MULDIVMOD ((add|sub) MULDIVMOD)*
MULDIVMOD ::= LITERAL ((mul|div|mod) LITERAL)*
LITERAL ::=
| ident
| int
| CALL
2023-09-29 09:18:03 +00:00
| NS
CALL ::= ident opar ARGS cpar
ARGS ::= (EXPR (comma EXPR)*)?
2023-09-29 09:18:03 +00:00
2023-09-29 16:26:05 +00:00
NS ::= ident (dot (ident|CALL))+