evaluate: compound_statement_body ; expression EOT EOF
evaluate ::= ( compound_statement_body ';' )? expression ( 'EOT' | 'EOF' )
no referencesstatement_list: statement
statement_list
         ::= statement*
referenced by: case_else code compound_statement_body do_statement for_statement if_statement if_statement_else op_body when_def while_statement code: statement_list EOT EOF
code     ::= statement_list ( 'EOT' | 'EOF' )
no referencesstatement: statement_body ;
         ::= statement_body ';'
referenced by: statement_list op_before_returns: OPERATOR IDENTIFIER ( IDENTIFIER type_ref , )
         ::= 'OPERATOR' 'IDENTIFIER' '(' ( 'IDENTIFIER' type_ref ( ',' 'IDENTIFIER' type_ref )* )? ')'
referenced by: getoperatorreturntype op_after_returns: IDENTIFIER FOREIGN TEXT ENDFOREIGN op_updates op_synonym op_version ; op_body END OPERATOR
         ::= ( op_updates op_synonym op_version ';' op_body 'END' | 'IDENTIFIER' 'FOREIGN' 'TEXT'* 'ENDFOREIGN' ) 'OPERATOR'?
referenced by: getoperatorreturntype getoperatorreturntype: op_before_returns op_returns op_after_returns no referencesgetheading: heading
         ::= heading
no referencesgetsignature: op_signature op_returns
         ::= op_signature op_returns
no referencesstatement_body: assignment loop op_def type_def drop alter var_def db_constraint_def relation_array_load begin_transaction compound_statement_body COMMIT ROLLBACK call return_statement case_statement if_statement leave write writeln output announce execute set BACKUP
         ::= assignment
           | loop
           | op_def
           | type_def
           | drop
           | alter
           | var_def
           | db_constraint_def
           | relation_array_load
           | begin_transaction
           | compound_statement_body
           | 'COMMIT'
           | 'ROLLBACK'
           | call
           | return_statement
           | case_statement
           | if_statement
           | leave
           | write
           | writeln
           | output
           | announce
           | execute
           | set
           | 'BACKUP'
referenced by: statement write: WRITE expression
write    ::= 'WRITE' expression
referenced by: statement_body writeln: WRITELN expression
writeln  ::= 'WRITELN' expression?
referenced by: statement_body output: OUTPUT expression
output   ::= 'OUTPUT' expression
referenced by: statement_body announce: ANNOUNCE STRING_LITERAL
announce ::= 'ANNOUNCE' 'STRING_LITERAL'
referenced by: statement_body execute: EXECUTE expression
execute  ::= 'EXECUTE' expression
referenced by: statement_body set: SET IDENTIFIER IDENTIFIER
set      ::= 'SET' 'IDENTIFIER' 'IDENTIFIER'
referenced by: statement_body compound_statement_body: BEGIN ; statement_list END
         ::= 'BEGIN' ';' statement_list 'END'
referenced by: evaluate statement_body op_def: OPERATOR IDENTIFIER ( parameter_def_commalist ) op_returns rel_op_def external_op_def
op_def   ::= 'OPERATOR' 'IDENTIFIER' '(' parameter_def_commalist ')' op_returns ( rel_op_def | external_op_def )
referenced by: statement_body lambda: OPERATOR lambda_definition END OPERATOR LAMBDA lambda_definition LAMBDAEND
lambda   ::= 'OPERATOR' lambda_definition 'END' 'OPERATOR'?
           | 'LAMBDA' lambda_definition 'LAMBDAEND'
referenced by: literal lambda_definition: ( parameter_def_commalist ) RETURNS type_ref ; op_body
         ::= '(' parameter_def_commalist ')' 'RETURNS' type_ref ';' op_body
referenced by: lambda external_op_def: IDENTIFIER FOREIGN TEXT ENDFOREIGN OPERATOR
         ::= 'IDENTIFIER' 'FOREIGN' 'TEXT'* 'ENDFOREIGN' 'OPERATOR'?
referenced by: op_def rel_op_def: op_updates op_synonym op_version ; op_body END OPERATOR
         ::= op_updates op_synonym op_version ';' op_body 'END' 'OPERATOR'?
referenced by: op_def op_returns: RETURNS type_ref
         ::= ( 'RETURNS' type_ref )?
referenced by: getoperatorreturntype getsignature op_def op_updates: UPDATES { ALL BUT parameter_name_commalist }
         ::= ( 'UPDATES' '{' ( 'ALL' 'BUT' parameter_name_commalist )? '}' )?
referenced by: op_after_returns rel_op_def op_synonym: synonym_def
         ::= synonym_def?
referenced by: op_after_returns rel_op_def op_version: VERSION IDENTIFIER
         ::= ( 'VERSION' 'IDENTIFIER' )?
