The formal description of an expression syntax is:
expression_list ::= expression [ ',' expression_list ] .
expression_i(1) ::= tag .
expression_i(i) := expression_i(i-1) [ OP(i) expression_i(i) ] .
expression ::= expression_i(MAX_PREC) .
tag ::= UNOP tag
NUMBER
STRING
'(' expression ')'
VARIABLE { '[' expression_list ']' }
FUNC '(' expression_list ')'
.
where
The syntax analyzer is written to match an expression whenever an expression syntax definition element is to be matched according to these rules. The list of built-in function, unary operators and binary operators are defined in the module "global" variables, BuiltInFunctions, Unaries, and Binaries.