Values and Expressions



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.*