referenced by: op_after_returns rel_op_def op_body: statement_list referenced by: agg_aggregate_inline lambda_definition op_after_returns rel_op_def summarize_aggregate summarize_aggregated return_statement: RETURN expression
         ::= 'RETURN' expression?
referenced by: statement_body parameter_def_commalist: parameter_def ,
         ::= ( parameter_def ( ',' parameter_def )* )?
referenced by: lambda_definition op_def parameter_def: IDENTIFIER type_ref
         ::= 'IDENTIFIER' type_ref
referenced by: parameter_def_commalist parameter_name_commalist: IDENTIFIER ,
         ::= ( 'IDENTIFIER' ( ',' 'IDENTIFIER' )* )?
referenced by: op_updates synonym_def: SYNONYMS { user_op_name_commalist }
         ::= 'SYNONYMS' '{' user_op_name_commalist '}'
referenced by: op_synonym user_op_name_commalist: IDENTIFIER ,
         ::= 'IDENTIFIER' ( ',' 'IDENTIFIER' )*
referenced by: synonym_def drop: DROP OPERATOR op_signature VAR CONSTRAINT TYPE IDENTIFIER
drop     ::= 'DROP' ( 'OPERATOR' op_signature | ( 'VAR' | 'CONSTRAINT' | 'TYPE' ) 'IDENTIFIER' )
referenced by: statement_body op_signature: IDENTIFIER ( type_ref_commalist )
         ::= 'IDENTIFIER' '(' type_ref_commalist ')'
referenced by: drop getsignature alter: ALTER alter_var
alter    ::= 'ALTER' alter_var
referenced by: statement_body alter_var: VAR IDENTIFIER alter_var_action_optional var_keydeflist
         ::= 'VAR' 'IDENTIFIER' alter_var_action_optional var_keydeflist?
referenced by: alter alter_var_action_optional: alter_var_action
         ::= alter_var_action*
referenced by: alter_var alter_var_action: RENAME IDENTIFIER TO DROP IDENTIFIER TYPE_OF IDENTIFIER TO type_ref INSERT attribute_spec
         ::= ( 'RENAME' 'IDENTIFIER' 'TO' | 'DROP' ) 'IDENTIFIER'
           | 'TYPE_OF' 'IDENTIFIER' 'TO' type_ref
           | 'INSERT' attribute_spec
referenced by: alter_var_action_optional op_type: OPERATOR ( type_ref_commalist ) RETURNS type_ref
op_type  ::= 'OPERATOR' '(' type_ref_commalist ')' ( 'RETURNS' type_ref )?
referenced by: type_ref type_ref_commalist: type_ref ,
         ::= ( type_ref ( ',' type_ref )* )?
referenced by: op_signature op_type type_def: TYPE IDENTIFIER type_def_kind
type_def ::= 'TYPE' 'IDENTIFIER' type_def_kind
referenced by: statement_body type_def_kind: type_def_external type_def_internal
         ::= type_def_external
           | type_def_internal
referenced by: type_def type_def_external: IDENTIFIER FOREIGN TEXT ENDFOREIGN TYPE
         ::= 'IDENTIFIER' 'FOREIGN' 'TEXT'* 'ENDFOREIGN' 'TYPE'?
referenced by: type_def_kind type_def_internal: type_def_internal_ordinal type_def_internal_union type_def_internal_is_or_possrep referenced by: type_def_kind type_def_internal_is_or_possrep: is_def possrep_def_list
         ::= is_def
           | possrep_def_list
referenced by: type_def_internal type_def_internal_ordinal: type_def_internal_opt_ordinal
         ::= type_def_internal_opt_ordinal?
referenced by: type_def_internal type_def_internal_opt_ordinal: ORDINAL ORDERED
         ::= 'ORDINAL'
           | 'ORDERED'
referenced by: type_def_internal_ordinal type_def_internal_union: UNION
         ::= 'UNION'?
referenced by: type_def_internal is_def: IS { single_inheritance_is_def multiple_inheritance_is_def } referenced by: type_def_internal_is_or_possrep single_inheritance_is_def: IDENTIFIER possrep_or_specialization_details
         ::= 'IDENTIFIER' possrep_or_specialization_details
referenced by: is_def possrep_or_specialization_details: specialisation_constraint_def derived_possrep_def_list possrep_def_list
           | possrep_def_list
referenced by: single_inheritance_is_def multiple_inheritance_is_def: scalar_type_name_commalist derived_possrep_def_list referenced by: is_def scalar_type_name_commalist: IDENTIFIER ,
         ::= 'IDENTIFIER' ( ',' 'IDENTIFIER' )*
referenced by: multiple_inheritance_is_def possrep_def_list: possrep_def possrep_opt_initialiser
         ::= possrep_def* possrep_opt_initialiser
