1@ 2@ Cego language definition 3@ -------------------- 4@ by Bjoern Lemke 5@ 6@ (C)opyright 2003-2010 by Bjoern Lemke 7@ 8@ This language defintion can be used in combination with the dragon parser generator 9@ 10@ Status: 2.16 11@ 12 13HEADER 14IGNORE STRINGVAL 15SEPIGNORE '\t' 16SEPIGNORE ' ' 17SEPIGNORE '\n' 18SEPSIGN ';' 19SEPSIGN ',' 20SEPSIGN '=' 21SEPSIGN '<' 22SEPSIGN '>' 23SEPSIGN ')' 24SEPSIGN '(' 25SEPSIGN '[' 26SEPSIGN ']' 27SEPSIGN '/' 28SEPSIGN '+' 29SEPSIGN '-' 30SEPSIGN '|' 31SEPSIGN '!' 32SEPSIGN '*' 33END 34 35TOKENSET 36[aA][dD][dD] : ADD 37[aA][fF][tT][eE][rR] : AFTER 38[aA][lL][iI][aA][sS] : ALIAS 39[aA][nN][dD] : AND 40[aA][lL][lL] : ALL 41[aA][lL][tT][eE][rR] : ALTER 42[aA][pP][pP][eE][nN][dD] : APPEND 43[aA][sS] : AS 44[aA][sS][cC] : ASC 45[aA][sS][cC]2[iI][nN][tT] : ASC2INT 46[aA][uU][tT][hH][oO][rR][iI][zZ][eE] : AUTHORIZE 47[aA][uU][tT][oO][cC][oO][mM][mM][iI][tT] : AUTOCOMMIT 48[aA][vV][gG] : AVG 49[aA][vV][lL][tT][rR][eE][eE] : AVLTREE 50[bB][eE][fF][oO][rR][eE] : BEFORE 51[bB][eE][gG][iI][nN] : BEGIN 52[bB][eE][tT][wW][eE][eE][nN] : BETWEEN 53[bB][iI][gG][iI][nN][tT] : BIGINT 54[bB][iI][tT][aA][nN][dD] : BITAND 55[bB][iI][tT][oO][rR] : BITOR 56[bB][iI][tT][xX][oO][rR] : BITXOR 57[bB][lL][oO][bB] : BLOB 58[bB][lL][oO][bB][sS][iI][zZ][eE] : BLOBSIZE 59[bB][lL][oO][bB][rR][eE][fF] : BLOBREF 60[bB][oO][oO][lL] : BOOL 61[bB][tT][rR][eE][eE] : BTREE 62[bB][yY] : BY 63[cC][aA][cC][hH][eE][dD] : CACHED 64[cC][aA][lL][lL] : CALL 65[cC][aA][sS][eE] : CASE 66[cC][hH][eE][cC][kK] : CHECK 67[cC][lL][oO][bB] : CLOB 68[cC][lL][oO][bB][sS][iI][zZ][eE] : CLOBSIZE 69[cC][lL][oO][bB][rR][eE][fF] : CLOBREF 70[cC][lL][oO][bB]2[sS][tT][rR] : CLOB2STR 71[cC][lL][oO][sS][eE] : CLOSE 72[cC][oO][mM][mM][iI][tT] : COMMIT 73[cC][oO][lL][uU][mM][nN] : COLUMN 74[cC][oO][nN][sS][tT][rR][aA][iI][nN][tT] : CONSTRAINT 75[cC][oO][uU][nN][tT] : COUNT 76[cC][oO][uU][nN][tT][eE][rR] : COUNTER 77[cC][rR][eE][aA][tT][eE] : CREATE 78[cC][uU][rR][sS][oO][rR] : CURSOR 79[dD][aA][tT][eE] : DATE 80[dD][aA][tT][eE]2[sS][tT][rR] : DATE2STR 81[dD][aA][tT][eE]2[lL][oO][nN][gG] : DATE2LONG 82[dD][aA][tT][eE][tT][iI][mM][eE] : DATETIME 83[dD][eE][cC][iI][mM][aA][lL] : DECIMAL 84[dD][eE][fF][aA][uU][lL][tT] : DEFAULT 85[dD][eE][lL][eE][tT][eE] : DELETETOK 86[dD][eE][sS][cC] : DESC 87[dD][iI][sS][tT][iI][nN][cC][tT] : DISTINCT 88[dD][iI][vV] : DIV 89[dD][oO][uU][bB][lL][eE] : DOUBLE 90[dD][rR][oO][pP] : DROP 91[eE][lL][sS][eE] : ELSE 92[eE][lL][sS][iI][fF] : ELSIF 93[eE][nN][dD] : END_TOKEN 94[eE][xX][cC][eE][pP][tT][iI][oO][nN] : EXCEPTION 95[eE][xX][iI][sS][tT][sS] : EXISTS 96[fF][aA][lL][sS][eE] : FALSEVAL 97[fF][eE][tT][cC][hH] : FETCH 98[fF][iI][rR][sS][tT] : FIRST 99[fF][iI][xX][eE][dD] : FIXED 100[fF][lL][oO][aA][tT] : FLOAT 101[fF][oO][rR] : FOR 102[fF][oO][rR][eE][iI][gG][nN] : FOREIGN 103[fF][rR][oO][mM] : FROM 104[gG][eE][tT][pP][oO][sS] : GETPOS 105[gG][rR][oO][uU][pP] : GROUP 106[hH][aA][vV][iI][nN][gG] : HAVING 107[iI][dD][eE][nN][tT][iI][fF][iI][eE][dD] : IDENTIFIED 108[iI][fF] : IF 109[iI][nN][dD][eE][xX] : INDEX 110[iI][nN] : INTOK 111[iI][nN][nN][eE][rR] : INNER 112[iI][nN][tT] : INT 113[iI][nN][tT][oO] : INTO 114[lL][oO][nN][gG]2[dD][aA][tT][eE] : LONG2DATE 115[nN][eE][wW][dD][aA][tT][eE] : NEWDATE 116[iI][nN][sS][eE][rR][tT] : INSERT 117[iI][nN][tT]2[aA][sC][cC] : INT2ASC 118[iI][sS] : IS 119[iI][sS][oO][lL][aA][tT][iI][oO][nN] : ISOLATION 120[jJ][dD][bB][cC] : JDBC 121[jJ][oO][iI][nN] : JOIN 122[kK][eE][yY] : KEY 123[lL][eE][fF][tT] : LEFT 124[lL][eE][nN][gG][tT][hH] : LENGTH 125[lL][iI][kK][eE] : LIKE 126[lL][iI][sS][tT] : LIST 127[lL][dD][iI][vV] : LDIV 128[lL][mM][oO][dD] : LMOD 129[lL][oO][aA][dD] : LOAD 130[lL][oO][cC][kK] : LOCK 131[uU][nN][lL][oO][cC][kK] : UNLOCK 132[lL][oO][nN][gG] : LONG 133[lL][oO][wW][eE][rR] : LOWER 134[lL][tT][rR][iI][mM] : LTRIM 135[mM][iI][nN] : MIN 136[mM][aA][xX] : MAX 137[mM][oO][dD] : MOD 138[mM][oO][dD][iI][fF][yY] : MODIFY 139[nN][eE][xX][tT][cC][oO][uU][nN][tT] : NEXTCOUNT 140[nN][oO][oO][pP] : NOOP 141[nN][oO][tT] : NOT 142[nN][uU][lL][lL] : NULLTOKEN 143[oO][fF][fF] : OFF 144[oO][nN] : ON 145[oO][uU][tT] : OUTTOK 146[oO][uU][tT][eE][rR] : OUTER 147[oO][rR] : OR 148[oO][rR][dD][eE][rR] : ORDER 149[pP][lL][aA][nN] : PLAN 150[pP][oO][oO][lL] : POOL 151[pP][oO][wW][eE][rR] : POWER 152[pP][rR][iI][mM][aA][rR][yY] : PRIMARY 153[pP][rR][iI][nN][tT] : PRINT 154[pP][rR][oO][cC][eE][dD][uU][rR][eE] : PROCEDURE 155[qQ][uU][iI][tT] : QUIT 156[rR][aA][nN][dD][sS][tT][rR] : RANDSTR 157[rR][aA][nN][dD][iI][nN][tT] : RANDINT 158[rR][bB][sS][eE][gG] : RBSEG 159[rR][eE][fF][eE][rR][eE][nN][cC][eE][sS] : REFERENCES 160[rR][eE][nN][aA][mM][eE] : RENAME 161[rR][eE][oO][rR][gG][aA][nN][iI][zZ][eE] : REORGANIZE 162[rR][eE][tT][uU][rR][nN] : RETURNTOKEN 163[rR][eE][mM][oO][vV][eE] : REMOVE 164[rR][eE][pP][lL][aA][cC][eE] : REPLACE 165[rR][iI][gG][hH][tT] : RIGHT 166[rR][oO][lL][lL][bB][aA][cC][kK] : ROLLBACK 167[rR][oO][uU][nN][dD] : ROUND 168[rR][oO][wW][lL][iI][mM][iI][tT] : ROWLIMIT 169[rR][tT][rR][iI][mM] : RTRIM 170[sS][eE][lL][eE][cC][tT] : SELECT 171[sS][eE][tT] : SET 172[sS][eE][tT][cC][oO][uU][nN][tT] : SETCOUNT 173[sS][hH][oO][wW] : SHOW 174[sS][mM][aA][lL][lL][iI][nN][tT] : SMALLINT 175[sS][tT][aA][rR][tT] : START_TOKEN 176[sS][tT][rR][iI][nN][gG] : STRING 177[sS][uU][bB][sS][tT][rR] : SUBSTR 178[sS][uU][mM] : SUM 179[sS][yY][nN][cC] : SYNC 180[sS][yY][sS][dD][aA][tT][eE] : SYSDATE 181[sS][yY][sS][tT][eE][mM][sS][pP][aA][cC][eE] : SYSTEMSPACE 182[sS][yY][sS][oO][bB][jJ] : SYSOBJ 183[tT][aA][bB][lL][eE][iI][nN][fF][oO] : TABLEINFO 184[tT][aA][bB][lL][eE][sS][iI][zZ][eE] : TABLESIZE 185[tT][aA][bB][lL][eE] : TABLE 186[tT][aA][bB][lL][eE][sS][eE][tT] : TABLESET 187[tT][hH][eE][nN] : THEN 188[tT][hH][rR][oO][wW] : THROW 189[tT][iI][nN][yY][iI][nN][tT] : TINYINT 190[tT][mM][pP][oO][bB][jJ] : TMPOBJ 191[tT][rR][aA][nN][sS][aA][cC][tT][iI][oO][nN] : TRANSACTION 192[tT][rR][iI][gG][gG][eE][rR] : TRIGGER 193[tT][uU][pP][lL][eE][iI][nN][fF][oO] : TUPLEINFO 194[sS][tT][rR]2[iI][nN][tT] : STR2INT 195[sS][tT][rR]2[lL][oO][nN][gG] : STR2LONG 196[sS][tT][rR]2[dD][aA][tT][eE] : STR2DATE 197[tT][oO] : TO 198[tT][rR][iI][mM] : TRIM 199[tT][rR][uU][eE] : TRUEVAL 200[tT][rR][uU][nN][cC] : TRUNC 201[tT][rR][uU][nN][cC][aA][tT][eE] : TRUNCATE 202[uU][nN][iI][oO][nN] : UNION 203[uU][nN][iI][qQ][uU][eE] : UNIQUE 204[uU][pP][dD][aA][tT][eE] : UPDATE 205[uU][pP][tT][iI][mM][eE] : UPTIME 206[uU][pP][pP][eE][rR] : UPPER 207[vV][aA][rR] : VAR 208[vV][aA][lL][uU][eE][sS] : VALUES 209[vV][iI][eE][wW] : VIEW 210[wW][hH][eE][nN] : WHEN 211[wW][hH][eE][rR][eE] : WHERE 212[wW][hH][iI][lL][eE] : WHILE 213'|' : CONCAT 214'=' : EQU 215',' : KSEP 216'(' : LB 217'<' : LT 218'>' : MT 219'!' : NEGATION 220')' : RB 221'[' : LAB 222']' : RAB 223';' : SEMICOLON 224'*' : STAR 225'/' : DIVISION 226'-' : MINUS 227'+' : PLUS 228(0|[1-9]*[0-9]) : INTVAL 229(0|[1-9]*[0-9])'.'*[0-9] : FLOATVAL 230[a-zA-Z$]*[a-zA-Z0-9_] : IDENTIFIER 231!@ ':'[a-zA-Z]*[a-zA-Z0-9_] @ VARREF 232[a-zA-Z]*[a-zA-Z0-9_]'.'[a-zA-Z$]*[a-zA-Z0-9_] : QUALIFIEDOBJ 233[a-zA-Z]*[a-zA-Z0-9_]'.' : QUALIFIEDPRE 234[a-zA-Z$]*[a-zA-Z0-9_]'@'[a-zA-Z]*[a-zA-Z0-9_] : QUALIFIEDTS 235END 236 237PRODUCTIONSET 238Start : Statement SEMICOLON 239Statement : SYNC ; setSyncMethod 240Statement : LIST TABLESET ; setListTableSetMethod 241Statement : LIST TABLE TableSetOpt ; setListTableMethod 242Statement : LIST PROCEDURE TableSetOpt ; setListProcMethod 243Statement : LIST VIEW TableSetOpt ; setListViewMethod 244Statement : LIST AVLTREE TableSetOpt ; setListIndexMethod 245Statement : LIST BtreeType TableSetOpt ; setListBTreeMethod 246Statement : LIST KEY TableSetOpt ; setListKeyMethod 247Statement : LIST COUNTER TableSetOpt ; setListCounterMethod 248Statement : LIST SYSOBJ TableSetOpt ; setListSysObjMethod 249Statement : LIST TMPOBJ TableSetOpt ; setListTmpObjMethod 250Statement : LIST CHECK TableSetOpt ; setListCheckMethod 251Statement : LIST TRIGGER TableSetOpt ; setListTriggerMethod 252Statement : LIST ALIAS TableSetOpt ; setListAliasMethod 253TableSetOpt : FOR IDENTIFIER ; setTableSetOpt 254TableSetOpt : 255Statement : TABLEINFO ObjSpec ; setTableInfoMethod 256Statement : TABLESIZE ObjSpec ; setTableSizeMethod 257Statement : TUPLEINFO ObjSpec ; setTupleInfoMethod 258Statement : UPTIME ; setShowUptimeMethod 259Statement : SHOW POOL ; setShowPoolMethod 260Statement : SHOW SYSTEMSPACE ; setShowSystemSpaceMethod 261Statement : DESC TABLE ObjSpec ; setTableDescMethod 262Statement : DESC AVLTREE ObjSpec ; setIndexDescMethod 263Statement : DESC BtreeType ObjSpec ; setBTreeDescMethod 264Statement : DESC VIEW ObjSpec ; setViewDescMethod 265Statement : DESC FOREIGN KEY ObjSpec ; setKeyDescMethod 266Statement : DESC CHECK ObjSpec ; setCheckDescMethod 267Statement : DESC ALIAS ObjSpec ; setAliasDescMethod 268Statement : DESC PROCEDURE ObjSpec ; setProcDescMethod 269Statement : SHOW PROCEDURE ObjSpec ; setProcShowMethod 270Statement : SHOW VIEW ObjSpec ; setViewShowMethod 271Statement : SHOW CHECK ObjSpec ; setCheckShowMethod 272Statement : SHOW TRIGGER ObjSpec ; setTriggerShowMethod 273Statement : SET TABLESET IDENTIFIER ; setSetTableSetMethod 274Statement : AUTHORIZE IDENTIFIER IDENTIFIED BY STRINGVAL FOR IDENTIFIER ; setAuthUserMethod 275Statement : StartStatement ; setQueryMethod 276Statement : CommitStatement ; setQueryMethod 277Statement : RollbackStatement ; setQueryMethod 278Statement : LockStatement ; setQueryMethod 279Statement : UnlockStatement ; setQueryMethod 280Statement : SET APPEND ON ; setEnableAppendModeMethod 281Statement : SET APPEND OFF ; setDisableAppendModeMethod 282Statement : SET AUTOCOMMIT ON ; setEnableAutoCommitMethod 283Statement : SET AUTOCOMMIT OFF ; setDisableAutoCommitMethod 284Statement : SET ISOLATION IDENTIFIER ; setSetIsolationMethod 285Statement : REORGANIZE TABLE ObjSpec ; setTableReorganizeMethod 286Statement : REORGANIZE AVLTREE ObjSpec ; setIndexReorganizeMethod 287Statement : SelectStatement ; setSelectMethod 288Statement : PLAN SelectStatement ; setSelectPlanMethod 289Statement : InsertStatement ; setQueryMethod 290Statement : DeleteStatement ; setQueryMethod 291Statement : UpdateStatement ; setQueryMethod 292Statement : AlterStatement ; setQueryMethod 293Statement : RenameStatement ; setQueryMethod 294# view execs 295Statement : CREATE VIEW ObjSpec AS SelectStatement ; setViewCreateMethod 296Statement : LOAD VIEW ObjSpec AS SelectStatement ; setViewLoadMethod 297# procedure execs 298Statement : CREATE ProcDef ; setProcCreateMethod 299Statement : LOAD ProcDef ; setProcLoadMethod 300Statement : CALL ObjSpec LB ProcValueListOpt RB ; setProcCallMethod 301Statement : VARREF EQU CALL ObjSpec LB ProcValueListOpt RB ; setFuncCallMethod 302# table 303Statement : CREATE TABLE ObjSpec LB ColumnList RB ; setUserTableCreateMethod 304Statement : CREATE PRIMARY IndexType ON ObjSpec LB SimpleAttrList RB CachedOpt ; setPrimaryIndexCreateMethod 305Statement : CREATE IndexOption IndexType IDENTIFIER ON ObjSpec LB SimpleAttrList RB CachedOpt ; setIndexCreateMethod 306CachedOpt : CACHED ; setCachedOption 307CachedOpt : 308# alias 309Statement : CREATE ALIAS IDENTIFIER ON ObjSpec LB AliasAttrList RB ; setAliasCreateMethod 310AliasAttrList : AliasAttrList KSEP AliasAttr 311AliasAttrList : AliasAttr 312AliasAttr : IDENTIFIER AS IDENTIFIER ; setAliasAttr 313 314# trigger 315Statement : CREATE TriggerDef ; setTriggerCreateMethod 316Statement : LOAD TriggerDef ; setTriggerLoadMethod 317# 318Statement : TRUNCATE TABLE ObjSpec ; setTableTruncateMethod 319Statement : DropOpt TABLE ObjSpec ; setTableDropMethod 320Statement : DropOpt AVLTREE ObjSpec ; setIndexDropMethod 321Statement : DropOpt VIEW ObjSpec ; setViewDropMethod 322Statement : DropOpt PROCEDURE ObjSpec ; setProcDropMethod 323Statement : DropOpt FOREIGN KEY ObjSpec ; setFKeyDropMethod 324Statement : DropOpt CHECK ObjSpec ; setCheckDropMethod 325Statement : DropOpt TRIGGER ObjSpec ; setTriggerDropMethod 326Statement : DropOpt BtreeType ObjSpec ; setBTreeDropMethod 327Statement : DropOpt ALIAS ObjSpec ; setAliasDropMethod 328DropOpt : DROP ; dropOpt1 329DropOpt : DROP IF EXISTS ; dropOpt2 330Statement : ALTER TABLE ObjSpec ADD FOREIGN KEY IDENTIFIER LB SimpleAttrList RB REFERENCES IDENTIFIER LB SimpleAttrList RB ; setForeignKeyCreateMethod 331 332Statement : ALTER TABLE ObjSpec ADD CHECK IDENTIFIER ON QueryCondition ; setCheckCreateMethod 333 334 335Statement : SET IDENTIFIER EQU Expr ; setAssignStatementMethod 336Statement : PRINT Expr ; setPrintMethod 337Statement : CHECK AVLTREE IDENTIFIER ; setIndexCheckMethod 338# Counter 339Statement : CREATE COUNTER CounterId ; setCreateCounterMethod 340Statement : DropOpt COUNTER CounterId ; setDropCounterMethod 341Statement : SET COUNTER CounterId TO Expr ; setSetCounterMethod 342CounterId : IDENTIFIER ; setCounterId 343# JDBC info calls 344Statement : JDBC JdbcArgList ; setJDBCInfoMethod 345JdbcArgList : JdbcArgList IDENTIFIER ; jdbcArg1 346JdbcArgList : IDENTIFIER ; jdbcArg2 347 348# 349# Union All 350# 351UnionAllOpt : UNION ALL SelectStatement ; unionAllStore 352UnionAllOpt : 353 354# 355# Triggers 356# 357TriggerDef : TriggerHead BEGIN ProcStmtBlock END_TOKEN ; triggerStore 358TriggerHead : TRIGGER ObjSpec TriggerEvent TriggerCondition ON ObjSpec ; triggerHead 359TriggerEvent : BEFORE ; setTriggerBefore 360TriggerEvent : AFTER ; setTriggerAfter 361TriggerCondition : TriggerCondition OR TriggerOp 362TriggerCondition : TriggerOp 363TriggerOp : INSERT ; addInsertTrigger 364TriggerOp : UPDATE ; addUpdateTrigger 365TriggerOp : DELETETOK ; addDeleteTrigger 366 367# 368# Procedures 369# 370ProcHead : PROCEDURE ObjSpec LB ProcArgOpt RB ReturnOpt ; procHead 371ProcDef : ProcHead BEGIN ProcStmtBlock END_TOKEN ; procStore 372ReturnOpt : RETURNTOKEN DataTypeProd ; procReturnOpt 373ReturnOpt : 374ProcArgOpt : ProcArgList 375ProcArgOpt : 376ProcArgList : ProcArgList KSEP ProcArg 377ProcArgList : ProcArg 378ProcArg : IDENTIFIER INTOK DataTypeProd ; procArg1 379ProcArg : IDENTIFIER OUTTOK DataTypeProd ; procArg2 380ProcStmtBlock : ProcStatementList ProcExceptionList 381ProcStatementList : ProcStatementList ProcStatement SEMICOLON 382ProcStatementList : ProcStatement SEMICOLON ; procStoreBlock 383ProcStatement : VAR IDENTIFIER DataTypeProd ProcInitialAssignment ; procVarStatement 384ProcStatement : CURSOR IDENTIFIER AS SelectStatement ; procCursorCreateStatement 385ProcStatement : CLOSE IDENTIFIER ; procCursorCloseStatement 386ProcStatement : VARREF EQU Expr ; procAssignStatement 387ProcStatement : Expr ; procAssign2NullStatement 388ProcStatement : NOOP ; procNoopStatement 389ProcInitialAssignment : EQU Expr ; procInitialAssignment1 390ProcInitialAssignment : ProcNoAssignment ; procInitialAssignment2 391ProcNoAssignment : 392ProcStatement : THROW Expr ; procThrowStatement 393 394# procedure queries 395ProcStatement : InsertStatement ; procQueryStatement 396ProcStatement : DeleteStatement ; procQueryStatement 397ProcStatement : UpdateStatement ; procQueryStatement 398ProcStatement : StartStatement ; procQueryStatement 399ProcStatement : CommitStatement ; procQueryStatement 400ProcStatement : RollbackStatement ; procQueryStatement 401ProcStatement : LockStatement ; procQueryStatement 402ProcStatement : UnlockStatement ; procQueryStatement 403 404# 405# Procedure return statement 406# 407ProcStatement : RETURNTOKEN ; procReturnStatement1 408ProcStatement : RETURNTOKEN Expr ; procReturnStatement2 409# 410# Procedure nested block 411# 412ProcStatement : ProcBlockStart ProcStmtBlock END_TOKEN ; procBlockStatement 413ProcBlockStart : BEGIN ; procBlockStart 414# 415# Procedure exception handling 416# 417ProcExceptionList : ProcExceptionList ProcExceptionStmt 418ProcExceptionList : 419ProcExceptionStmt : EXCEPTION WHEN ProcExceptionType THEN ProcStatementList ; procExceptionStatement 420ProcValueListOpt : ProcValueList ; procValueSpec 421ProcValueListOpt : 422ProcValueList : ProcValueList KSEP Expr ; procExprValue 423ProcValueList : Expr ; procExprValue 424ProcExceptionType : IDENTIFIER ; procExceptionCondition 425# 426# Procedure if condition 427# 428ProcStatement : ProcIfPart ProcElsIfList ProcElseOpt END_TOKEN ; procIfStatement 429ProcIfPart : IF ProcIfCondition THEN ProcStmtBlock ; procStoreIfBlock 430ProcElsIfList : ProcElsIfOpt ProcElsIfList 431ProcElsIfList : 432ProcElsIfOpt : ELSIF ProcElsIfCondition THEN ProcStmtBlock ; procStoreIfBlock 433ProcElseOpt : ProcElsePart ProcStmtBlock ; procStoreElseBlock 434ProcElseOpt : 435ProcElsePart : ELSE ; procElsePart 436ProcIfCondition : ProcCondition ; procIfCondition 437ProcElsIfCondition : ProcCondition ; procElsIfCondition 438# 439# Procedure while loop 440# 441ProcStatement : WHILE ProcWhileCondition BEGIN ProcStmtBlock END_TOKEN ; procWhileStatement 442ProcWhileCondition : ProcCondition ; procWhileCondition 443# 444# Procedure condition and predicate 445# 446ProcCondition : ProcCondition OR ProcPredicate ; procCondition1 447ProcCondition : ProcCondition AND ProcPredicate ; procCondition2 448ProcCondition : ProcPredicate ; procCondition3 449ProcPredicate : LB ProcCondition RB ; procPredicate1 450ProcPredicate : Expr Comparison Expr ; procPredicate2 451ProcPredicate : Expr IS NULLTOKEN ; procPredicate3 452ProcPredicate : Expr IS NOT NULLTOKEN ; procPredicate4 453# 454# Expression, Term and Factor definitions 455# 456Expr : Expr PLUS Term ; procExpr1 457Expr : Expr MINUS Term ; procExpr2 458Expr : Term ; procExpr3 459Expr : Expr CONCAT Term ; procExpr4 460Term : Term STAR Factor ; procTerm1 461Term : Term DIVISION Factor ; procTerm2 462Term : Factor ; procTerm3 463Factor : VARREF ; procFactor1 464Factor : Constant ; procFactor2 465Factor : FETCH IDENTIFIER INTO LB FetchArgList RB ; procFactor3 466Factor : Attribute ; procFactor4 467Factor : Function ; procFactor5 468Factor : LB Expr RB ; procFactor6 469Factor : LB SelectStatement RB ; procFactor7 470Factor : CaseClause ; procFactor8 471Factor : COUNT LB STAR RB ; procFactor9 472Factor : SUM LB Expr RB ; procFactor10 473Factor : AVG LB Expr RB ; procFactor11 474Factor : COUNT LB Expr RB ; procFactor12 475Factor : MIN LB Expr RB ; procFactor13 476Factor : MAX LB Expr RB ; procFactor14 477# 478CaseClause : CasePrepare CaseConditionList ELSE Expr END_TOKEN ; caseClause 479CaseConditionList : CaseConditionList CaseCondition ; caseConditionList1 480CaseConditionList : CaseCondition ; caseConditionList2 481CaseCondition : WHEN QueryCondition THEN Expr ; caseCondition 482CasePrepare : CASE ; casePrepare 483# 484FetchArgList : FetchArgList KSEP VARREF ; procStoreFetchArg1 485FetchArgList : VARREF ; procStoreFetchArg2 486 487# 488# Object Creation 489# 490ColumnList : ColumnList KSEP KeyColumn 491ColumnList : KeyColumn 492KeyColumn : PRIMARY ColumnDesc ; setPrimaryColumn 493KeyColumn : ColumnDesc ; setOrdinaryColumn 494ColumnDesc : IDENTIFIER DataTypeProd DefaultOpt NullOpt ; setColumnDesc 495NullOpt : NULLTOKEN ; setNullOpt 496NullOpt : NOT NULLTOKEN ; setNotNullOpt 497NullOpt : DefaultNullOpt ; setNullOpt 498DefaultNullOpt : 499DefaultOpt : DEFAULT Constant ; defaultOpt 500DefaultOpt : DefaultDefOpt ; defaultNullOpt 501DefaultDefOpt : 502# 503SimpleAttrList : SimpleAttr KSEP SimpleAttrList 504SimpleAttrList : SimpleAttr ; createSimpleAttrList 505SimpleAttr : IDENTIFIER ; createSimpleAttr 506IndexOption : UNIQUE ; setUniqueIndex 507IndexOption : 508IndexType : AVLTREE ; setAVLIndex 509IndexType : BtreeType ; setBTreeIndex 510BtreeType : BTREE 511BtreeType : INDEX 512# 513# TA Statement 514# 515StartStatement : START_TOKEN TRANSACTION ; startStore 516CommitStatement : COMMIT ; commitStore 517RollbackStatement : ROLLBACK ; rollbackStore 518# 519# Lock Statement 520# 521LockStatement : LOCK TABLE ObjSpec ; lockStore 522UnlockStatement : UNLOCK TABLE ObjSpec ; unlockStore 523# 524# Insert Statement 525# 526InsertStatement : INSERT INTO ObjSpec InsertArgSpec InsertPrepare InsertValueSpecList ; insertStore 527InsertStatement : INSERT INTO ObjSpec InsertArgSpec SelectStatement ; insertBySelectStore 528InsertArgSpec : LB InsertArgList RB 529InsertArgSpec : 530InsertPrepare : VALUES ; insertPrepare 531# 532InsertValueSpecList : InsertValueSpecList KSEP InsertValueSpec 533InsertValueSpecList : InsertValueSpec 534# 535InsertValueSpec : LB InsertValueList RB ; insertValueSpecStore 536InsertArgList : InsertArgList KSEP IDENTIFIER ; insertArg 537InsertArgList : IDENTIFIER ; insertArg 538InsertValueList : InsertValueList KSEP Expr ; insertExprValue 539InsertValueList : Expr ; insertExprValue 540# 541# Select Statement 542# 543SelectStatement : SELECT Selection FromOption ; selectStore 544FromOption : FROM TableSource WhereClause GroupClause OrderingClause LimitOpt UnionAllOpt 545FromOption : NoFromOption ; noFromOption 546NoFromOption : 547Selection : DistinctOpt SelectionList ; selectSelectionStore1 548Selection : STAR ; selectSelectionStore2 549SelectionList : SelectionList KSEP SelectItem ; selectionList1 550SelectionList : SelectItem ; selectionList2 551SelectItem : Expr AliasOpt ; selectItem 552# 553TableSource : TableList ; selectTableListStore 554TableSource : JoinSpecList ; selectJoinSpecStore 555JoinSpecList : JoinSpecList JoinSpec 556JoinSpecList : Table JoinSpec 557JoinSpec : InnerJoin JoinTable ; selectInnerJoinStore1 558JoinSpec : InnerJoin JoinTable ON QueryCondition ; selectInnerJoinStore2 559JoinSpec : LEFT OUTER JOIN JoinTable ; selectLeftOuterJoinStore1 560JoinSpec : LEFT OUTER JOIN JoinTable ON QueryCondition ; selectLeftOuterJoinStore2 561JoinSpec : RIGHT OUTER JOIN JoinTable ; selectRightOuterJoinStore1 562JoinSpec : RIGHT OUTER JOIN JoinTable ON QueryCondition ; selectRightOuterJoinStore2 563# 564InnerJoin : INNER JOIN 565InnerJoin : JOIN 566TableList : Table KSEP TableList 567TableList : Table 568Table : ObjSpec ; selectTable1 569Table : ObjSpec IDENTIFIER ; selectTable2 570JoinTable : Table ; selectStackJoinTable 571# 572AliasOpt : AS IDENTIFIER ; aliasOpt 573AliasOpt : NoAliasOpt ; noAliasOpt 574NoAliasOpt : 575 576GroupClause : GROUP BY GroupList HavingClause ; selectGroupClause 577GroupClause : NoGroup ; selectEmptyGroupClause 578NoGroup : 579GroupList : GroupList KSEP Attribute ; selectGroupList1 580GroupList : Attribute ; selectGroupList2 581 582HavingClause : HAVING Expr Comparison Expr ; selectHavingClause 583HavingClause : NoHaving ; selectEmptyHavingClause 584NoHaving : 585 586OrderingClause : ORDER BY OrderingList ; selectOrderingClause 587OrderingClause : NoOrdering ; selectEmptyOrderingClause 588NoOrdering : 589OrderingList : OrderingList KSEP Expr OrderingOpt ; selectOrderingList1 590OrderingList : Expr OrderingOpt ; selectOrderingList2 591OrderingOpt : DefaultOrderOpt ; selectOrderingAsc 592OrderingOpt : DESC ; selectOrderingDesc 593DefaultOrderOpt : ASC 594DefaultOrderOpt : 595DistinctOpt : DISTINCT ; selectDistinctOpt 596DistinctOpt : NoDistinctOpt ; selectNoDistinctOpt 597NoDistinctOpt : 598LimitOpt : ROWLIMIT INTVAL ; selectLimitOpt1 599LimitOpt : NoLimit ; selectLimitOpt2 600NoLimit : 601 602# 603# Update Statement 604# 605 606UpdateStatement : UPDATE ObjSpec UpdDelAlias SET UpdateList WhereClause UpdReturnOpt ; updateStore 607UpdateList : UpdateList KSEP Assignment 608UpdateList : Assignment 609Assignment : IDENTIFIER EQU Expr ; updateAssignment 610UpdReturnOpt : RETURNTOKEN ON FIRST ReturnVarList ; returnOnFirstTrue 611UpdReturnOpt : RETURNTOKEN ReturnVarList ; returnOnFirstFalse 612UpdReturnOpt : 613ReturnVarList : ReturnVarList KSEP ReturnVar 614ReturnVarList : ReturnVar 615ReturnVar : VARREF EQU Expr ; returnVarAssignment 616 617# 618# Delete Statement 619# 620 621DeleteStatement : DELETETOK FROM ObjSpec UpdDelAlias WhereClause ; deleteStore 622 623UpdDelAlias : IDENTIFIER ; setUpdDelAlias 624UpdDelAlias : 625 626# 627# Alter Statement 628# 629 630AlterStatement : ALTER TABLE ObjSpec AlterList ; alterStore 631AlterList : AlterOption KSEP AlterList 632AlterList : AlterOption 633AlterOption : DROP COLUMN IDENTIFIER ; alterDropCol 634AlterOption : ADD COLUMN ColumnDesc ; alterAddCol 635AlterOption : MODIFY COLUMN ColumnDesc ; alterModCol 636AlterOption : MODIFY COLUMN IDENTIFIER DEFAULT Constant ; alterModDefault 637AlterOption : RENAME COLUMN IDENTIFIER TO IDENTIFIER ; alterRenameCol 638 639# 640# Rename Statement 641# 642 643RenameStatement : RENAME TABLE ObjSpec TO IDENTIFIER ; renameTable 644RenameStatement : RENAME AVLTREE ObjSpec TO IDENTIFIER ; renameIndex 645RenameStatement : RENAME BtreeType ObjSpec TO IDENTIFIER ; renameBTree 646RenameStatement : RENAME KEY ObjSpec TO IDENTIFIER ; renameKey 647RenameStatement : RENAME PROCEDURE ObjSpec TO IDENTIFIER ; renameProcedure 648RenameStatement : RENAME VIEW ObjSpec TO IDENTIFIER ; renameView 649RenameStatement : RENAME CHECK ObjSpec TO IDENTIFIER ; renameCheck 650RenameStatement : RENAME TRIGGER ObjSpec TO IDENTIFIER ; renameTrigger 651# 652# Functions 653# 654Function : INT2ASC LB ExpressionList RB ; functionNative 655Function : ASC2INT LB ExpressionList RB ; functionNative 656Function : TRIM LB ExpressionList RB ; functionNative 657Function : RTRIM LB ExpressionList RB ; functionNative 658Function : LTRIM LB ExpressionList RB ; functionNative 659Function : ROUND LB ExpressionList RB ; functionNative 660Function : DATE2STR LB ExpressionList RB ; functionNative 661Function : DATE2LONG LB ExpressionList RB ; functionNative 662Function : LONG2DATE LB ExpressionList RB ; functionNative 663Function : NEWDATE LB ExpressionList RB ; functionNative 664Function : LOWER LB ExpressionList RB ; functionNative 665Function : UPPER LB ExpressionList RB ; functionNative 666Function : LEFT LB ExpressionList RB ; functionNative 667Function : RIGHT LB ExpressionList RB ; functionNative 668Function : GETPOS LB ExpressionList RB ; functionNative 669Function : SUBSTR LB ExpressionList RB ; functionNative 670Function : REPLACE LB ExpressionList RB ; functionNative 671Function : LENGTH LB ExpressionList RB ; functionNative 672Function : TRUNC LB ExpressionList RB ; functionNative 673Function : STR2INT LB ExpressionList RB ; functionNative 674Function : STR2LONG LB ExpressionList RB ; functionNative 675Function : STR2DATE LB ExpressionList RB ; functionNative 676Function : RANDSTR LB ExpressionList RB ; functionNative 677Function : RANDINT LB ExpressionList RB ; functionNative 678# 679Function : MOD LB ExpressionList RB ; functionNative 680Function : DIV LB ExpressionList RB ; functionNative 681Function : LMOD LB ExpressionList RB ; functionNative 682Function : LDIV LB ExpressionList RB ; functionNative 683 684Function : POWER LB ExpressionList RB ; functionNative 685Function : BITAND LB ExpressionList RB ; functionNative 686Function : BITOR LB ExpressionList RB ; functionNative 687Function : BITXOR LB ExpressionList RB ; functionNative 688Function : BLOBSIZE LB ExpressionList RB ; functionNative 689Function : BLOBREF LB ExpressionList RB ; functionNative 690Function : CLOBSIZE LB ExpressionList RB ; functionNative 691Function : CLOBREF LB ExpressionList RB ; functionNative 692Function : CLOB2STR LB ExpressionList RB ; functionNative 693Function : NEXTCOUNT LB IDENTIFIER RB ; functionNextCount 694Function : SETCOUNT LB IDENTIFIER KSEP Expr RB ; functionSetCount 695# 696Function : ObjSpec LB ExpressionList RB ; functionUserDef1 697Function : ObjSpec LB RB ; functionUserDef2 698ExpressionList : ExpressionList KSEP Expr ; storeExprList1 699ExpressionList : Expr ; storeExprList2 700 701# 702# Where Clause 703# 704 705WhereClause : WHERE QueryCondition ; wcWhereClause 706WhereClause : NoWhere ; wcEmptyClause 707NoWhere : 708QueryCondition : QueryCondition AND QueryPredicate ; wcConditionAnd 709QueryCondition : QueryCondition OR QueryPredicate ; wcConditionOr 710QueryCondition : QueryPredicate ; wcConditionPredicate 711# QueryCondition : NOT QueryPredicate ; wcConditionNotPredicate 712QueryPredicate : EXISTS LB SelectStatement RB ; wcPredicateQueryExists 713# QueryPredicate : NOT EXISTS LB SelectStatement RB ; wcPredicateQueryNotExists 714# QueryPredicate : Expr Comparison LB SelectStatement RB ; wcPredicateQueryComp 715# 716QueryPredicate : Expr INTOK LB ExpressionList RB ; wcPredicateIn 717QueryPredicate : Expr NOT INTOK LB ExpressionList RB ; wcPredicateNotIn 718# 719QueryPredicate : Expr INTOK LB SelectStatement RB ; wcPredicateQueryIn 720QueryPredicate : Expr NOT INTOK LB SelectStatement RB ; wcPredicateQueryNotIn 721QueryPredicate : Expr Comparison Expr ; wcPredicateExprComp 722QueryPredicate : Expr BETWEEN Expr AND Expr ; wcPredicateBetween 723QueryPredicate : Expr IS NULLTOKEN ; wcPredicateNullComp 724QueryPredicate : Expr IS NOT NULLTOKEN ; wcPredicateNotNullComp 725QueryPredicate : Expr LIKE STRINGVAL ; wcPredicateLikeComp 726QueryPredicate : Expr NOT LIKE STRINGVAL ; wcPredicateNotLikeComp 727QueryPredicate : LB QueryCondition RB ; wcPredicateCondition 728QueryPredicate : NOT QueryPredicate ; wcPredicateNotPredicate 729 730# 731# Other 732# 733 734DataTypeProd : INT ; miscIntType 735DataTypeProd : LONG ; miscLongType 736DataTypeProd : STRING LB INTVAL RB ; miscStringType 737DataTypeProd : DATETIME ; miscDateTimeType 738DataTypeProd : BOOL ; miscBoolType 739DataTypeProd : BIGINT LB INTVAL RB ; miscBigIntType 740DataTypeProd : FLOAT ; miscFloatType 741DataTypeProd : DOUBLE ; miscDoubleType 742DataTypeProd : SMALLINT ; miscSmallIntType 743DataTypeProd : TINYINT ; miscTinyIntType 744DataTypeProd : DECIMAL LB INTVAL RB ; miscDecimalType 745DataTypeProd : FIXED LB DecimalDim RB ; miscFixedType 746DataTypeProd : BLOB ; miscBlobType 747DataTypeProd : CLOB ; miscClobType 748DecimalDim : INTVAL ; miscDecimalDim1 749DecimalDim : INTVAL KSEP INTVAL ; miscDecimalDim2 750Comparison : EQU ; miscEqualComp 751Comparison : NEGATION EQU ; miscNotEqualComp 752Comparison : LT ; miscLessComp 753Comparison : MT ; miscMoreComp 754Comparison : LT EQU ; miscLessEqualComp 755Comparison : MT EQU ; miscMoreEqualComp 756Attribute : IDENTIFIER ; miscAttribute1 757Attribute : QUALIFIEDOBJ ; miscAttribute2 758Attribute : QUALIFIEDPRE STAR ; miscAttribute3 759SignedInt : INTVAL ; miscIntString 760SignedInt : MINUS INTVAL ; miscNegatedIntString 761SignedFloat : FLOATVAL ; miscFloatString 762SignedFloat : MINUS FLOATVAL ; miscNegatedFloatString 763Constant : SignedInt ; miscIntValue 764Constant : LB LONG RB SignedInt ; miscLongValue 765Constant : LB BIGINT RB SignedInt ; miscBigIntValue 766Constant : LB SMALLINT RB SignedInt ; miscSmallIntValue 767Constant : LB TINYINT RB SignedInt ; miscTinyIntValue 768Constant : STRINGVAL ; miscStringValue 769Constant : SignedFloat ; miscFloatValue 770Constant : LB DOUBLE RB SignedFloat ; miscDoubleValue 771Constant : LB DECIMAL RB SignedFloat ; miscDecimalValue 772Constant : LB FIXED RB SignedFloat ; miscFixedValue 773Constant : DATE LB DateFormat KSEP DateValue RB ; miscFormatDate 774Constant : SYSDATE ; miscSysDate 775Constant : NULLTOKEN ; miscNull 776Constant : TRUEVAL ; miscTrueValue 777Constant : FALSEVAL ; miscFalseValue 778Constant : BLOB LAB INTVAL RAB ; miscBlobRef 779Constant : CLOB LAB INTVAL RAB ; miscClobRef 780DateFormat : STRINGVAL ; miscDateFormat 781DateValue : STRINGVAL ; miscDateValue 782ObjSpec : IDENTIFIER ; setObject1 783ObjSpec : QUALIFIEDOBJ ; setObject2 784ObjSpec : QUALIFIEDTS ; setObject3 785END 786 787 788 789 790