syntax ::= {{_include|_use}|container}[ {{_include|_use}|container} ...]

name ::=<\w>+

file_name ::=<\w./>+

mod_name ::= <\w>+[::<\w>+...]

_include ::= include file_name ;

_use ::= use alias mod_name ;

alias ::= <\w>+

type ::=<\w>+

multi ::=*

container ::=type [multi] name[ : expression [, expression ...]] [body];

instance ::= name[ ( expression [, expression ...])]

string ::=[{<^\\">+|<\\><\w\W>}...]

number ::=[{+|-}] <0-9>+[.<0-9>+[e[-]<0-9>+]]

bin_op ::={+|-|&|<|>|=}

un_op ::=!

expression ::= {"string"|number|instance|(expression)|{"string"|number|instance|(expression)} bin_op expression|un_op expression}

body ::= <{>
    [{body_property|container} ...]
<}>

complex_name ::= <\w>+[.<\w>+...]

body_property ::= complex_name = expression;