referenced by: possrep_or_specialization_details type_def_internal_is_or_possrep possrep_opt_initialiser: INIT possrep_initialiser_assignments
         ::= ( 'INIT' possrep_initialiser_assignments+ )?
referenced by: possrep_def_list possrep_initialiser_assignments: IDENTIFIER ( assignment )
         ::= 'IDENTIFIER' '(' assignment ')'
referenced by: possrep_opt_initialiser possrep_def: POSSREP possrep_def_identifier { ( possrep_component_def_commalist possrep_opt_constraint_def } )
         ::= 'POSSREP' possrep_def_identifier ( '{' | '(' ) possrep_component_def_commalist possrep_opt_constraint_def ( '}' | ')' )
referenced by: possrep_def_list possrep_def_identifier: IDENTIFIER
         ::= 'IDENTIFIER'?
referenced by: possrep_def possrep_opt_constraint_def: constraint_def
         ::= constraint_def?
referenced by: possrep_def possrep_component_def_commalist: possrep_component_def ,
         ::= ( possrep_component_def ( ',' possrep_component_def )* )?
referenced by: possrep_def possrep_component_def: IDENTIFIER type_ref
         ::= 'IDENTIFIER' type_ref
referenced by: possrep_component_def_commalist constraint_def: CONSTRAINT expression
         ::= 'CONSTRAINT' expression
referenced by: possrep_opt_constraint_def specialisation_constraint_def: CONSTRAINT expression
         ::= 'CONSTRAINT' expression
referenced by: possrep_or_specialization_details derived_possrep_def_list: derived_possrep_def
         ::= derived_possrep_def+
referenced by: multiple_inheritance_is_def possrep_or_specialization_details derived_possrep_def: POSSREP derived_possrep_def_opt_identifier ( { derived_possrep_component_def_commalist } )
         ::= 'POSSREP' derived_possrep_def_opt_identifier ( '(' | '{' ) derived_possrep_component_def_commalist ( '}' | ')' )
referenced by: derived_possrep_def_list derived_possrep_def_opt_identifier: IDENTIFIER
         ::= 'IDENTIFIER'?
referenced by: derived_possrep_def derived_possrep_component_def_commalist: derived_possrep_component_def , referenced by: derived_possrep_def derived_possrep_component_def: IDENTIFIER = IDENTIFIER ( IDENTIFIER )
         ::= 'IDENTIFIER' '=' 'IDENTIFIER' '(' 'IDENTIFIER' ')'
referenced by: derived_possrep_component_def_commalist var_def: VAR IDENTIFIER var_scalar_or_tuple var_relvar
var_def  ::= 'VAR' 'IDENTIFIER' ( var_scalar_or_tuple | var_relvar )
referenced by: statement_body var_relvar: REAL BASE PRIVATE var_type_or_init_value PUBLIC type_ref var_keydeflist VIRTUAL expression var_keydeflistoptional var_relvar_external
         ::= ( ( 'REAL' | 'BASE' | 'PRIVATE' ) var_type_or_init_value | 'PUBLIC' type_ref ) var_keydeflist
           | 'VIRTUAL' expression var_keydeflistoptional
           | var_relvar_external
referenced by: var_def var_relvar_external: EXTERNAL IDENTIFIER STRING_LITERAL IDENTIFIER
         ::= 'EXTERNAL' 'IDENTIFIER' 'STRING_LITERAL' 'IDENTIFIER'?
referenced by: var_relvar var_keydeflist: var_keydef
         ::= var_keydef+
referenced by: alter_var var_relvar var_keydeflistoptional: var_keydef
         ::= var_keydef*
referenced by: var_relvar var_keydef: KEY { attribute_name_list }
         ::= 'KEY' '{' attribute_name_list '}'
referenced by: var_keydeflist var_keydeflistoptional var_scalar_or_tuple: var_type_or_init_value
         ::= var_type_or_init_value
referenced by: var_def var_type_or_init_value: var_type_and_optional_init var_init
         ::= var_type_and_optional_init
           | var_init
referenced by: var_relvar var_scalar_or_tuple var_type_and_optional_init: type_ref INIT ( expression )
         ::= type_ref ( 'INIT' '(' expression ')' )?
referenced by: var_type_or_init_value var_init: INIT ( expression )
var_init ::= 'INIT' '(' expression ')'
referenced by: var_type_or_init_value db_constraint_def: CONSTRAINT IDENTIFIER expression
         ::= 'CONSTRAINT' 'IDENTIFIER' expression
referenced by: statement_body type_ref: IDENTIFIER type_same_type_as tuple_type relation_type op_type type_array
type_ref ::= 'IDENTIFIER'
           | type_same_type_as
           | tuple_type
           | relation_type
           | op_type
           | type_array
