Author: Dirk Olbertz, Fraunhofer ISST; modified by Leonidas Fegaras.
program ::= { C++code } C++code ::= % oql ; C++code ::= '{' program '}' C++code ::= { C++token } C++token ::= 'any token other than {, }, or %' ODL_type ::= Id ODL_type ::= set < ODL_type > ODL_type ::= bag < ODL_type > ODL_type ::= list < ODL_type > oql ::= DEFINE Id [ ( [ Id {, Id } ] ) ] AS query oql ::= DEFINE [ Id :: ] Id ( [ Id : ODL_type {, Id : ODL_type } ] ) : ODL_type as query oql ::= MODULE Id oql ::= destination := query oql ::= destination += query oql ::= destination -= query oql ::= Id -= query oql ::= Id : ODL_type oql ::= FOR EACH Id IN query DO C++code oql ::= PRINT query [ integer_literal ] oql ::= CREATE INDEX Id ON Id ( Id {, Id } ) oql ::= DROP INDEX Id oql ::= PRINT STATISTICS oql ::= COLLECT STATISTICS oql ::= OPTIONS Id = integer_literal {, Id = integer_literal } oql ::= BEGIN oql ::= COMMIT oql ::= ABORT oql ::= INITIALIZE oql ::= CLEANUP destination ::= query DOT Id query ::= NIL query ::= TRUE query ::= FALSE query ::= integer_literal query ::= float_literal query ::= string_literal query ::= Id query ::= ( query ) query ::= query + query query ::= query - query query ::= query * query query ::= query / query query ::= - query query ::= query MOD query query ::= ABS ( query ) query ::= query || query query ::= query = query query ::= query != query query ::= query > query query ::= query < query query ::= query >= query query ::= query <= query query ::= query LIKE string_literal query ::= IF query THEN query ELSE query query ::= NOT query query ::= query AND query query ::= query OR query query ::= Id ( [ query ] ) query ::= Id ( Id : query {, Id : query } ) query ::= PERSISTENT Id ( Id : query {, Id : query } ) query ::= STRUCT ( Id : query {, Id : query } ) query ::= SET ( [ query {, query } ] ) query ::= BAG ( [ query {, query } ] ) query ::= LIST ( [ query {, query} ] ) query ::= ( query , query {, query } ) query ::= [ LIST ] ( query .. query ) query ::= ARRAY ( [ query {, query } ] ) query ::= UNION ( Id : query ) query ::= query DOT Id query ::= query DOT Id ( query {, query } ) query ::= * query query ::= query [ query ] query ::= query [ query : query ] query ::= FIRST ( query ) query ::= LAST ( query ) query ::= Id ( [ query {, query } ] ) query ::= CASE query OF { Id : } query {, { Id : } query } [, DEFAULT : query ] END query ::= FOR ALL Id IN query : query query ::= EXISTS Id IN query : query query ::= EXISTS ( query ) query ::= UNIQUE ( query ) query ::= query IN query query ::= query comparison_operator quantifier query query ::= COUNT ( query ) query ::= COUNT ( * ) query ::= SUM ( query ) query ::= MIN ( query ) query ::= MAX ( query ) query ::= AVG ( query ) query ::= SELECT [ DISTINCT ] projection_attributes FROM variable_declaration {, variable_declaration } [ WHERE query ] [ GROUP BY partition_attributes ] [ HAVING query ] [ ORDER BY sort_criterion {, sort_criterion } ] projection_attributes ::= projection {, projection } projection_attributes ::= * projection ::= query projection ::= Id : query projection ::= query AS Id variable_declaration ::= query [ [ AS ] Id ] variable_declaration ::= Id IN query partition_attributes ::= projection {, projection } sort_criterion ::= query [ ordering ] ordering ::= ASC ordering ::= DESC query ::= query INTERSECT query query ::= query UNION query query ::= query EXCEPT query query ::= LISTTOSET ( query ) query ::= ELEMENT ( query ) query ::= DISTINCT ( query ) query ::= FLATTEN ( query ) query ::= ( Id ) query
Last modified: 3/22/01 by Leonidas Fegaras