Here is the complete syntax of Prolix 2.1 in extended BNF. As
usual in extended BNF, {A}
means 0 or more
As
, and [A]
means an optional
A
.
chunk ::= block block ::= {stat} {';'} stat ::= ';' | obj {attr exp} | Name obj {attr exp} | class Name {attr exp} | if exp group | loop exp group | require {Name | LiteralString} | skip | break obj ::= '$' Name attr ::= ':' Name group ::= '{' block '}' exp ::= none | Numeral | LiteralString | obj attr | group