referenced by: alter_var_action attribute_spec lambda_definition op_before_returns op_returns op_type parameter_def possrep_component_def type_array type_ref_commalist var_relvar var_type_and_optional_init type_array: ARRAY type_ref
         ::= 'ARRAY' type_ref
referenced by: type_ref type_same_type_as: SAME_TYPE_AS ( expression )
         ::= 'SAME_TYPE_AS' '(' expression ')'
referenced by: type_ref tuple_type: TUPLE heading_type
         ::= 'TUPLE' heading_type
referenced by: type_ref relation_type: RELATION heading_type
         ::= 'RELATION' heading_type
referenced by: type_ref heading_type: heading same_heading_as
         ::= heading
           | same_heading_as
referenced by: relation_heading relation_type tuple_type same_heading_as: SAME_HEADING_AS ( expression )
         ::= 'SAME_HEADING_AS' '(' expression ')'
referenced by: heading_type relation_array_load: LOAD IDENTIFIER FROM expression
         ::= 'LOAD' 'IDENTIFIER' 'FROM' expression
referenced by: statement_body begin_transaction: BEGIN TRANSACTION
         ::= 'BEGIN' 'TRANSACTION'
referenced by: statement_body case_statement: CASE ; when_def_list case_else END CASE
         ::= 'CASE' ';' when_def_list case_else 'END' 'CASE'?
referenced by: statement_body when_def_list: when_def
         ::= when_def+
referenced by: case_statement when_def: WHEN expression THEN statement_list referenced by: when_def_list case_else: ELSE statement_list
         ::= ( 'ELSE' statement_list )?
referenced by: case_statement if_statement: IF expression THEN statement_list if_statement_else END IF
         ::= 'IF' expression 'THEN' statement_list if_statement_else 'END' 'IF'?
referenced by: statement_body if_statement_else: ELSE statement_list
         ::= ( 'ELSE' statement_list )?
referenced by: if_statement loop: IDENTIFIER : do_statement while_statement for_statement
loop     ::= ( 'IDENTIFIER' ':' )? ( do_statement | while_statement | for_statement )
referenced by: statement_body do_statement: DO IDENTIFIER ::= expression TO expression ; statement_list END DO
         ::= 'DO' 'IDENTIFIER' '::=' expression 'TO' expression ';' statement_list 'END' 'DO'?
referenced by: loop while_statement: WHILE expression ; statement_list END WHILE
         ::= 'WHILE' expression ';' statement_list 'END' 'WHILE'?
referenced by: loop for_statement: FOR expression ; statement_list END FOR
         ::= 'FOR' expression ';' statement_list 'END' 'FOR'?
referenced by: loop leave: LEAVE IDENTIFIER
leave    ::= 'LEAVE' 'IDENTIFIER'
referenced by: statement_body call: CALL IDENTIFIER ( arglist )
call     ::= 'CALL' 'IDENTIFIER' '(' arglist ')'
referenced by: statement_body assignment: assign ,
         ::= assign ( ',' assign )*
referenced by: possrep_initialiser_assignments statement_body update_assignment assign: IDENTIFIER ::= INSERT D_INSERT I_DELETE IDENTIFIER expression DELETE IDENTIFIER delete_parameter UPDATE IDENTIFIER update_where : update_assignment
assign   ::= ( 'IDENTIFIER' '::=' | ( 'INSERT' | 'D_INSERT' | 'I_DELETE' ) 'IDENTIFIER' ) expression
           | 'DELETE' 'IDENTIFIER' delete_parameter
           | 'UPDATE' 'IDENTIFIER' update_where ':' update_assignment
referenced by: assignment delete_parameter: WHERE expression
         ::= ( 'WHERE'? expression )?
referenced by: assign update_where: WHERE expression
         ::= ( 'WHERE' expression )?
referenced by: assign update_assignment: { assignment }
         ::= '{' assignment? '}'
referenced by: assign rel_op substitute expression: attribute_from basic_expression tuple_from with tclose
         ::= attribute_from
           | basic_expression
           | tuple_from
           | with
           | tclose
referenced by: agg_aggregate_inline agg_aggregate_userdefined aggregate_operator arglist assign attribute_from attribute_name_commalist_attributes_of basic_expression bool_exp_commalist case_expression constraint_def db_constraint_def delete_parameter divide_per_optional do_statement evaluate exactly execute exp_commalist extend extend_add for_statement heading_exp_commalist if_expression if_statement image_in_bracketed name_intro output per_or_by primary_expression rank rel_op relation_array_load return_statement same_heading_as search specialisation_constraint_def substitute summarize summarize_aggregate summarize_aggregated summarize_userdefined summary tclose tuple_component tuple_exp_commalist tuple_from type_of type_same_type_as update_where var_init var_relvar var_type_and_optional_init when_def when_def_expr while_statement with write writeln attribute_from: IDENTIFIER FROM expression
         ::= 'IDENTIFIER' 'FROM' expression
