Go to the first, previous, next, last section, table of contents.


6.1.8 Primitives

A primitive can be a parenthesized term. A primitive can also be an id-expression, which is an unqualified-id or qualified-id naming a formal parameter, a global variable, a data member, a member function, or an identifier introduced by a quantifier. Finally, a primitive can be the application of a trait function to arguments, or an lcpp-primary.

primitive ::= ( term )
      | id-expression
      | fcnId ( term-list )
      | lcpp-primary
fcnId ::= identifier

The sort of a parenthesized term is the sort of the enclosed term. Its meaning is the meaning of the term.

A fcnId is a trait function identifier; not a C++ function identifier. The sort of a term of the form fcnId ( term-list ) is given by the used traits as follows. Let the sorts of the terms in term-list be S1,...,Sn; then there must be a unique trait function named with the identifier of the fcnId, with signature S1,...,Sn -> T; and if so the sort of the whole primitive term is T. That is, the sort of the whole primitive term is the return sort of the trait function overloading that matches the sorts of the arguments.

Examples of primitives include (i + 1), i, and isEmpty(s1 \U s2).


Go to the first, previous, next, last section, table of contents.