evaluate:
compound_statement_body
;
expression
EOT
EOF
evaluate
::= (
compound_statement_body
';' )?
expression
( 'EOT' | 'EOF' )
no references
statement_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 references
statement:
statement_body
;
statement
::=
statement_body
';'
referenced by:
statement_list
op_before_returns:
OPERATOR
IDENTIFIER
(
IDENTIFIER
type_ref
,
)
op_before_returns
::= '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_after_returns
::= (
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
getoperatorreturntype
::=
op_before_returns
op_returns
op_after_returns
no references
getheading:
heading
getheading
::=
heading
no references
getsignature:
op_signature
op_returns
getsignature
::=
op_signature
op_returns
no references
statement_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
statement_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'
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
compound_statement_body
::= '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
lambda_definition
::= '('
parameter_def_commalist
')' 'RETURNS'
type_ref
';'
op_body
referenced by:
lambda
external_op_def:
IDENTIFIER
FOREIGN
TEXT
ENDFOREIGN
OPERATOR
external_op_def
::= 'IDENTIFIER' 'FOREIGN' 'TEXT'* 'ENDFOREIGN' 'OPERATOR'?
referenced by:
op_def
rel_op_def:
op_updates
op_synonym
op_version
;
op_body
END
OPERATOR
rel_op_def
::=
op_updates
op_synonym
op_version
';'
op_body
'END' 'OPERATOR'?
referenced by:
op_def
op_returns:
RETURNS
type_ref
op_returns
::= ( 'RETURNS'
type_ref
)?
referenced by:
getoperatorreturntype
getsignature
op_def
op_updates:
UPDATES
{
ALL
BUT
parameter_name_commalist
}
op_updates
::= ( 'UPDATES' '{' ( 'ALL' 'BUT'
parameter_name_commalist
)? '}' )?
referenced by:
op_after_returns
rel_op_def
op_synonym:
synonym_def
op_synonym
::=
synonym_def
?
referenced by:
op_after_returns
rel_op_def
op_version:
VERSION
IDENTIFIER
op_version
::= ( 'VERSION' 'IDENTIFIER' )?
referenced by:
op_after_returns
rel_op_def
op_body:
statement_list
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_statement
::= 'RETURN'
expression
?
referenced by:
statement_body
parameter_def_commalist:
parameter_def
,
parameter_def_commalist
::= (
parameter_def
( ','
parameter_def
)* )?
referenced by:
lambda_definition
op_def
parameter_def:
IDENTIFIER
type_ref
parameter_def
::= 'IDENTIFIER'
type_ref
referenced by:
parameter_def_commalist
parameter_name_commalist:
IDENTIFIER
,
parameter_name_commalist
::= ( 'IDENTIFIER' ( ',' 'IDENTIFIER' )* )?
referenced by:
op_updates
synonym_def:
SYNONYMS
{
user_op_name_commalist
}
synonym_def
::= 'SYNONYMS' '{'
user_op_name_commalist
'}'
referenced by:
op_synonym
user_op_name_commalist:
IDENTIFIER
,
user_op_name_commalist
::= '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
)
op_signature
::= '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
alter_var
::= 'VAR' 'IDENTIFIER'
alter_var_action_optional
var_keydeflist
?
referenced by:
alter
alter_var_action_optional:
alter_var_action
alter_var_action_optional
::=
alter_var_action
*
referenced by:
alter_var
alter_var_action:
RENAME
IDENTIFIER
TO
DROP
IDENTIFIER
TYPE_OF
IDENTIFIER
TO
type_ref
INSERT
attribute_spec
alter_var_action
::= ( '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_commalist
::= (
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_kind
::=
type_def_external
|
type_def_internal
referenced by:
type_def
type_def_external:
IDENTIFIER
FOREIGN
TEXT
ENDFOREIGN
TYPE
type_def_external
::= '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
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
type_def_internal_is_or_possrep
::=
is_def
|
possrep_def_list
referenced by:
type_def_internal
type_def_internal_ordinal:
type_def_internal_opt_ordinal
type_def_internal_ordinal
::=
type_def_internal_opt_ordinal
?
referenced by:
type_def_internal
type_def_internal_opt_ordinal:
ORDINAL
ORDERED
type_def_internal_opt_ordinal
::= 'ORDINAL'
| 'ORDERED'
referenced by:
type_def_internal_ordinal
type_def_internal_union:
UNION
type_def_internal_union
::= 'UNION'?
referenced by:
type_def_internal
is_def:
IS
{
single_inheritance_is_def
multiple_inheritance_is_def
}
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
single_inheritance_is_def
::= 'IDENTIFIER'
possrep_or_specialization_details
referenced by:
is_def
possrep_or_specialization_details:
specialisation_constraint_def
derived_possrep_def_list
possrep_def_list
possrep_or_specialization_details
::=
specialisation_constraint_def
derived_possrep_def_list
?
|
possrep_def_list
referenced by:
single_inheritance_is_def
multiple_inheritance_is_def:
scalar_type_name_commalist
derived_possrep_def_list
multiple_inheritance_is_def
::=
scalar_type_name_commalist
derived_possrep_def_list
referenced by:
is_def
scalar_type_name_commalist:
IDENTIFIER
,
scalar_type_name_commalist
::= 'IDENTIFIER' ( ',' 'IDENTIFIER' )*
referenced by:
multiple_inheritance_is_def
possrep_def_list:
possrep_def
possrep_opt_initialiser
possrep_def_list
::=
possrep_def
*
possrep_opt_initialiser
referenced by:
possrep_or_specialization_details
type_def_internal_is_or_possrep
possrep_opt_initialiser:
INIT
possrep_initialiser_assignments
possrep_opt_initialiser
::= ( 'INIT'
possrep_initialiser_assignments
+ )?
referenced by:
possrep_def_list
possrep_initialiser_assignments:
IDENTIFIER
(
assignment
)
possrep_initialiser_assignments
::= 'IDENTIFIER' '('
assignment
')'
referenced by:
possrep_opt_initialiser
possrep_def:
POSSREP
possrep_def_identifier
{
(
possrep_component_def_commalist
possrep_opt_constraint_def
}
)
possrep_def
::= 'POSSREP'
possrep_def_identifier
( '{' | '(' )
possrep_component_def_commalist
possrep_opt_constraint_def
( '}' | ')' )
referenced by:
possrep_def_list
possrep_def_identifier:
IDENTIFIER
possrep_def_identifier
::= 'IDENTIFIER'?
referenced by:
possrep_def
possrep_opt_constraint_def:
constraint_def
possrep_opt_constraint_def
::=
constraint_def
?
referenced by:
possrep_def
possrep_component_def_commalist:
possrep_component_def
,
possrep_component_def_commalist
::= (
possrep_component_def
( ','
possrep_component_def
)* )?
referenced by:
possrep_def
possrep_component_def:
IDENTIFIER
type_ref
possrep_component_def
::= 'IDENTIFIER'
type_ref
referenced by:
possrep_component_def_commalist
constraint_def:
CONSTRAINT
expression
constraint_def
::= 'CONSTRAINT'
expression
referenced by:
possrep_opt_constraint_def
specialisation_constraint_def:
CONSTRAINT
expression
specialisation_constraint_def
::= 'CONSTRAINT'
expression
referenced by:
possrep_or_specialization_details
derived_possrep_def_list:
derived_possrep_def
derived_possrep_def_list
::=
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
}
)
derived_possrep_def
::= 'POSSREP'
derived_possrep_def_opt_identifier
( '(' | '{' )
derived_possrep_component_def_commalist
( '}' | ')' )
referenced by:
derived_possrep_def_list
derived_possrep_def_opt_identifier:
IDENTIFIER
derived_possrep_def_opt_identifier
::= 'IDENTIFIER'?
referenced by:
derived_possrep_def
derived_possrep_component_def_commalist:
derived_possrep_component_def
,
derived_possrep_component_def_commalist
::=
derived_possrep_component_def
( ','
derived_possrep_component_def
)*
referenced by:
derived_possrep_def
derived_possrep_component_def:
IDENTIFIER
=
IDENTIFIER
(
IDENTIFIER
)
derived_possrep_component_def
::= '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
var_relvar
::= ( ( '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
var_relvar_external
::= 'EXTERNAL' 'IDENTIFIER' 'STRING_LITERAL' 'IDENTIFIER'?
referenced by:
var_relvar
var_keydeflist:
var_keydef
var_keydeflist
::=
var_keydef
+
referenced by:
alter_var
var_relvar
var_keydeflistoptional:
var_keydef
var_keydeflistoptional
::=
var_keydef
*
referenced by:
var_relvar
var_keydef:
KEY
{
attribute_name_list
}
var_keydef
::= 'KEY' '{'
attribute_name_list
'}'
referenced by:
var_keydeflist
var_keydeflistoptional
var_scalar_or_tuple:
var_type_or_init_value
var_scalar_or_tuple
::=
var_type_or_init_value
referenced by:
var_def
var_type_or_init_value:
var_type_and_optional_init
var_init
var_type_or_init_value
::=
var_type_and_optional_init
|
var_init
referenced by:
var_relvar
var_scalar_or_tuple
var_type_and_optional_init:
type_ref
INIT
(
expression
)
var_type_and_optional_init
::=
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
db_constraint_def
::= '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
type_array
::= 'ARRAY'
type_ref
referenced by:
type_ref
type_same_type_as:
SAME_TYPE_AS
(
expression
)
type_same_type_as
::= 'SAME_TYPE_AS' '('
expression
')'
referenced by:
type_ref
tuple_type:
TUPLE
heading_type
tuple_type
::= 'TUPLE'
heading_type
referenced by:
type_ref
relation_type:
RELATION
heading_type
relation_type
::= 'RELATION'
heading_type
referenced by:
type_ref
heading_type:
heading
same_heading_as
heading_type
::=
heading
|
same_heading_as
referenced by:
relation_heading
relation_type
tuple_type
same_heading_as:
SAME_HEADING_AS
(
expression
)
same_heading_as
::= 'SAME_HEADING_AS' '('
expression
')'
referenced by:
heading_type
relation_array_load:
LOAD
IDENTIFIER
FROM
expression
relation_array_load
::= 'LOAD' 'IDENTIFIER' 'FROM'
expression
referenced by:
statement_body
begin_transaction:
BEGIN
TRANSACTION
begin_transaction
::= 'BEGIN' 'TRANSACTION'
referenced by:
statement_body
case_statement:
CASE
;
when_def_list
case_else
END
CASE
case_statement
::= 'CASE' ';'
when_def_list
case_else
'END' 'CASE'?
referenced by:
statement_body
when_def_list:
when_def
when_def_list
::=
when_def
+
referenced by:
case_statement
when_def:
WHEN
expression
THEN
statement_list
when_def
::= 'WHEN'
expression
'THEN'
statement_list
referenced by:
when_def_list
case_else:
ELSE
statement_list
case_else
::= ( 'ELSE'
statement_list
)?
referenced by:
case_statement
if_statement:
IF
expression
THEN
statement_list
if_statement_else
END
IF
if_statement
::= 'IF'
expression
'THEN'
statement_list
if_statement_else
'END' 'IF'?
referenced by:
statement_body
if_statement_else:
ELSE
statement_list
if_statement_else
::= ( '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_statement
::= 'DO' 'IDENTIFIER' '::='
expression
'TO'
expression
';'
statement_list
'END' 'DO'?
referenced by:
loop
while_statement:
WHILE
expression
;
statement_list
END
WHILE
while_statement
::= 'WHILE'
expression
';'
statement_list
'END' 'WHILE'?
referenced by:
loop
for_statement:
FOR
expression
;
statement_list
END
FOR
for_statement
::= '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
,
assignment
::=
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
delete_parameter
::= ( 'WHERE'?
expression
)?
referenced by:
assign
update_where:
WHERE
expression
update_where
::= ( 'WHERE'
expression
)?
referenced by:
assign
update_assignment:
{
assignment
}
update_assignment
::= '{'
assignment
? '}'
referenced by:
assign
rel_op
substitute
expression:
attribute_from
basic_expression
tuple_from
with
tclose
expression
::=
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
attribute_from
::= 'IDENTIFIER' 'FROM'
expression
referenced by:
expression
tuple_from:
TUPLE
FROM
expression
tuple_from
::= '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_commalist
::=
name_intro
( ','
name_intro
)*
referenced by:
with
name_intro:
IDENTIFIER
::=
expression
name_intro
::= 'IDENTIFIER' '::='
expression
referenced by:
name_intro_commalist
tclose:
TCLOSE
expression
tclose
::= 'TCLOSE'
expression
referenced by:
expression
basic_expression:
order_expression
[
expression
]
(
arglist
)
basic_expression
::=
order_expression
( '['
expression
']' | '('
arglist
')' )?
referenced by:
expression
order_expression:
where_expression
ORDER
(
order_item_commalist
UNORDER
(
)
order_expression
::=
where_expression
( ( 'ORDER' '('
order_item_commalist
| 'UNORDER' '(' ) ')' )?
referenced by:
basic_expression
where_expression:
equiv_expression
WHERE
equiv_expression
where_expression
::=
equiv_expression
( 'WHERE'
equiv_expression
)?
referenced by:
order_expression
equiv_expression:
or_expression
EQUIV
equiv_expression
::=
or_expression
( 'EQUIV'
or_expression
)*
referenced by:
where_expression
or_expression:
xor_expression
OR
or_expression
::=
xor_expression
( 'OR'
xor_expression
)*
referenced by:
equiv_expression
xor_expression:
and_expression
XOR
xor_expression
::=
and_expression
( 'XOR'
and_expression
)*
referenced by:
or_expression
and_expression:
compare_expression
AND
and_expression
::=
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
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
)?
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_commalist
::= (
order_item
( ','
order_item
)* )?
referenced by:
order_expression
rank
rel_op
order_item:
ASC
DESC
IDENTIFIER
order_item
::= ( 'ASC' | 'DESC' ) 'IDENTIFIER'
referenced by:
order_item_commalist
divide_per_optional:
,
expression
divide_per_optional
::= ( ','
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_commalist
::= (
renaming
( ','
renaming
)* )?
referenced by:
rel_op
renaming:
renaming_simple
renaming_prefix
renaming_suffix
renaming
::=
renaming_simple
|
renaming_prefix
|
renaming_suffix
referenced by:
renaming_commalist
renaming_simple:
IDENTIFIER
AS
IDENTIFIER
renaming_simple
::= 'IDENTIFIER' 'AS' 'IDENTIFIER'
referenced by:
renaming
renaming_prefix:
PREFIX
STRING_LITERAL
AS
STRING_LITERAL
renaming_prefix
::= 'PREFIX' 'STRING_LITERAL' 'AS' 'STRING_LITERAL'
referenced by:
renaming
renaming_suffix:
SUFFIX
STRING_LITERAL
AS
STRING_LITERAL
renaming_suffix
::= 'SUFFIX' 'STRING_LITERAL' 'AS' 'STRING_LITERAL'
referenced by:
renaming
attribute_name_list:
optional_all_but
attribute_name_commalist
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
optional_all_but
::= ( 'ALL' 'BUT' )?
referenced by:
attribute_name_list
attribute_name_commalist:
attribute_name_commalist_attributes_of
attribute_name_commalist_list
attribute_name_commalist
::=
attribute_name_commalist_attributes_of
|
attribute_name_commalist_list
referenced by:
attribute_name_list
attribute_name_commalist_attributes_of:
ATTRIBUTES_OF
(
expression
)
attribute_name_commalist_attributes_of
::= 'ATTRIBUTES_OF' '('
expression
')'
referenced by:
attribute_name_commalist
attribute_name_commalist_list:
IDENTIFIER
,
attribute_name_commalist_list
::= ( 'IDENTIFIER' ( ',' 'IDENTIFIER' )* )?
referenced by:
attribute_name_commalist
rel_project:
add_expression
{
attribute_name_list
}
rel_project
::=
add_expression
( '{'
attribute_name_list
'}' )?
referenced by:
rel_op
add_expression:
mul_expression
PLUS
SUBT
BARBAR
add_expression
::=
mul_expression
( ( 'PLUS' | 'SUBT' | 'BARBAR' )
mul_expression
)*
referenced by:
rel_project
mul_expression:
unary_expression
STAR
MULT_U
DIVD_A
DIVD_U
MODL
mul_expression
::=
unary_expression
( ( 'STAR' | 'MULT_U' | 'DIVD_A' | 'DIVD_U' | 'MODL' )
unary_expression
)*
referenced by:
add_expression
unary_expression:
NOT
PLUS
SUBT
primary_expression
unary_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
)
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
')'
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
)
image_in_bracketed
::= '('
expression
( ','
expression
)? ')'
referenced by:
image_in
case_expression:
CASE
when_def_list_expr
ELSE
expression
END
CASE
case_expression
::= 'CASE'
when_def_list_expr
'ELSE'
expression
'END' 'CASE'?
referenced by:
primary_expression
when_def_list_expr:
when_def_expr
when_def_list_expr
::=
when_def_expr
+
referenced by:
case_expression
when_def_expr:
WHEN
expression
THEN
expression
when_def_expr
::= 'WHEN'
expression
'THEN'
expression
referenced by:
when_def_list_expr
if_expression:
IF
expression
THEN
expression
ELSE
expression
END
IF
if_expression
::= 'IF'
expression
'THEN'
expression
'ELSE'
expression
'END' 'IF'?
referenced by:
primary_expression
substitute:
UPDATE
expression
:
update_assignment
substitute
::= 'UPDATE'
expression
':'
update_assignment
referenced by:
primary_expression
nadic_optional_heading:
heading
{
heading_exp_commalist
}
nadic_optional_heading
::=
heading
? '{'
heading_exp_commalist
'}'
referenced by:
nadic_disjoint_union
nadic_intersect
nadic_union
nadic_xunion
nadic_union:
UNION
nadic_optional_heading
nadic_union
::= 'UNION'
nadic_optional_heading
referenced by:
primary_expression
nadic_xunion:
XUNION
nadic_optional_heading
nadic_xunion
::= 'XUNION'
nadic_optional_heading
referenced by:
primary_expression
nadic_disjoint_union:
D_UNION
nadic_optional_heading
nadic_disjoint_union
::= 'D_UNION'
nadic_optional_heading
referenced by:
primary_expression
nadic_intersect:
INTERSECT
nadic_optional_heading
nadic_intersect
::= 'INTERSECT'
nadic_optional_heading
referenced by:
primary_expression
nadic_join:
JOIN
{
heading_exp_commalist
}
nadic_join
::= 'JOIN' '{'
heading_exp_commalist
'}'
referenced by:
primary_expression
nadic_times:
TIMES
{
heading_exp_commalist
}
nadic_times
::= 'TIMES' '{'
heading_exp_commalist
'}'
referenced by:
primary_expression
nadic_compose:
COMPOSE
{
heading_exp_commalist
}
nadic_compose
::= '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
}
nadic_equiv
::= 'EQUIV' '{'
bool_exp_commalist
'}'
referenced by:
primary_expression
nadic_xor:
XOR
{
bool_exp_commalist
}
nadic_xor
::= 'XOR' '{'
bool_exp_commalist
'}'
referenced by:
primary_expression
nadic_and:
AND
{
bool_exp_commalist
}
nadic_and
::= 'AND' '{'
bool_exp_commalist
'}'
referenced by:
primary_expression
nadic_count:
COUNT
{
exp_commalist
}
nadic_count
::= 'COUNT' '{'
exp_commalist
'}'
referenced by:
primary_expression
nadic_sum:
SUM
{
exp_commalist
}
nadic_sum
::= 'SUM' '{'
exp_commalist
'}'
referenced by:
primary_expression
nadic_avg:
AVG
{
exp_commalist
}
nadic_avg
::= 'AVG' '{'
exp_commalist
'}'
referenced by:
primary_expression
nadic_max:
MAX
{
exp_commalist
}
nadic_max
::= 'MAX' '{'
exp_commalist
'}'
referenced by:
primary_expression
nadic_min:
MIN
{
exp_commalist
}
nadic_min
::= 'MIN' '{'
exp_commalist
'}'
referenced by:
primary_expression
exactly:
EXACTLY
(
expression
,
)
exactly
::= 'EXACTLY' '('
expression
( ','
expression
)* ')'
referenced by:
primary_expression
exp_commalist:
expression
,
exp_commalist
::= (
expression
( ','
expression
)* )?
referenced by:
nadic_avg
nadic_count
nadic_max
nadic_min
nadic_sum
bool_exp_commalist:
expression
,
bool_exp_commalist
::= (
expression
( ','
expression
)* )?
referenced by:
nadic_and
nadic_equiv
nadic_or
nadic_xor
heading_exp_commalist:
expression
,
heading_exp_commalist
::= (
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_commalist
::= (
extend_add
( ','
extend_add
)* )?
referenced by:
extend
rel_op
extend_add:
IDENTIFIER
::=
expression
extend_add
::= 'IDENTIFIER' '::='
expression
referenced by:
extend_add_commalist
summarize:
SUMMARIZE
expression
per_or_by
:
{
summarize_add_commalist
}
summarize
::= 'SUMMARIZE'
expression
per_or_by
':' '{'
summarize_add_commalist
'}'
referenced by:
primary_expression
per_or_by:
PER
(
expression
)
BY
{
attribute_name_list
}
per_or_by
::= ( 'PER' '('
expression
')' | 'BY' '{'
attribute_name_list
'}' )?
referenced by:
rel_op
summarize
summarize_add_commalist:
summarize_add
,
summarize_add_commalist
::=
summarize_add
( ','
summarize_add
)*
referenced by:
rel_op
summarize
summarize_add:
IDENTIFIER
::=
summary
summarize_add
::= '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
summarize_aggregate
::= 'AGGREGATE' '('
expression
( ','
expression
)? ')' ';'
op_body
'END' 'AGGREGATE'?
referenced by:
summary
summarize_aggregated:
AGGREGATED
(
expression
,
expression
)
;
op_body
END
AGGREGATED
summarize_aggregated
::= 'AGGREGATED' '('
expression
( ','
expression
)? ')' ';'
op_body
'END' 'AGGREGATED'?
referenced by:
summary
summarize_userdefined:
IDENTIFIER
(
SummarizeItemDistinct
expression
,
expression
)
summarize_userdefined
::= 'IDENTIFIER' '('
SummarizeItemDistinct
expression
( ','
expression
)? ')'
referenced by:
summary
SummarizeItemDistinct:
DISTINCT
SummarizeItemDistinct
::= 'DISTINCT'?
referenced by:
summarize_userdefined
fn_invoke:
IDENTIFIER
(
arglist
)
fn_invoke
::= '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
aggregate_operator
::= ( '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
agg_aggregate
::= 'AGGREGATE' (
agg_aggregate_inline
|
agg_aggregate_userdefined
)
referenced by:
aggregate_operator
agg_aggregate_inline:
(
expression
,
expression
,
expression
)
;
op_body
END
AGGREGATE
agg_aggregate_inline
::= '('
expression
','
expression
( ','
expression
)? ')' ';'
op_body
'END' 'AGGREGATE'?
referenced by:
agg_aggregate
agg_aggregate_userdefined:
IDENTIFIER
(
expression
,
expression
,
expression
)
agg_aggregate_userdefined
::= 'IDENTIFIER' '('
expression
','
expression
( ','
expression
)? ')'
referenced by:
agg_aggregate
literal:
lambda
tuple
relation
INTEGER_LITERAL
STRING_LITERAL
rational
bool
literal
::=
lambda
|
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_commalist
::=
tuple_component
( ','
tuple_component
)*
referenced by:
tuple
tuple_component:
IDENTIFIER
expression
tuple_component
::= 'IDENTIFIER'
expression
referenced by:
tuple_component_commalist
relation:
RELATION
relation_heading
{
tuple_exp_commalist
}
TABLE_DUM
TABLE_DEE
relation
::= 'RELATION'
relation_heading
'{'
tuple_exp_commalist
'}'
| 'TABLE_DUM'
| 'TABLE_DEE'
referenced by:
literal
relation_heading:
heading_type
relation_heading
::=
heading_type
?
referenced by:
relation
heading:
{
attribute_spec_commalist
}
heading
::= '{'
attribute_spec_commalist
? '}'
referenced by:
getheading
heading_type
nadic_optional_heading
tuple_exp_commalist:
expression
,
tuple_exp_commalist
::= (
expression
( ','
expression
)* )?
referenced by:
relation
attribute_spec_commalist:
attribute_spec
,
attribute_spec_commalist
::=
attribute_spec
( ','
attribute_spec
)*
referenced by:
heading
attribute_spec:
IDENTIFIER
type_ref
attribute_spec
::= '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