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