expressionTerm

An expression term is a basic unit of expression: a term (literal, identifier, function call, selector), optionally followed by member access, indexing, conversion, arithmetic, or conditional operators.

Examples

Member access via dot

Patient.birthDate

List indexing

Conditions[0]

Unit conversion

convert 5 'mg' to 'g'

Start of an interval

start of "Measurement Period"

If-then-else conditional

if AgeInYears() >= 18 then 'adult' else 'minor'

Case expression

case
  when AgeInYears() < 2 then 'infant'
  when AgeInYears() < 18 then 'child'
  else 'adult'
end

Distinct list

distinct ({ 1, 2, 2, 3 })
Railroad Diagram
100%
term expressionTerm . qualifiedInvocation expressionTerm [ expression ] convert expression to typeSpecifier start end of expressionTerm dateTimeComponent from expressionTerm expressionTerm ^ * / div mod expressionTerm expressionTerm + - & expressionTerm if expression then expression else expression case expression caseExpressionItem else expression end distinct flatten expression

scroll to zoom · drag to pan · click green rules or blue tokens to navigate

EBNF

expressionTerm
  : term
  | expressionTerm '.' qualifiedInvocation
  | expressionTerm '[' expression ']'
  | 'convert' expression 'to' (typeSpecifier | unit)
  | ('+' | '-') expressionTerm
  | ('start' | 'end') 'of' expressionTerm
  | dateTimeComponent 'from' expressionTerm
  | 'duration' 'in' pluralDateTimePrecision 'of' expressionTerm
  | expressionTerm ('^' | '*' | '/' | 'div' | 'mod' | '+' | '-' | '&') expressionTerm
  | 'if' expression 'then' expression 'else' expression
  | 'case' expression? caseExpressionItem+ 'else' expression 'end'
  | ('distinct' | 'flatten') expression
  | ('expand' | 'collapse') expression ('per' ...)?
  ;

Used In