| Lists | Values | Expression |
Expressions allways works on a list of values, although, usually, it will be one (1) value. The principle that everything works on a list is simple, yet profound. There is a slight risc of loosing sight of complexity, but it allows a rather wide range of solutions.
expression-label ::= label
format ::= identifier
label-expression ::= expression-label [s] spec expression
list-content ::= label-expression [[s] sep label-expression]...
| expression [[s] sep expression]...
|
expression-list ::= list-start list-content [s] list-end
sub-select ::= expression-list
| [ expression ]
variable ::= identifier [sub-select]... [its variable | all]
value ::= variable
| ( lit-integer | lit-real | lit-complex | lit-nan) [[s] unit-label]
| lit-text
Nota Bene: the terms dyadic-symbol and unary-symbol are not defined. See Elements for the use and meaning of symbols and their relative priority.
uni-expr ::= value
| unary-symbol [s] uni-expr
expression ::= uni-expr [[s] dyadic-symbol [s] uni-expr ]...
foo(`x`:1, `name`:"Hello").bar.*