home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
sssql.ycc
< prev
next >
Wrap
Text File
|
1995-04-16
|
27KB
|
729 lines
//---------------------------------------------------------------------
//
// WARNING: The demo version of Visual Parse++ will not compile this
// rule file, it's to large. The demo version is limited to very
// small rule files.
//
// This is an SQL rule file that we got off the internet and transcribed
// to our format (we have copyright permission from the author).
// It parses SQL II. We have done some testing, and the original
// yacc file has been around for some time. It has been used by
// several institutions, so we think its complete.
//
// The grammar generates 3 shift/reduce conflicts (6 messages). You can
// ignore them all, the shift (the default) is the appropriate action
// to take.
//
// We also have an embedded SQL version of the same grammar. It required
// only very minor changes to this rule file.
//
//----------------------------------------------------------------------
%macro
{D} [0-9];
{E} [Ee][\-+]?{D}+;
%expression Main
'"$"[a-zA-Z_][a-zA-Z0-9_#@]*' PARM;
'[a-zA-Z_][a-zA-Z0-9_#@]*' IDENTIFIER;
'\"' %ignore, %push DQuote;
'''' %ignore, %push SQuote;
'{D}+' INTEGER;
'({D}+"."{D}*({E})?)|({D}+{E})' REAL;
":" TCOL;
":" Colon, ':' ;
';' Semicolon, ';';
".*" ALLFIELDS, '.*';
"." Dot, '.' ;
',' PORD;
',' Comma, ',' ;
"!" Not, '!';
"!=" Ne, '!=';
"<=" Le, '<=';
">=" Ge, '>=';
"<" Lt, '<';
"!<" Nlt, '!<';
">" Gt, '>';
"!>" Ngt, '!>';
"(" Oparen, '(';
")" CParen, ')';
">>" RShift, '>>';
"<<" LShift, '<<';
"|" Bitor, '|';
"||" Or, '||';
"^" Bitxor, '^';
"&" Bitand, '&';
"&&" And, '&&';
"~" BitNot, '~';
"`" Semantic, '`';
"]" CBrack, ']';
"[" OBrack, '[';
"=" ASSIGN;
"=" EQ, '=';
"+" Plus, '+';
"-" UMINUS;
"-" Minus, '-';
"*" Mult, '*';
"**" Power, '**';
'/' Div, '/';
"%" Mod, '%';
"?" Quest, '?';
'[ \n\t\r]+' %ignore;
'[aA][dD][dD]' ADD;
'[aA][lL][lL]' ALL;
'[aA][lL][lL][oO][wW][eE][dD]' ALLOWED;
'[aA][fF][tT][eE][rR]' AFTER;
'[aA][lL][tT][eE][rR]' ALTER;
'[aA][nN][dD]' AND;
'[aA][nN][yY]' ANY;
'[aA][sS]' AS;
'[aA][sS][cC]' ASC;
'[aA][tT]' AT;
'[aA][uU][dD][iI][tT]' AUDIT;
'[bB][eE][fF][oO][rR][eE]' BEFORE;
'[bB][bB][eE][gG][iI][nN]' BBEGIN;
'[bB][eE][tT][wW][eE][eE][nN]' BETWEEN;
'[bB][yY]' BY;
'[cC][hH][eE][cC][kK]' CHECK;
'[cC][lL][oO][sS][eE]' CLOSE;
'[cC][oO][mM][mM][rE][nN][tT]' COMMENT;
'[cC][oO][mM][mM][iI][tT]' COMMIT;
'[cC][Oo][Mm][Pp][Oo][Ss][Ii][Tt][Ee]' COMPOSITE;
'[cC][oO][nN][sS][tT][rR][aA][iI][nN][tT]' CONSTRAINT;
'[cC][rR][eE][aA][tT][eE]' CREATE;
'[dD][aA][tT][aA][bB][aA][sS][eE]' DATABASE;
'[dD][eE][fF][aA][uU][lL][tT]' DEFAULT;
'[dD][eE][lL][eE][tT][eE]' DELETE;
'[dD][eE][sS][cC]' DESC;
'[dD][iI][sS][tT][iI][nN][cC][tT]' DISTINCT;
'[dD][iI][vV][iI][dD][eE][bB][yY]' DIVIDEBY;
'[dD][oO][mM][aA][iI][nN]' DOMAIN;
'[dD][rR][oO][pP]' DROP;
'[dD][uU][mM][pP]' DUMP;
'[eE][nN][dD]' END;
'[eE][lL][sS][eE]' ELSE;
'[eE][xX][iI][sS][tT][sS]' EXISTS;
'[fF][oO][rR]' FOR;
'[fF][oO][rR][eE][iI][gG][nN]' FOREIGN;
'[fF][rR][aA][gG][mM][eE][nN][tT]' FRAGMENT;
'[fF][rR][oO][mM]' FROM;
'[gG][rR][aA][nN][tT]' GRANT;
'[gG][rR][oO][uU][pP]' GROUP;
'[hH][aA][vV][iI][nN][gG]' HAVING;
'[iI][dD][eE][nN][tT][iI][fF][iI][eE][sS]' IDENTIFIES;
'[iI][fF]' IF;
'[iI][nN]' IN;
'[iI][nN][dD][eE][xX]' INDEX;
'[iI][nN][fF][oO]' INFO;
'[iI][nN][sS][eE][rR][tT]' INSERT;
'[iI][nN][tT][oO]' INTO;
'[iI][nN][tT][eE][rR][sS][eE][cC][tT]' INTERSECT;
'[iI][sS]' IS;
'[lL][iI][kK][eE]' LIKE;
'[lL][oO][cC][kK]' LOCK;
'[mM][iI][nN][uU][sS]' MINUS;
'[mM][oO][dD][eE]' MODE;
'[mM][oO][dD][iI][fF][yY]' MODIFY;
'[nN][oO][tT]' NOT;
'[nN][uU][lL][lL]' NULLN;
'[nN][uU][lL][lL][sS]' NULLS;
'[oO][fF]' OF;
'[oO][nN]' ON;
'[oO][pP][eE][nN]' OPEN;
'[oO][pP][tT][iI][oO][nN]' OPTION;
'[oO][rR]' OR;
'[oO][rR][dD][eE][rR]' ORDER;
'[oO][uU][tT][eE][rR]' OUTER;
'[pP][rR][iI][mM][aA][rR][yY]' PRIMARY;
'[pP][rR][oO][gG][rR][aA][mM]' PROGRAM;
'[rR][aA][nN][gG][eE]' RANGE;
'[rR][eE][pP][aA][iI][rR]' REPAIR;
'[rR][eE][sS][tT][oO][rR][eE]' RESTORE;
'[rR][eE][vV][oO][kK][eE]' REVOKE;
'[rR][oO][lL][lL][bB][aA][cC][kK]' ROLLBACK;
'[rR][oO][lL][lL][fF][oO][rR][wW][aA][rR][dD]' ROLLFORWARD;
'[sS][eE][lL][eE][cC][tT]' SELECT;
'[sS][eE][tT]' SET;
'[sS][hH][oO][wW]' SHOW;
'[sS][nN][aA][pP][sS][hH][oO][tT]' SNAPSHOT;
'[sS][tT][aA][rR][tT]' START;
'[sS][tT][oO][rR][eE]' STORE;
'[sS][yY][nN][cC]' SYNC;
'[sS][yY][nN][oO][nN][yY][mM]' SYNONYM;
'[Tt][aA][bB][lL][eE]' TABLE;
'[Tt][hH][eE][nN]' THEN;
'[Tt][oO]' TO;
'[tT][yY][pP][eE]' TYPE;
'[vV][aA][lL][uU][eE][sS]' VALUES;
'[vV][iI][eE][wW]' VIEW;
'[uU][nN][iI][oO][nN]' UNION;
'[uU][nN][iI][qQ][uU][eE]' UNIQUE;
'[uU][pP][dD][aA][tT][eE]' UPDATE;
'[wW][hH][eE][rR][eE]' WHERE;
'[wW][oO][rR][kK]' WORK;
'[wW][iI][tT][hH]' WITH;
%expression DQuote
'[^"\\\n]+' STRINGPART;
'\\\n' %ignore;
'\\' STRINGPART;
'\"' STRINGEND, %pop;
%expression SQuote
'[^''\\\n]+' STRINGPART;
'\\\n' %ignore;
'\\' STRINGPART;
'''' STRINGEND, %pop;
%prec
1, ';', %left;
2, WHERE %left;
3, OR, %left;
4, AND, %left;
5, ',' %left;
6, ASSIGN, %right;
7, TCOL, %right;
8, '?', %left;
9, '||', %left;
10,'&&', %left;
11, '|', %left;
12, '^', %left;
13, '&', %left;
14, '!<', %left;
14, '!>', %left;
14, '<', %left;
14, '>', %left;
14, '<=', %left;
14, '>=', %left;
14, '!=', %left;
14, '=', %left;
15, '<<', %left;
15, '>>', %left;
16, '+', %left;
16, '-', %left;
17, '*', %left;
17, '/', %left;
17, '%', %left;
18, '**', %right;
19, UMINUS,%right;
19, '~', %right;
20, PORD, %left;
21, '`', %left;
22, '.', %left;
%production dsl
StartDsl dsl -> stats;
StartProg dsl -> STORE PROGRAM prog_name '(' parm_list ')'
stats ';' END STORE ';';
Stats stats -> stats statWithEnd;
StatsOne stats -> statWithEnd;
StatWithEnd statWithEnd -> statement ';';
StatError statement -> %error;
StatAlter statement -> alter;
StatAudit statement -> audit;
StatBegin statement -> begin;
StatCheck statement -> check;
StatClose statement -> close;
StatComment statement -> comment;
StatCommit statement -> commit;
StatCreate statement -> create;
StatDelete statement -> delete;
StatDrop statement -> drop;
StatDump statement -> dump;
StatGrant statement -> grant;
StatInfo statement -> info;
StatInsert statement -> insert;
StatLock statement -> lock;
StatOpen statement -> open;
StatRollback statement -> rollback;
StatRollforw statement -> rollforward;
StatRepair statement -> repair;
StatRestore statement -> restore;
StatRevoke statement -> revoke;
StatSelect statement -> select;
StatSet statement -> set;
StatStart statement -> start;
StatSync statement -> sync;
StatUpdate statement -> update;
Start start -> prog_name '(' expr_list ')';
ParmListOne parm_list -> parm;
ParmList parm_list -> parm ',' parm_list;
Parm parm -> parm_name;
ParmExpr parm -> parm_name EQ expr %prec ASSIGN;
Delete delete -> DELETE FROM rec_alias where_clause;
InsertField insert -> INSERT INTO rec_alias '(' field_list ')' icond;
Insert insert -> INSERT INTO rec_alias icond;
Update update -> UPDATE rec_alias set_show where_clause;
RecAlias rec_alias -> path;
RecAliasPath rec_alias -> path alias;
ICondFrom icond -> FROM filename;
ICondSelect icond -> select_statement;
ICondValues icond -> VALUES '(' const_list ')';
SetShow set_show -> SHOW setelements;
SetShowSet set_show -> SET setelements;
SetElementsOne setelements -> setelement;
SetElements setelements -> setelements ',' setelement;
SetElementExpr setelement -> field EQ expr %prec ASSIGN;
SetElementSel setelement -> field EQ select_statement %prec ASSIGN;
SetElementEq setelement -> '[' field_list ']' EQ '[' expr_list ']' %prec ASSIGN;
SetElementEqSel setelement -> '[' field_list ']' EQ select_statement %prec ASSIGN;
Select select -> select_expr order_clause into_clause;
SelectExprStat select_expr -> select_statement;
SelectExprUnion select_expr -> select_expr UNION any select_statement;
SelectExprMinus select_expr -> select_expr MINUS select_statement;
SelectExprDiv select_expr -> select_expr DIVIDEBY select_statement;
SelectExprInter select_expr -> select_expr INTERSECT select_statement;
SelectExprNest select_expr -> '(' select_expr ')';
OrderClauseNull order_clause -> ;
OrderClause order_clause -> ORDER BY norder_list;
IntoClauseNull into_clause -> ;
IntoClause into_clause -> INTO filename;
SelectStat select_statement -> select_clause FROM
from_item_list select_options;
OrderListOne order_list -> path orderdir %prec PORD;
OrderList order_list -> order_list ',' path orderdir;
NOrderListOne norder_list -> expr orderdir %prec PORD;
NOrderList norder_list -> norder_list ',' norder_list;
SelectClause select_clause -> SELECT unique sellist;
SelectClauseUn select_clause -> SELECT unique '*';
FromItListOne from_item_list -> from_item;
FromItemList from_item_list -> from_item_list ',' from_item_list;
FromItemRec from_item -> rec_alias;
FromItemOut from_item -> OUTER rec_alias;
FromItemOutLst from_item -> OUTER '(' from_item_list ')';
SelectOptionsNu select_options -> ;
SelectOptWPred select_options -> WHERE predicate;
SelectOptWPG select_options -> WHERE predicate group_clause;
SelectOptGroup select_options -> group_clause;
GroupClause group_clause -> GROUP BY path_list;
GroupClauseHav group_clause -> GROUP BY path_list HAVING predicate;
UniqueNill unique -> ;
UniqueAll unique -> ALL;
UniqueDistinct unique -> DISTINCT;
UniqueUnique unique -> UNIQUE;
SelListOne sellist -> selelement;
SelList sellist -> sellist ',' selelement;
SelEleRec selelement -> record ALLFIELDS;
SelEleExpr selelement -> expr;
SelEleExStr selelement -> expr STRING;
PredCond predicate -> condition;
PredCondAnd predicate -> condition AND predicate;
PredCondOr predicate -> condition OR predicate;
PredCondNot predicate -> NOT predicate %prec '~';
PredCondParen predicate -> '(' predicate ')';
PredCondIf predicate -> IF predicate THEN predicate else_pred;
ElsePredNull else_pred -> ;
ElsePred else_pred -> ELSE predicate;
CondExpr condition -> expr;
CondExprNotIn condition -> expr not IN in_sel_expr;
CondExprPath condition -> '[' path_list ']' not IN in_sel_expr;
CondExprNulln condition -> expr IS not NULLN;
CondExprDef condition -> expr IS not DEFAULT;
CondExprBetw condition -> expr not BETWEEN expr AND expr;
CondExprLike condition -> expr not LIKE const;
CondExprExists condition -> EXISTS '(' select_statement ')';
NotNull not -> ;
Not not -> NOT;
AnyNull any -> ;
AnyAll any -> ALL;
Any any -> ANY;
InSelExpr in_sel_expr -> '(' select_statement ')';
InSelExprConst in_sel_expr -> const_recs;
CondSel cond_sel_expr -> expr;
CondSelSel cond_sel_expr -> '(' select_statement ')';
ConstRecs const_recs -> '(' const_list ')';
ConstRecsList const_recs -> '[' const_rec_list ']';
ConstRecListOne const_rec_list -> '(' const_list ')';
ConstRecList const_rec_list -> const_rec_list ',' '(' const_list ')';
PathListOne path_list -> path;
PathList path_list -> path_list ',' path;
FieldListOne field_list -> field;
FieldList field_list -> field_list ',' field;
Path path -> path_e_list;
PathEle path -> path_e_list '[' element_name ']';
PathEleOne path_e_list -> path_element;
PathEleList path_e_list -> path_element '.' path_e_list;
ElementName element_name -> norder_list;
OrderDirNull orderdir -> ;
OrderDirDesc orderdir -> DESC;
OrderDirAsc orderdir -> ASC;
ConstListOne const_list -> const;
ConstList const_list -> const_list ',' const;
ExprSemantic expr -> expr '`' s_control;
ExprUnaryMinus expr -> '-' expr %prec UMINUS;
ExprPlus expr -> expr '+' expr;
ExprMinus expr -> expr '-' expr;
ExprMult expr -> expr '*' expr;
ExprDiv expr -> expr '/' expr;
ExprMod expr -> expr '%' expr;
ExprPwr expr -> expr '**' expr;
ExprCond expr -> expr '?' else_part;
ExprComp expr -> '~' expr;
ExprRShift expr -> expr '>>' expr;
ExprLShift expr -> expr '<<' expr;
ExprXor expr -> expr '^' expr;
ExprOr expr -> expr '|' expr;
ExprAnd expr -> expr '&' expr;
ExprLogOr expr -> expr '||' expr;
ExprLogAnd expr -> expr '&&' expr;
ExprCondNLT expr -> expr '!<' cond_sel_expr;
ExprCondNGT expr -> expr '!>' cond_sel_expr;
ExprCondLT expr -> expr '<' any cond_sel_expr;
ExprCondGT expr -> expr '>' any cond_sel_expr;
ExprCondEQ expr -> expr '=' any cond_sel_expr;
ExprCondGE expr -> expr '>=' cond_sel_expr;
ExprCondLE expr -> expr '<=' cond_sel_expr;
ExprCondNE expr -> expr '!=' any cond_sel_expr;
ExprCondParen expr -> '(' expr ')';
ExprConst expr -> const;
ExprPath expr -> path;
ExprFunction expr -> function;
ElsePart else_part -> expr ':' expr %prec TCOL;
ConstInteger const -> INTEGER;
ConstReal const -> REAL;
ConstString const -> STRING;
ConstDefault const -> DEFAULT;
ConstNulln const -> NULLN;
ConstParm const -> PARM;
FunctionStar function -> fname '(' '*' ')';
FunctionExpr function -> fname '(' expr_list ')';
FunctionUnique function -> fname '(' UNIQUE path ')';
ExprListOne expr_list -> expr;
ExprList expr_list -> expr_list ',' expr;
CreateTable create -> CREATE cluster TABLE path tfd_list with_clause;
CreateView create -> CREATE VIEW view_name vfd
AS select_statement with_clause;
CreateFragment create -> CREATE FRAGMENT view_name vfd
AS select_statement with_clause;
CreateSnapshot create -> CREATE SNAPSHOT view_name vfd
AS select_statement with_clause;
CreateSynonym create -> CREATE SYNONYM syn_name FOR path;
CreateIndex create -> CREATE unique cluster INDEX index_name
ON path '(' order_list ')' with_clause;
CreateDatabase create -> CREATE DATABASE dbname TYPE dbtype
ON hname with_clause;
CreateDomain create -> CREATE DOMAIN domain_name_list
IS domain_types defaults domain_restrict;
CreateType create -> CREATE TYPE type_name IS;
CreateConstr create -> CREATE CONSTRAINT constr_name trigger_list
CHECK predicate;
AlterList alter -> ALTER TABLE path alter_list with_clause;
AlterPath alter -> ALTER TABLE path path with_clause;
DropIndex drop -> DROP INDEX index_name;
Drop drop -> DROP object_type path;
Comment comment -> COMMENT ON path;
CommentIs comment -> COMMENT ON path IS comment_str;
Info info -> INFO;
CommentStrOne comment_str -> STRING;
CommentStrList comment_str -> STRING ',' STRING;
TriggerListOne trigger_list -> trigger;
TriggerList trigger_list -> trigger_list ',' trigger;
TriggerAt trigger -> AT event;
TriggerAfter trigger -> AFTER event OF path FROM path;
TriggerBefore trigger -> BEFORE event OF path FROM path;
EventCommit event -> COMMIT;
EventDelete event -> DELETE;
EventInsert event -> INSERT;
EventUpdate event -> UPDATE;
IndexName index_name -> path;
ClusterNull cluster -> ;
Cluster cluster -> IDENTIFIER;
ViewName view_name -> record;
ViewNameUser view_name -> user '.' record;
WithClauseNull with_clause -> ;
WithClause with_clause -> WITH option_list;
OptionListOne option_list -> option;
OptionList option_list -> option ',' option_list;
OptionId option -> IDENTIFIER;
OptionIdId option -> IDENTIFIER IDENTIFIER;
OptionIdEq option -> IDENTIFIER EQ const;
TfdListPrim tfd_list -> primary_key foreign_keys field_dis;
FieldDis field_dis -> '(' tfd_fields ')';
PrimaryNull primary_key -> ;
Primary primary_key -> PRIMARY '(' primary_keys ')';
PrimaryListOne primary_keys -> field;
PrimaryList primary_keys -> primary_keys ',' field;
ForeignListNull foreign_keys -> ;
ForeignList foreign_keys -> foreign_keys foreign_key;
ForeignKey foreign_key -> FOREIGN '(' f_key IDENTIFIES path
nulls DELETE OF path effect UPDATE OF path effect ')';
NullsAllowed nulls -> NULLS ALLOWED;
NullsNAllowed nulls -> NULLS NOT ALLOWED;
TfdFieldsOne tfd_fields -> tfd;
TfdFieldsList tfd_fields -> tfd_fields ',' tfd;
TfdField tfd -> field o_domain_name;
TfdFieldList tfd -> field '(' field_list ')' o_domain_name;
DomainNull o_domain_name -> ;
Domain o_domain_name -> domain_name;
TypeName type_name -> IDENTIFIER;
DomNameListOne domain_name_list -> domain_name;
DomNameList domain_name_list -> domain_name_list ',' domain_name;
DomTypeOne domain_types -> domain_type;
DomTypeList domain_types -> '(' domain_type_list ')';
DefaultsNull defaults -> ;
Defaults defaults -> DEFAULT;
DomRestrWhere domain_restrict -> where_clause;
DomRestrSelect domain_restrict -> select_statement;
DomListNull domain_type_list -> ;
DomList domain_type_list -> domain_type_list ',' domain_type;
DomainTypeName domain_type -> type_name;
DomainTypeNameL domain_type -> type_name '(' i_list ')';
IListOne i_list -> INTEGER;
IList i_list -> i_list ',' INTEGER;
VfdNull vfd -> ;
Vfd vfd -> '(' vfd_list ')';
VfdListOne vfd_list -> field;
VfdList vfd_list -> vfd_list ',' field;
AlterListOne alter_list -> alteration;
AlterList0 alter_list -> alter_list ',' alteration;
AlterAdd alteration -> ADD '(' a_tfd_fields ')';
AlterDrop alteration -> DROP vfd;
AlterModify alteration -> MODIFY '(' m_tfd_fields ')';
ATfdFieldsOne a_tfd_fields -> tfd before;
ATfdFieldsList a_tfd_fields -> a_tfd_fields ',' tfd before;
MTfdFieldsOne m_tfd_fields -> field tfd;
MTfdFields m_tfd_fields -> m_tfd_fields ',' field tfd;
BeforeNull before -> ;
Before before -> BEFORE field;
Effect effect -> IDENTIFIER;
ObjectDatabase object_type -> DATABASE;
ObjectDomain object_type -> DOMAIN;
ObjectProgram object_type -> PROGRAM;
ObjectSynonym object_type -> SYNONYM;
ObjectType object_type -> TYPE;
ObjectTable object_type -> TABLE;
ObjectView object_type -> VIEW;
Grant grant -> GRANT privileges gr_on TO users
at_option between_option on_option where_option wgo;
AtOptNull at_option -> ;
AtOpt at_option -> AT terminal_list;
BetweenOptNull between_option -> ;
BetweenOpt between_option -> BETWEEN time1 AND time2;
OnOptNull on_option -> ;
OnOpt on_option -> ON day1 AND day2;
WhereOptNull where_option -> ;
WhereOpt where_option -> WHERE predicate;
WgoNull wgo -> ;
Wgo wgo -> WITH GRANT OPTION;
TermListOne terminal_list -> tty;
TermList terminal_list -> tty ',' terminal_list;
Revoke revoke -> REVOKE privileges gr_on FROM users;
PrivNull privileges -> ;
PrivOne privileges -> privileg;
PrivList privileges -> privileges ',' privileg;
Priv privileg -> priv_name;
PrivFields privileg -> priv_name '(' field_list ')';
GrOnNull gr_on -> ;
GrOn gr_on -> ON object_type objects;
UserOne users -> user;
UserList users -> users ',' user;
ObjectsOne objects -> IDENTIFIER;
Objects objects -> objects ',' IDENTIFIER;
Lock lock -> LOCK TABLE path IN mode MODE;
Begin begin -> BBEGIN work;
Commit commit -> COMMIT work;
Rollback rollback -> ROLLBACK work;
RollbackSync rollback -> ROLLBACK SYNC;
Rollforward rollforward -> ROLLFORWARD path FROM path roll_op;
RollOpNull roll_op -> ;
RollOp roll_op -> TO STRING time;
TimeNull time -> ;
Time time -> STRING;
Sync sync -> SYNC;
WorkNull work -> ;
Work work -> WORK;
Close close -> CLOSE dbname;
Open open -> OPEN dbname password;
Password password -> IDENTIFIER;
Audit audit -> AUDIT into_clause path_list
from_clause where_clause;
Check check -> CHECK;
Dump dump -> DUMP DATABASE dbname to_clause;
DumpTable dump -> DUMP TABLE dbname to_clause;
Repair repair -> REPAIR;
Restore restore -> RESTORE DATABASE dbname rfrom_clause;
RestoreTable restore -> RESTORE TABLE dbname rfrom_clause;
ToClauseNull to_clause -> ;
ToClause to_clause -> TO filename;
RFromClauseNull rfrom_clause -> ;
RFromClause rfrom_clause -> FROM filename;
Set set -> SET option_list;
WhereClauseNull where_clause -> ;
WhereClause where_clause -> WHERE predicate;
FromClauseNull from_clause -> ;
FromClause from_clause -> FROM path_list;
Mode mode -> IDENTIFIER;
PrivNameId priv_name -> IDENTIFIER;
PrivNameAlter priv_name -> ALTER;
PrivNameCreate priv_name -> CREATE;
PrivNameDelete priv_name -> DELETE;
PrivNameDump priv_name -> DUMP;
PrivNameRestore priv_name -> RESTORE;
PrivNameDrop priv_name -> DROP;
PrivNameInsert priv_name -> INSERT;
PrivNameLock priv_name -> LOCK;
PrivNameSelect priv_name -> SELECT;
PrivNameUpdate priv_name -> UPDATE;
SControl s_control -> IDENTIFIER;
AliasId alias -> IDENTIFIER;
ConstrName constr_name -> IDENTIFIER;
Day1 day1 -> IDENTIFIER;
Day2 day2 -> IDENTIFIER;
DbType dbtype -> PARM;
DbTypeId dbtype -> IDENTIFIER;
DbNameParm dbname -> PARM;
DbNameId dbname -> IDENTIFIER;
DomainName domain_name -> IDENTIFIER;
FieldName field -> IDENTIFIER;
Filename filename -> PARM;
FilenameId filename -> IDENTIFIER;
Fname fname -> IDENTIFIER;
FKey f_key -> IDENTIFIER;
HName hname -> IDENTIFIER;
ParmName parm_name -> IDENTIFIER;
PathElement path_element -> IDENTIFIER;
ProgName prog_name -> IDENTIFIER;
Record record -> IDENTIFIER;
SynName syn_name -> IDENTIFIER;
Tty tty -> IDENTIFIER;
Time1 time1 -> IDENTIFIER;
Time2 time2 -> IDENTIFIER;
User user -> PARM;
UserId user -> IDENTIFIER;
String STRING -> stringList STRINGEND;
StringList stringList -> stringList STRINGPART;
StringListOne stringList -> STRINGPART;