referenced by: expression tuple_from: TUPLE FROM expression
         ::= 'TUPLE' 'FROM' expression
referenced by: expression with: WITH ( name_intro_commalist ) : expression
with     ::= 'WITH' '(' name_intro_commalist ')' ':' expression
referenced by: expression name_intro_commalist: name_intro ,
         ::= name_intro ( ',' name_intro )*
referenced by: with name_intro: IDENTIFIER ::= expression
         ::= 'IDENTIFIER' '::=' expression
referenced by: name_intro_commalist tclose: TCLOSE expression
tclose   ::= 'TCLOSE' expression
referenced by: expression basic_expression: order_expression [ expression ] ( arglist )
         ::= order_expression ( '[' expression ']' | '(' arglist ')' )?
referenced by: expression order_expression: where_expression ORDER ( order_item_commalist UNORDER ( )
         ::= where_expression ( ( 'ORDER' '(' order_item_commalist | 'UNORDER' '(' ) ')' )?
referenced by: basic_expression where_expression: equiv_expression WHERE equiv_expression
         ::= equiv_expression ( 'WHERE' equiv_expression )?
referenced by: order_expression equiv_expression: or_expression EQUIV
         ::= or_expression ( 'EQUIV' or_expression )*
referenced by: where_expression or_expression: xor_expression OR
         ::= xor_expression ( 'OR' xor_expression )*
referenced by: equiv_expression xor_expression: and_expression XOR
         ::= and_expression ( 'XOR' and_expression )*
referenced by: or_expression and_expression: compare_expression AND
         ::= compare_expression ( 'AND' compare_expression )*
referenced by: xor_expression compare_expression: rel_op EQ NEQ_A NEQ_U GTE_A GTE_U LTE_A LTE_U GT LT SUBSET SUBSET_OR_EQUAL SUPERSET SUPERSET_OR_EQUAL IN ELEMENT_U rel_op
         ::= rel_op ( ( 'EQ' | 'NEQ_A' | 'NEQ_U' | 'GTE_A' | 'GTE_U' | 'LTE_A' | 'LTE_U' | 'GT' | 'LT' | 'SUBSET' | 'SUBSET_OR_EQUAL' | 'SUPERSET' | 'SUPERSET_OR_EQUAL' | 'IN' | 'ELEMENT_U' ) rel_op )?
referenced by: and_expression rel_op: rel_project RENAME { renaming_commalist EXTEND : { extend_add_commalist SUMMARIZE per_or_by : { summarize_add_commalist } RANK BY ( order_item_commalist AS IDENTIFIER DIVIDEBY expression PER ( expression divide_per_optional ) UPDATE : update_assignment WRAP wrapping UNWRAP UNGROUP IDENTIFIER GROUP grouping UNION XUNION D_UNION INTERSECT MINUS I_MINUS LEFT RIGHT FULL JOIN TIMES COMPOSE SEMIJOIN NOT MATCHING SEMIMINUS rel_project
rel_op   ::= rel_project ( ( 'RENAME' '{' renaming_commalist | 'EXTEND' ':'? '{' extend_add_commalist | 'SUMMARIZE' per_or_by ':'? '{' summarize_add_commalist ) '}' | ( 'RANK' 'BY'? '(' order_item_commalist 'AS' 'IDENTIFIER' | 'DIVIDEBY' expression 'PER' '(' expression divide_per_optional ) ')' | 'UPDATE' ':'? update_assignment | 'WRAP' wrapping | ( 'UNWRAP' | 'UNGROUP' ) 'IDENTIFIER' | 'GROUP' grouping | ( 'UNION' | 'XUNION' | 'D_UNION' | 'INTERSECT' | 'MINUS' | 'I_MINUS' | ( 'LEFT' | 'RIGHT' | 'FULL' )? 'JOIN' | 'TIMES' | 'COMPOSE' | 'SEMIJOIN' | 'NOT'? 'MATCHING' | 'SEMIMINUS' ) rel_project )*
referenced by: compare_expression order_item_commalist: order_item ,
         ::= ( order_item ( ',' order_item )* )?
referenced by: order_expression rank rel_op order_item: ASC DESC IDENTIFIER
         ::= ( 'ASC' | 'DESC' ) 'IDENTIFIER'
referenced by: order_item_commalist divide_per_optional: , expression
         ::= ( ',' expression )?
referenced by: rel_op grouping: { attribute_name_list } AS IDENTIFIER
grouping ::= '{' attribute_name_list '}' 'AS' 'IDENTIFIER'
referenced by: rel_op wrapping: { attribute_name_list } AS IDENTIFIER
wrapping ::= '{' attribute_name_list '}' 'AS' 'IDENTIFIER'
referenced by: rel_op renaming_commalist: renaming ,
         ::= ( renaming ( ',' renaming )* )?
referenced by: rel_op renaming: renaming_simple renaming_prefix renaming_suffix
           | renaming_prefix
           | renaming_suffix
referenced by: renaming_commalist renaming_simple: IDENTIFIER AS IDENTIFIER
         ::= 'IDENTIFIER' 'AS' 'IDENTIFIER'
referenced by: renaming renaming_prefix: PREFIX STRING_LITERAL AS STRING_LITERAL
         ::= 'PREFIX' 'STRING_LITERAL' 'AS' 'STRING_LITERAL'
referenced by: renaming renaming_suffix: SUFFIX STRING_LITERAL AS STRING_LITERAL
         ::= 'SUFFIX' 'STRING_LITERAL' 'AS' 'STRING_LITERAL'
referenced by: renaming attribute_name_list: optional_all_but attribute_name_commalist referenced by: grouping per_or_by rel_project var_keydef wrapping optional_all_but: ALL BUT
         ::= ( 'ALL' 'BUT' )?
referenced by: attribute_name_list attribute_name_commalist: attribute_name_commalist_attributes_of attribute_name_commalist_list
           | attribute_name_commalist_list
referenced by: attribute_name_list attribute_name_commalist_attributes_of: ATTRIBUTES_OF ( expression )
         ::= 'ATTRIBUTES_OF' '(' expression ')'
referenced by: attribute_name_commalist attribute_name_commalist_list: IDENTIFIER ,
         ::= ( 'IDENTIFIER' ( ',' 'IDENTIFIER' )* )?
referenced by: attribute_name_commalist rel_project: add_expression { attribute_name_list }
         ::= add_expression ( '{' attribute_name_list '}' )?
referenced by: rel_op add_expression: mul_expression PLUS SUBT BARBAR
         ::= mul_expression ( ( 'PLUS' | 'SUBT' | 'BARBAR' ) mul_expression )*
referenced by: rel_project mul_expression: unary_expression STAR MULT_U DIVD_A DIVD_U MODL
         ::= unary_expression ( ( 'STAR' | 'MULT_U' | 'DIVD_A' | 'DIVD_U' | 'MODL' ) unary_expression )*
referenced by: add_expression unary_expression: NOT PLUS SUBT primary_expression
         ::= ( 'NOT' | 'PLUS' | 'SUBT' )* primary_expression
referenced by: mul_expression primary_expression: literal aggregate_operator exactly nadic_or nadic_equiv nadic_xor nadic_and nadic_union nadic_xunion nadic_disjoint_union nadic_intersect nadic_join nadic_times nadic_compose nadic_count nadic_sum nadic_avg nadic_max nadic_min extend rank summarize substitute case_expression if_expression search type_of image_in fn_invoke IDENTIFIER ( expression )
         ::= literal
           | aggregate_operator
           | exactly
           | nadic_or
           | nadic_equiv
           | nadic_xor
           | nadic_and
           | nadic_union
           | nadic_xunion
           | nadic_disjoint_union
           | nadic_intersect
           | nadic_join
           | nadic_times
           | nadic_compose
           | nadic_count
           | nadic_sum
           | nadic_avg
           | nadic_max
           | nadic_min
           | extend
           | rank
           | summarize
           | substitute
           | case_expression
           | if_expression
           | search
           | type_of
           | image_in
           | fn_invoke
           | 'IDENTIFIER'
           | '(' expression ')'
referenced by: unary_expression search: SEARCH ( expression , expression )
search   ::= 'SEARCH' '(' expression ',' expression ')'
referenced by: primary_expression type_of: TYPE_OF ( expression )
type_of  ::= 'TYPE_OF' '(' expression ')'
referenced by: primary_expression image_in: BANGBANG_A BANGBANG_U image_in_bracketed IDENTIFIER IMAGE_IN image_in_bracketed
image_in ::= ( 'BANGBANG_A' | 'BANGBANG_U' ) ( image_in_bracketed | 'IDENTIFIER' )
           | 'IMAGE_IN' image_in_bracketed
referenced by: primary_expression image_in_bracketed: ( expression , expression )
         ::= '(' expression ( ',' expression )? ')'
referenced by: image_in case_expression: CASE when_def_list_expr ELSE expression END CASE
         ::= 'CASE' when_def_list_expr 'ELSE' expression 'END' 'CASE'?
referenced by: primary_expression when_def_list_expr: when_def_expr
         ::= when_def_expr+
referenced by: case_expression when_def_expr: WHEN expression THEN expression
         ::= 'WHEN' expression 'THEN' expression
referenced by: when_def_list_expr if_expression: IF expression THEN expression ELSE expression END IF
         ::= 'IF' expression 'THEN' expression 'ELSE' expression 'END' 'IF'?
referenced by: primary_expression substitute: UPDATE expression : update_assignment
         ::= 'UPDATE' expression ':' update_assignment
referenced by: primary_expression nadic_optional_heading: heading { heading_exp_commalist }
         ::= heading? '{' heading_exp_commalist '}'
referenced by: nadic_disjoint_union nadic_intersect nadic_union nadic_xunion nadic_union: UNION nadic_optional_heading
         ::= 'UNION' nadic_optional_heading
referenced by: primary_expression nadic_xunion: XUNION nadic_optional_heading
         ::= 'XUNION' nadic_optional_heading
referenced by: primary_expression nadic_disjoint_union: D_UNION nadic_optional_heading
         ::= 'D_UNION' nadic_optional_heading
referenced by: primary_expression nadic_intersect: INTERSECT nadic_optional_heading
         ::= 'INTERSECT' nadic_optional_heading
referenced by: primary_expression nadic_join: JOIN { heading_exp_commalist }
         ::= 'JOIN' '{' heading_exp_commalist '}'
referenced by: primary_expression nadic_times: TIMES { heading_exp_commalist }
         ::= 'TIMES' '{' heading_exp_commalist '}'
referenced by: primary_expression nadic_compose: COMPOSE { heading_exp_commalist }
         ::= 'COMPOSE' '{' heading_exp_commalist '}'
referenced by: primary_expression nadic_or: OR { bool_exp_commalist }
nadic_or ::= 'OR' '{' bool_exp_commalist '}'
referenced by: primary_expression nadic_equiv: EQUIV { bool_exp_commalist }
         ::= 'EQUIV' '{' bool_exp_commalist '}'
referenced by: primary_expression nadic_xor: XOR { bool_exp_commalist }
         ::= 'XOR' '{' bool_exp_commalist '}'
referenced by: primary_expression nadic_and: AND { bool_exp_commalist }
         ::= 'AND' '{' bool_exp_commalist '}'
referenced by: primary_expression nadic_count: COUNT { exp_commalist }
         ::= 'COUNT' '{' exp_commalist '}'
referenced by: primary_expression nadic_sum: SUM { exp_commalist }
         ::= 'SUM' '{' exp_commalist '}'
referenced by: primary_expression nadic_avg: AVG { exp_commalist }
         ::= 'AVG' '{' exp_commalist '}'
referenced by: primary_expression nadic_max: MAX { exp_commalist }
         ::= 'MAX' '{' exp_commalist '}'
referenced by: primary_expression nadic_min: MIN { exp_commalist }
         ::= 'MIN' '{' exp_commalist '}'
referenced by: primary_expression exactly: EXACTLY ( expression , )
exactly  ::= 'EXACTLY' '(' expression ( ',' expression )* ')'
referenced by: primary_expression exp_commalist: expression ,
         ::= ( expression ( ',' expression )* )?
referenced by: nadic_avg nadic_count nadic_max nadic_min nadic_sum bool_exp_commalist: expression ,
         ::= ( expression ( ',' expression )* )?
referenced by: nadic_and nadic_equiv nadic_or nadic_xor heading_exp_commalist: expression ,
         ::= ( expression ( ',' expression )* )?
referenced by: nadic_compose nadic_join nadic_optional_heading nadic_times extend: EXTEND expression : { extend_add_commalist }
extend   ::= 'EXTEND' expression ':' '{' extend_add_commalist '}'
referenced by: primary_expression rank: RANK expression BY ( order_item_commalist AS IDENTIFIER )
rank     ::= 'RANK' expression 'BY' '(' order_item_commalist 'AS' 'IDENTIFIER' ')'
referenced by: primary_expression extend_add_commalist: extend_add ,
         ::= ( extend_add ( ',' extend_add )* )?
referenced by: extend rel_op extend_add: IDENTIFIER ::= expression
         ::= 'IDENTIFIER' '::=' expression
referenced by: extend_add_commalist summarize: SUMMARIZE expression per_or_by : { summarize_add_commalist }
         ::= 'SUMMARIZE' expression per_or_by ':' '{' summarize_add_commalist '}'
referenced by: primary_expression per_or_by: PER ( expression ) BY { attribute_name_list }
         ::= ( 'PER' '(' expression ')' | 'BY' '{' attribute_name_list '}' )?
referenced by: rel_op summarize summarize_add_commalist: summarize_add ,
         ::= summarize_add ( ',' summarize_add )*
referenced by: rel_op summarize summarize_add: IDENTIFIER ::= summary
         ::= 'IDENTIFIER' '::=' summary
referenced by: summarize_add_commalist summary: COUNT ( COUNTD SUM SUMD AVG AVGD MAX MIN AND OR EQUIV XOR UNION XUNION D_UNION INTERSECT ( EXACTLY EXACTLYD ( expression , expression ) summarize_aggregate summarize_aggregated summarize_userdefined
summary  ::= ( 'COUNT' '(' | ( ( 'COUNTD' | 'SUM' | 'SUMD' | 'AVG' | 'AVGD' | 'MAX' | 'MIN' | 'AND' | 'OR' | 'EQUIV' | 'XOR' | 'UNION' | 'XUNION' | 'D_UNION' | 'INTERSECT' ) '(' | ( 'EXACTLY' | 'EXACTLYD' ) '(' expression ',' ) expression ) ')'
           | summarize_aggregate
           | summarize_aggregated
           | summarize_userdefined
referenced by: summarize_add summarize_aggregate: AGGREGATE ( expression , expression ) ; op_body END AGGREGATE
         ::= 'AGGREGATE' '(' expression ( ',' expression )? ')' ';' op_body 'END' 'AGGREGATE'?
referenced by: summary summarize_aggregated: AGGREGATED ( expression , expression ) ; op_body END AGGREGATED
         ::= 'AGGREGATED' '(' expression ( ',' expression )? ')' ';' op_body 'END' 'AGGREGATED'?
referenced by: summary summarize_userdefined: IDENTIFIER ( SummarizeItemDistinct expression , expression )
         ::= 'IDENTIFIER' '(' SummarizeItemDistinct expression ( ',' expression )? ')'
referenced by: summary SummarizeItemDistinct: DISTINCT
         ::= 'DISTINCT'?
referenced by: summarize_userdefined fn_invoke: IDENTIFIER ( arglist )
         ::= 'IDENTIFIER' '(' arglist ')'
referenced by: primary_expression arglist: expression ,
arglist  ::= ( expression ( ',' expression )* )?
referenced by: basic_expression call fn_invoke aggregate_operator: COUNT ( SUM AVG MAX MIN AND OR EQUIV XOR UNION XUNION D_UNION INTERSECT ( expression , expression ) agg_aggregate
         ::= ( 'COUNT' '(' | ( 'SUM' | 'AVG' | 'MAX' | 'MIN' | 'AND' | 'OR' | 'EQUIV' | 'XOR' | 'UNION' | 'XUNION' | 'D_UNION' | 'INTERSECT' ) '(' expression ',' ) expression ')'
           | agg_aggregate
referenced by: primary_expression agg_aggregate: AGGREGATE agg_aggregate_inline agg_aggregate_userdefined
         ::= 'AGGREGATE' ( agg_aggregate_inline | agg_aggregate_userdefined )
referenced by: aggregate_operator agg_aggregate_inline: ( expression , expression , expression ) ; op_body END AGGREGATE
         ::= '(' expression ',' expression ( ',' expression )? ')' ';' op_body 'END' 'AGGREGATE'?
referenced by: agg_aggregate agg_aggregate_userdefined: IDENTIFIER ( expression , expression , expression )
         ::= 'IDENTIFIER' '(' expression ',' expression ( ',' expression )? ')'
referenced by: agg_aggregate literal: lambda tuple relation INTEGER_LITERAL STRING_LITERAL rational bool
           | tuple
           | relation
           | 'INTEGER_LITERAL'
           | 'STRING_LITERAL'
           | rational
           | bool
referenced by: primary_expression tuple: TUPLE { STAR tuple_component_commalist }
tuple    ::= 'TUPLE' '{' ( 'STAR' | tuple_component_commalist )? '}'
referenced by: literal tuple_component_commalist: tuple_component ,
         ::= tuple_component ( ',' tuple_component )*
referenced by: tuple tuple_component: IDENTIFIER expression
         ::= 'IDENTIFIER' expression
referenced by: tuple_component_commalist relation: RELATION relation_heading { tuple_exp_commalist } TABLE_DUM TABLE_DEE
           | 'TABLE_DUM'
           | 'TABLE_DEE'
referenced by: literal relation_heading: heading_type
         ::= heading_type?
referenced by: relation heading: { attribute_spec_commalist } referenced by: getheading heading_type nadic_optional_heading tuple_exp_commalist: expression ,
         ::= ( expression ( ',' expression )* )?
referenced by: relation attribute_spec_commalist: attribute_spec ,
         ::= attribute_spec ( ',' attribute_spec )*
referenced by: heading attribute_spec: IDENTIFIER type_ref
         ::= 'IDENTIFIER' type_ref
referenced by: alter_var_action attribute_spec_commalist rational: FLOATING_POINT_LITERAL INFINITY NAN
rational ::= 'FLOATING_POINT_LITERAL'
           | 'INFINITY'
           | 'NAN'
referenced by: literal bool: TRUE FALSE
bool     ::= 'TRUE'
           | 'FALSE'
referenced by: literal   ... generated by RR - Railroad Diagram Generator R R