A real expression is built from operators and operands:
real-ref ::= real-variable | real-array "[" index "]" | object "->" real-attribute | object "->" real-array-attribute "[" index "]" | table-ref ::= table "@" place "->" column-name primary ::= literal-constant | symbolic-constant | "#" | real-ref | table-ref | function-name "(" arguments ")" | (real-expression) factor ::= primary | factor "^" primary term ::= factor | term "*" factor | term "/" factor real-expr ::= term | "+" term | "-" term | real-expr "+" term | real-expr "-" term |
It may contain functions, Parentheses indicate operator precedence if required. Constant sub-expressions are evaluated immediately, and the result is stored as a constant.