7.1 Expression

7.1.1 Definitions

Each expression is equal to an equation which forms a rule for the calculation of a value.

expression ::=
    relation { and relation }
    | relation { or relation }
    | relation { xor relation }
    | relation { nand relation }
    | relation { nor relation }

relation ::=    shift_expression [ relational_operator shift_expression ]

shift_expression ::=
    simple_expression [ shift_operator simple_expression ]

simple_expression ::=
    [ sign ] term { adding_operator term }

term ::=
    factor { multiplying_operator factor }

factor ::=
    primary [ ** primary ]
    | abs primary
    | not primary

primary ::=
    name
    | literal
    | aggregate
    | function_call
    | qualified_expression
    | type_conversion
    | allocator
    | ( expression )