1 //
2 // File: OracleParser.cc
3 // This code was produced by the dragon parser generator
4 //
5 #include "OracleParser.h"
6 #include <lfcbase/Exception.h>
7 #include <lfcbase/StackT.h>
8 
ScannerStateEntry()9 OracleParser::ScannerStateEntry::ScannerStateEntry()
10 {
11 }
12 
ScannerStateEntry(int state,ScannerStateType type)13 OracleParser::ScannerStateEntry::ScannerStateEntry(int state, ScannerStateType type)
14 {
15    _state = state;
16    _type = type;
17 }
18 
operator =(const OracleParser::ScannerStateEntry & s)19 OracleParser::ScannerStateEntry& OracleParser::ScannerStateEntry::operator = (const OracleParser::ScannerStateEntry& s)
20 {
21    _state = s._state;
22    _type = s._type;
23    return(*this);
24 }
25 
operator ==(const OracleParser::ScannerStateEntry & s)26 bool OracleParser::ScannerStateEntry::operator == (const OracleParser::ScannerStateEntry& s)
27 {
28    if ( _state == s._state )
29       return true;
30    return false;
31 }
32 
getType()33 OracleParser::ScannerStateType OracleParser::ScannerStateEntry::getType()
34 {
35    return _type;
36 }
getState()37 int OracleParser::ScannerStateEntry::getState()
38 {
39    return _state;
40 }
41 
42 
ScannerTransEntry()43 OracleParser::ScannerTransEntry::ScannerTransEntry()
44 {
45 }
46 
ScannerTransEntry(int state,char c)47 OracleParser::ScannerTransEntry::ScannerTransEntry(int state, char c)
48 {
49    _state = state;
50    _c = c;
51 }
52 
ScannerTransEntry(int state,char c,int fstate)53 OracleParser::ScannerTransEntry::ScannerTransEntry(int state, char c, int fstate)
54 {
55    _state = state;
56    _c = c;
57    _fstate = fstate;
58 }
59 
operator =(const OracleParser::ScannerTransEntry & s)60 OracleParser::ScannerTransEntry& OracleParser::ScannerTransEntry::operator = (const OracleParser::ScannerTransEntry& s)
61 {
62    _state = s._state;
63    _c = s._c;
64    _fstate = s._fstate;
65    return(*this);
66 }
67 
operator ==(const OracleParser::ScannerTransEntry & s)68 bool OracleParser::ScannerTransEntry::operator == (const OracleParser::ScannerTransEntry& s)
69 {
70    if ( _state == s._state && _c == s._c)
71       return true;
72    return false;
73 }
74 
getFState()75 int OracleParser::ScannerTransEntry::getFState()
76 {
77    return _fstate;
78 }
79 
80 
Scanner()81 OracleParser::Scanner::Scanner()
82 {
83 }
84 
85 
Scanner(Token t)86 OracleParser::Scanner::Scanner(Token t)
87 {
88    _token = t;
89 }
90 
getToken()91 OracleParser::Token OracleParser::Scanner::getToken()
92 {
93    return _token;
94 }
95 
addState(ScannerStateEntry s)96 void OracleParser::Scanner::addState(ScannerStateEntry s)
97 {
98    _stateList.Insert(s);
99 }
100 
addTransition(ScannerTransEntry t)101 void OracleParser::Scanner::addTransition(ScannerTransEntry t)
102 {
103    _transList.Insert(t);
104 }
105 
checkPattern(const Chain & p)106 bool OracleParser::Scanner::checkPattern(const Chain& p)
107 {
108    unsigned long state = 0;
109    ScannerStateEntry* pS = _stateList.First();
110    while (pS)
111    {
112       if (pS->getType() == START || pS->getType() == ANY)
113       {
114          state = pS->getState();
115          pS = 0;
116       }
117       else
118       {
119          pS = _stateList.Next();
120       }
121    }
122    unsigned long i = 0;
123    ScannerTransEntry* pT =
124    _transList.Find(ScannerTransEntry(state, p[i]));
125    while (pT)
126    {
127       ScannerStateEntry* pS = _stateList.Find(ScannerStateEntry(pT->getFState()));
128       if (pS)
129       {
130          if ( ( i == p.length()-2 ) && ( pS->getType() == FINAL || pS->getType() == ANY))
131          {
132             return true;
133          }
134          else
135          {
136             state = pT->getFState();
137          }
138       }
139       else
140       {
141          return false;
142       }
143       i++;
144       pT = _transList.Find(ScannerTransEntry(state, p[i]));
145    }
146    return false;
147 }
StackEntry()148 OracleParser::StackEntry::StackEntry()
149 {
150    _symbol = NONE;
151 }
152 
StackEntry(Symbol symbol,int num,int state,Chain tval)153 OracleParser::StackEntry::StackEntry(Symbol symbol, int num, int state, Chain tval)
154 {
155    _symbol=symbol;
156    _num=num;
157    _state=state;
158    _tval=tval;
159 }
160 
operator =(const OracleParser::StackEntry & se)161 OracleParser::StackEntry& OracleParser::StackEntry::operator = (const OracleParser::StackEntry& se)
162 {
163    _symbol=se._symbol;
164    _num=se._num;
165    _state=se._state;
166    _tval=se._tval;
167    return(*this);
168 }
169 
getState()170 int OracleParser::StackEntry::getState()
171 {
172    return _state;
173 }
getSymbol()174 OracleParser::Symbol OracleParser::StackEntry::getSymbol()
175 {
176    return _symbol;
177 }
getTval()178 Chain& OracleParser::StackEntry::getTval()
179 {
180    return _tval;
181 }
182 
ActionEntry()183 OracleParser::ActionEntry::ActionEntry()
184 {
185    _action=NULLACTION;
186 }
187 
ActionEntry(Action action,int num)188 OracleParser::ActionEntry::ActionEntry(Action action , int num)
189 {
190    _action=action;
191    _num=num;
192 }
193 
operator ==(const OracleParser::ActionEntry & ae)194 bool OracleParser::ActionEntry::operator == (const OracleParser::ActionEntry& ae)
195 {
196    if (_action == ae._action && _num == ae._num)
197       return true;
198    return false;
199 }
200 
operator =(const OracleParser::ActionEntry & ae)201 OracleParser::ActionEntry& OracleParser::ActionEntry::operator = (const OracleParser::ActionEntry& ae)
202 {
203    _action=ae._action;
204    _num=ae._num;
205    return(*this);
206 }
207 
getAction()208 OracleParser::Action OracleParser::ActionEntry::getAction()
209 {
210    return _action;
211 }
212 
getNum()213 int OracleParser::ActionEntry::getNum()
214 {
215    return _num;
216 }
217 
ProdEntry()218 OracleParser::ProdEntry::ProdEntry()
219 {
220 }
221 
ProdEntry(int id)222 OracleParser::ProdEntry::ProdEntry(int id)
223 {
224    _id = id;
225 }
226 
ProdEntry(int id,Production prod,int numSymbol)227 OracleParser::ProdEntry::ProdEntry(int id, Production prod, int numSymbol)
228 {
229    _id = id;
230    _prod = prod;
231    _numSymbol = numSymbol;
232 }
233 
operator ==(const OracleParser::ProdEntry & pe)234 bool OracleParser::ProdEntry::operator == (const OracleParser::ProdEntry& pe)
235 {
236    if (_id == pe._id)
237       return true;
238    return false;
239 }
240 
operator =(const OracleParser::ProdEntry & pe)241 OracleParser::ProdEntry& OracleParser::ProdEntry::operator = (const OracleParser::ProdEntry& pe)
242 {
243    _id = pe._id;
244    _prod = pe._prod;
245    _numSymbol = pe._numSymbol;
246    return(*this);
247 }
248 
249 
getId()250 int OracleParser::ProdEntry::getId()
251 {
252    return _id;
253 }
254 
getProd()255 OracleParser::Production OracleParser::ProdEntry::getProd()
256 {
257    return _prod;
258 }
259 
getNumSymbol()260 int OracleParser::ProdEntry::getNumSymbol()
261 {
262    return _numSymbol;
263 }
loadScanner()264 void OracleParser::loadScanner()
265 {
266    Scanner s0(BOOL);
267    s0.addState(ScannerStateEntry(0 ,INTERMEDIATE));
268    s0.addState(ScannerStateEntry(1 ,INTERMEDIATE));
269    s0.addState(ScannerStateEntry(2 ,START));
270    s0.addState(ScannerStateEntry(3 ,INTERMEDIATE));
271    s0.addState(ScannerStateEntry(4 ,FINAL));
272    s0.addTransition(ScannerTransEntry(0 ,'o' ,1));
273    s0.addTransition(ScannerTransEntry(1 ,'o' ,3));
274    s0.addTransition(ScannerTransEntry(2 ,'b' ,0));
275    s0.addTransition(ScannerTransEntry(3 ,'l' ,4));
276    _scannerList.Insert(s0);
277 
278    Scanner s1(CREATE);
279    s1.addState(ScannerStateEntry(0 ,INTERMEDIATE));
280    s1.addState(ScannerStateEntry(1 ,INTERMEDIATE));
281    s1.addState(ScannerStateEntry(2 ,START));
282    s1.addState(ScannerStateEntry(3 ,INTERMEDIATE));
283    s1.addState(ScannerStateEntry(4 ,INTERMEDIATE));
284    s1.addState(ScannerStateEntry(5 ,INTERMEDIATE));
285    s1.addState(ScannerStateEntry(6 ,FINAL));
286    s1.addTransition(ScannerTransEntry(0 ,'r' ,1));
287    s1.addTransition(ScannerTransEntry(1 ,'e' ,3));
288    s1.addTransition(ScannerTransEntry(2 ,'c' ,0));
289    s1.addTransition(ScannerTransEntry(3 ,'a' ,4));
290    s1.addTransition(ScannerTransEntry(4 ,'t' ,5));
291    s1.addTransition(ScannerTransEntry(5 ,'e' ,6));
292    _scannerList.Insert(s1);
293 
294    Scanner s2(DATETIME);
295    s2.addState(ScannerStateEntry(0 ,INTERMEDIATE));
296    s2.addState(ScannerStateEntry(1 ,INTERMEDIATE));
297    s2.addState(ScannerStateEntry(2 ,START));
298    s2.addState(ScannerStateEntry(3 ,INTERMEDIATE));
299    s2.addState(ScannerStateEntry(4 ,INTERMEDIATE));
300    s2.addState(ScannerStateEntry(5 ,INTERMEDIATE));
301    s2.addState(ScannerStateEntry(6 ,INTERMEDIATE));
302    s2.addState(ScannerStateEntry(7 ,INTERMEDIATE));
303    s2.addState(ScannerStateEntry(8 ,FINAL));
304    s2.addTransition(ScannerTransEntry(0 ,'a' ,1));
305    s2.addTransition(ScannerTransEntry(1 ,'t' ,3));
306    s2.addTransition(ScannerTransEntry(2 ,'d' ,0));
307    s2.addTransition(ScannerTransEntry(3 ,'e' ,4));
308    s2.addTransition(ScannerTransEntry(4 ,'t' ,5));
309    s2.addTransition(ScannerTransEntry(5 ,'i' ,6));
310    s2.addTransition(ScannerTransEntry(6 ,'m' ,7));
311    s2.addTransition(ScannerTransEntry(7 ,'e' ,8));
312    _scannerList.Insert(s2);
313 
314    Scanner s3(DECIMAL);
315    s3.addState(ScannerStateEntry(0 ,INTERMEDIATE));
316    s3.addState(ScannerStateEntry(1 ,INTERMEDIATE));
317    s3.addState(ScannerStateEntry(2 ,START));
318    s3.addState(ScannerStateEntry(3 ,INTERMEDIATE));
319    s3.addState(ScannerStateEntry(4 ,INTERMEDIATE));
320    s3.addState(ScannerStateEntry(5 ,INTERMEDIATE));
321    s3.addState(ScannerStateEntry(6 ,INTERMEDIATE));
322    s3.addState(ScannerStateEntry(7 ,FINAL));
323    s3.addTransition(ScannerTransEntry(0 ,'e' ,1));
324    s3.addTransition(ScannerTransEntry(1 ,'c' ,3));
325    s3.addTransition(ScannerTransEntry(2 ,'d' ,0));
326    s3.addTransition(ScannerTransEntry(3 ,'i' ,4));
327    s3.addTransition(ScannerTransEntry(4 ,'m' ,5));
328    s3.addTransition(ScannerTransEntry(5 ,'a' ,6));
329    s3.addTransition(ScannerTransEntry(6 ,'l' ,7));
330    _scannerList.Insert(s3);
331 
332    Scanner s4(DEFAULT);
333    s4.addState(ScannerStateEntry(0 ,INTERMEDIATE));
334    s4.addState(ScannerStateEntry(1 ,INTERMEDIATE));
335    s4.addState(ScannerStateEntry(2 ,START));
336    s4.addState(ScannerStateEntry(3 ,INTERMEDIATE));
337    s4.addState(ScannerStateEntry(4 ,INTERMEDIATE));
338    s4.addState(ScannerStateEntry(5 ,INTERMEDIATE));
339    s4.addState(ScannerStateEntry(6 ,INTERMEDIATE));
340    s4.addState(ScannerStateEntry(7 ,FINAL));
341    s4.addTransition(ScannerTransEntry(0 ,'e' ,1));
342    s4.addTransition(ScannerTransEntry(1 ,'f' ,3));
343    s4.addTransition(ScannerTransEntry(2 ,'d' ,0));
344    s4.addTransition(ScannerTransEntry(3 ,'a' ,4));
345    s4.addTransition(ScannerTransEntry(4 ,'u' ,5));
346    s4.addTransition(ScannerTransEntry(5 ,'l' ,6));
347    s4.addTransition(ScannerTransEntry(6 ,'t' ,7));
348    _scannerList.Insert(s4);
349 
350    Scanner s5(DOUBLE);
351    s5.addState(ScannerStateEntry(0 ,INTERMEDIATE));
352    s5.addState(ScannerStateEntry(1 ,INTERMEDIATE));
353    s5.addState(ScannerStateEntry(2 ,START));
354    s5.addState(ScannerStateEntry(3 ,INTERMEDIATE));
355    s5.addState(ScannerStateEntry(4 ,INTERMEDIATE));
356    s5.addState(ScannerStateEntry(5 ,INTERMEDIATE));
357    s5.addState(ScannerStateEntry(6 ,FINAL));
358    s5.addTransition(ScannerTransEntry(0 ,'o' ,1));
359    s5.addTransition(ScannerTransEntry(1 ,'u' ,3));
360    s5.addTransition(ScannerTransEntry(2 ,'d' ,0));
361    s5.addTransition(ScannerTransEntry(3 ,'b' ,4));
362    s5.addTransition(ScannerTransEntry(4 ,'l' ,5));
363    s5.addTransition(ScannerTransEntry(5 ,'e' ,6));
364    _scannerList.Insert(s5);
365 
366    Scanner s6(DROP);
367    s6.addState(ScannerStateEntry(0 ,INTERMEDIATE));
368    s6.addState(ScannerStateEntry(1 ,INTERMEDIATE));
369    s6.addState(ScannerStateEntry(2 ,START));
370    s6.addState(ScannerStateEntry(3 ,INTERMEDIATE));
371    s6.addState(ScannerStateEntry(4 ,FINAL));
372    s6.addTransition(ScannerTransEntry(0 ,'r' ,1));
373    s6.addTransition(ScannerTransEntry(1 ,'o' ,3));
374    s6.addTransition(ScannerTransEntry(2 ,'d' ,0));
375    s6.addTransition(ScannerTransEntry(3 ,'p' ,4));
376    _scannerList.Insert(s6);
377 
378    Scanner s7(ENUM);
379    s7.addState(ScannerStateEntry(0 ,INTERMEDIATE));
380    s7.addState(ScannerStateEntry(1 ,INTERMEDIATE));
381    s7.addState(ScannerStateEntry(2 ,START));
382    s7.addState(ScannerStateEntry(3 ,INTERMEDIATE));
383    s7.addState(ScannerStateEntry(4 ,FINAL));
384    s7.addTransition(ScannerTransEntry(0 ,'n' ,1));
385    s7.addTransition(ScannerTransEntry(1 ,'u' ,3));
386    s7.addTransition(ScannerTransEntry(2 ,'e' ,0));
387    s7.addTransition(ScannerTransEntry(3 ,'m' ,4));
388    _scannerList.Insert(s7);
389 
390    Scanner s8(ENGINE);
391    s8.addState(ScannerStateEntry(0 ,INTERMEDIATE));
392    s8.addState(ScannerStateEntry(1 ,INTERMEDIATE));
393    s8.addState(ScannerStateEntry(2 ,START));
394    s8.addState(ScannerStateEntry(3 ,INTERMEDIATE));
395    s8.addState(ScannerStateEntry(4 ,INTERMEDIATE));
396    s8.addState(ScannerStateEntry(5 ,INTERMEDIATE));
397    s8.addState(ScannerStateEntry(6 ,FINAL));
398    s8.addTransition(ScannerTransEntry(0 ,'n' ,1));
399    s8.addTransition(ScannerTransEntry(1 ,'g' ,3));
400    s8.addTransition(ScannerTransEntry(2 ,'e' ,0));
401    s8.addTransition(ScannerTransEntry(3 ,'i' ,4));
402    s8.addTransition(ScannerTransEntry(4 ,'n' ,5));
403    s8.addTransition(ScannerTransEntry(5 ,'e' ,6));
404    _scannerList.Insert(s8);
405 
406    Scanner s9(EXISTS);
407    s9.addState(ScannerStateEntry(0 ,INTERMEDIATE));
408    s9.addState(ScannerStateEntry(1 ,INTERMEDIATE));
409    s9.addState(ScannerStateEntry(2 ,START));
410    s9.addState(ScannerStateEntry(3 ,INTERMEDIATE));
411    s9.addState(ScannerStateEntry(4 ,INTERMEDIATE));
412    s9.addState(ScannerStateEntry(5 ,INTERMEDIATE));
413    s9.addState(ScannerStateEntry(6 ,FINAL));
414    s9.addTransition(ScannerTransEntry(0 ,'x' ,1));
415    s9.addTransition(ScannerTransEntry(1 ,'i' ,3));
416    s9.addTransition(ScannerTransEntry(2 ,'e' ,0));
417    s9.addTransition(ScannerTransEntry(3 ,'s' ,4));
418    s9.addTransition(ScannerTransEntry(4 ,'t' ,5));
419    s9.addTransition(ScannerTransEntry(5 ,'s' ,6));
420    _scannerList.Insert(s9);
421 
422    Scanner s10(FALSEVAL);
423    s10.addState(ScannerStateEntry(0 ,INTERMEDIATE));
424    s10.addState(ScannerStateEntry(1 ,INTERMEDIATE));
425    s10.addState(ScannerStateEntry(2 ,START));
426    s10.addState(ScannerStateEntry(3 ,INTERMEDIATE));
427    s10.addState(ScannerStateEntry(4 ,INTERMEDIATE));
428    s10.addState(ScannerStateEntry(5 ,FINAL));
429    s10.addTransition(ScannerTransEntry(0 ,'a' ,1));
430    s10.addTransition(ScannerTransEntry(1 ,'l' ,3));
431    s10.addTransition(ScannerTransEntry(2 ,'f' ,0));
432    s10.addTransition(ScannerTransEntry(3 ,'s' ,4));
433    s10.addTransition(ScannerTransEntry(4 ,'e' ,5));
434    _scannerList.Insert(s10);
435 
436    Scanner s11(FLOAT);
437    s11.addState(ScannerStateEntry(0 ,INTERMEDIATE));
438    s11.addState(ScannerStateEntry(1 ,INTERMEDIATE));
439    s11.addState(ScannerStateEntry(2 ,START));
440    s11.addState(ScannerStateEntry(3 ,INTERMEDIATE));
441    s11.addState(ScannerStateEntry(4 ,INTERMEDIATE));
442    s11.addState(ScannerStateEntry(5 ,FINAL));
443    s11.addTransition(ScannerTransEntry(0 ,'l' ,1));
444    s11.addTransition(ScannerTransEntry(1 ,'o' ,3));
445    s11.addTransition(ScannerTransEntry(2 ,'f' ,0));
446    s11.addTransition(ScannerTransEntry(3 ,'a' ,4));
447    s11.addTransition(ScannerTransEntry(4 ,'t' ,5));
448    _scannerList.Insert(s11);
449 
450    Scanner s12(FOREIGN);
451    s12.addState(ScannerStateEntry(0 ,INTERMEDIATE));
452    s12.addState(ScannerStateEntry(1 ,INTERMEDIATE));
453    s12.addState(ScannerStateEntry(2 ,START));
454    s12.addState(ScannerStateEntry(3 ,INTERMEDIATE));
455    s12.addState(ScannerStateEntry(4 ,INTERMEDIATE));
456    s12.addState(ScannerStateEntry(5 ,INTERMEDIATE));
457    s12.addState(ScannerStateEntry(6 ,INTERMEDIATE));
458    s12.addState(ScannerStateEntry(7 ,FINAL));
459    s12.addTransition(ScannerTransEntry(0 ,'o' ,1));
460    s12.addTransition(ScannerTransEntry(1 ,'r' ,3));
461    s12.addTransition(ScannerTransEntry(2 ,'f' ,0));
462    s12.addTransition(ScannerTransEntry(3 ,'e' ,4));
463    s12.addTransition(ScannerTransEntry(4 ,'i' ,5));
464    s12.addTransition(ScannerTransEntry(5 ,'g' ,6));
465    s12.addTransition(ScannerTransEntry(6 ,'n' ,7));
466    _scannerList.Insert(s12);
467 
468    Scanner s13(IF);
469    s13.addState(ScannerStateEntry(0 ,INTERMEDIATE));
470    s13.addState(ScannerStateEntry(1 ,FINAL));
471    s13.addState(ScannerStateEntry(2 ,START));
472    s13.addTransition(ScannerTransEntry(0 ,'f' ,1));
473    s13.addTransition(ScannerTransEntry(2 ,'i' ,0));
474    _scannerList.Insert(s13);
475 
476    Scanner s14(INDEX);
477    s14.addState(ScannerStateEntry(0 ,INTERMEDIATE));
478    s14.addState(ScannerStateEntry(1 ,INTERMEDIATE));
479    s14.addState(ScannerStateEntry(2 ,START));
480    s14.addState(ScannerStateEntry(3 ,INTERMEDIATE));
481    s14.addState(ScannerStateEntry(4 ,INTERMEDIATE));
482    s14.addState(ScannerStateEntry(5 ,FINAL));
483    s14.addTransition(ScannerTransEntry(0 ,'n' ,1));
484    s14.addTransition(ScannerTransEntry(1 ,'d' ,3));
485    s14.addTransition(ScannerTransEntry(2 ,'i' ,0));
486    s14.addTransition(ScannerTransEntry(3 ,'e' ,4));
487    s14.addTransition(ScannerTransEntry(4 ,'x' ,5));
488    _scannerList.Insert(s14);
489 
490    Scanner s15(INT);
491    s15.addState(ScannerStateEntry(0 ,INTERMEDIATE));
492    s15.addState(ScannerStateEntry(1 ,INTERMEDIATE));
493    s15.addState(ScannerStateEntry(2 ,START));
494    s15.addState(ScannerStateEntry(3 ,FINAL));
495    s15.addTransition(ScannerTransEntry(0 ,'n' ,1));
496    s15.addTransition(ScannerTransEntry(1 ,'t' ,3));
497    s15.addTransition(ScannerTransEntry(2 ,'i' ,0));
498    _scannerList.Insert(s15);
499 
500    Scanner s16(INTO);
501    s16.addState(ScannerStateEntry(0 ,INTERMEDIATE));
502    s16.addState(ScannerStateEntry(1 ,INTERMEDIATE));
503    s16.addState(ScannerStateEntry(2 ,START));
504    s16.addState(ScannerStateEntry(3 ,INTERMEDIATE));
505    s16.addState(ScannerStateEntry(4 ,FINAL));
506    s16.addTransition(ScannerTransEntry(0 ,'n' ,1));
507    s16.addTransition(ScannerTransEntry(1 ,'t' ,3));
508    s16.addTransition(ScannerTransEntry(2 ,'i' ,0));
509    s16.addTransition(ScannerTransEntry(3 ,'o' ,4));
510    _scannerList.Insert(s16);
511 
512    Scanner s17(INSERT);
513    s17.addState(ScannerStateEntry(0 ,INTERMEDIATE));
514    s17.addState(ScannerStateEntry(1 ,INTERMEDIATE));
515    s17.addState(ScannerStateEntry(2 ,START));
516    s17.addState(ScannerStateEntry(3 ,INTERMEDIATE));
517    s17.addState(ScannerStateEntry(4 ,INTERMEDIATE));
518    s17.addState(ScannerStateEntry(5 ,INTERMEDIATE));
519    s17.addState(ScannerStateEntry(6 ,FINAL));
520    s17.addTransition(ScannerTransEntry(0 ,'n' ,1));
521    s17.addTransition(ScannerTransEntry(1 ,'s' ,3));
522    s17.addTransition(ScannerTransEntry(2 ,'i' ,0));
523    s17.addTransition(ScannerTransEntry(3 ,'e' ,4));
524    s17.addTransition(ScannerTransEntry(4 ,'r' ,5));
525    s17.addTransition(ScannerTransEntry(5 ,'t' ,6));
526    _scannerList.Insert(s17);
527 
528    Scanner s18(KEY);
529    s18.addState(ScannerStateEntry(0 ,INTERMEDIATE));
530    s18.addState(ScannerStateEntry(1 ,INTERMEDIATE));
531    s18.addState(ScannerStateEntry(2 ,START));
532    s18.addState(ScannerStateEntry(3 ,FINAL));
533    s18.addTransition(ScannerTransEntry(0 ,'e' ,1));
534    s18.addTransition(ScannerTransEntry(1 ,'y' ,3));
535    s18.addTransition(ScannerTransEntry(2 ,'k' ,0));
536    _scannerList.Insert(s18);
537 
538    Scanner s19(LOCK);
539    s19.addState(ScannerStateEntry(0 ,INTERMEDIATE));
540    s19.addState(ScannerStateEntry(1 ,INTERMEDIATE));
541    s19.addState(ScannerStateEntry(2 ,START));
542    s19.addState(ScannerStateEntry(3 ,INTERMEDIATE));
543    s19.addState(ScannerStateEntry(4 ,FINAL));
544    s19.addTransition(ScannerTransEntry(0 ,'o' ,1));
545    s19.addTransition(ScannerTransEntry(1 ,'c' ,3));
546    s19.addTransition(ScannerTransEntry(2 ,'l' ,0));
547    s19.addTransition(ScannerTransEntry(3 ,'k' ,4));
548    _scannerList.Insert(s19);
549 
550    Scanner s20(LONGBLOB);
551    s20.addState(ScannerStateEntry(0 ,INTERMEDIATE));
552    s20.addState(ScannerStateEntry(1 ,INTERMEDIATE));
553    s20.addState(ScannerStateEntry(2 ,START));
554    s20.addState(ScannerStateEntry(3 ,INTERMEDIATE));
555    s20.addState(ScannerStateEntry(4 ,INTERMEDIATE));
556    s20.addState(ScannerStateEntry(5 ,INTERMEDIATE));
557    s20.addState(ScannerStateEntry(6 ,INTERMEDIATE));
558    s20.addState(ScannerStateEntry(7 ,INTERMEDIATE));
559    s20.addState(ScannerStateEntry(8 ,FINAL));
560    s20.addTransition(ScannerTransEntry(0 ,'o' ,1));
561    s20.addTransition(ScannerTransEntry(1 ,'n' ,3));
562    s20.addTransition(ScannerTransEntry(2 ,'l' ,0));
563    s20.addTransition(ScannerTransEntry(3 ,'g' ,4));
564    s20.addTransition(ScannerTransEntry(4 ,'b' ,5));
565    s20.addTransition(ScannerTransEntry(5 ,'l' ,6));
566    s20.addTransition(ScannerTransEntry(6 ,'o' ,7));
567    s20.addTransition(ScannerTransEntry(7 ,'b' ,8));
568    _scannerList.Insert(s20);
569 
570    Scanner s21(MEDIUMTEXT);
571    s21.addState(ScannerStateEntry(0 ,INTERMEDIATE));
572    s21.addState(ScannerStateEntry(1 ,INTERMEDIATE));
573    s21.addState(ScannerStateEntry(2 ,START));
574    s21.addState(ScannerStateEntry(3 ,INTERMEDIATE));
575    s21.addState(ScannerStateEntry(4 ,INTERMEDIATE));
576    s21.addState(ScannerStateEntry(5 ,INTERMEDIATE));
577    s21.addState(ScannerStateEntry(6 ,INTERMEDIATE));
578    s21.addState(ScannerStateEntry(7 ,INTERMEDIATE));
579    s21.addState(ScannerStateEntry(8 ,INTERMEDIATE));
580    s21.addState(ScannerStateEntry(9 ,INTERMEDIATE));
581    s21.addState(ScannerStateEntry(10 ,FINAL));
582    s21.addTransition(ScannerTransEntry(0 ,'e' ,1));
583    s21.addTransition(ScannerTransEntry(1 ,'d' ,3));
584    s21.addTransition(ScannerTransEntry(2 ,'m' ,0));
585    s21.addTransition(ScannerTransEntry(3 ,'i' ,4));
586    s21.addTransition(ScannerTransEntry(4 ,'u' ,5));
587    s21.addTransition(ScannerTransEntry(5 ,'m' ,6));
588    s21.addTransition(ScannerTransEntry(6 ,'t' ,7));
589    s21.addTransition(ScannerTransEntry(7 ,'e' ,8));
590    s21.addTransition(ScannerTransEntry(8 ,'x' ,9));
591    s21.addTransition(ScannerTransEntry(9 ,'t' ,10));
592    _scannerList.Insert(s21);
593 
594    Scanner s22(NOT);
595    s22.addState(ScannerStateEntry(0 ,INTERMEDIATE));
596    s22.addState(ScannerStateEntry(1 ,INTERMEDIATE));
597    s22.addState(ScannerStateEntry(2 ,START));
598    s22.addState(ScannerStateEntry(3 ,FINAL));
599    s22.addTransition(ScannerTransEntry(0 ,'o' ,1));
600    s22.addTransition(ScannerTransEntry(1 ,'t' ,3));
601    s22.addTransition(ScannerTransEntry(2 ,'n' ,0));
602    _scannerList.Insert(s22);
603 
604    Scanner s23(NULLTOKEN);
605    s23.addState(ScannerStateEntry(0 ,INTERMEDIATE));
606    s23.addState(ScannerStateEntry(1 ,INTERMEDIATE));
607    s23.addState(ScannerStateEntry(2 ,START));
608    s23.addState(ScannerStateEntry(3 ,INTERMEDIATE));
609    s23.addState(ScannerStateEntry(4 ,FINAL));
610    s23.addTransition(ScannerTransEntry(0 ,'u' ,1));
611    s23.addTransition(ScannerTransEntry(1 ,'l' ,3));
612    s23.addTransition(ScannerTransEntry(2 ,'n' ,0));
613    s23.addTransition(ScannerTransEntry(3 ,'l' ,4));
614    _scannerList.Insert(s23);
615 
616    Scanner s24(PRIMARY);
617    s24.addState(ScannerStateEntry(0 ,INTERMEDIATE));
618    s24.addState(ScannerStateEntry(1 ,INTERMEDIATE));
619    s24.addState(ScannerStateEntry(2 ,START));
620    s24.addState(ScannerStateEntry(3 ,INTERMEDIATE));
621    s24.addState(ScannerStateEntry(4 ,INTERMEDIATE));
622    s24.addState(ScannerStateEntry(5 ,INTERMEDIATE));
623    s24.addState(ScannerStateEntry(6 ,INTERMEDIATE));
624    s24.addState(ScannerStateEntry(7 ,FINAL));
625    s24.addTransition(ScannerTransEntry(0 ,'r' ,1));
626    s24.addTransition(ScannerTransEntry(1 ,'i' ,3));
627    s24.addTransition(ScannerTransEntry(2 ,'p' ,0));
628    s24.addTransition(ScannerTransEntry(3 ,'m' ,4));
629    s24.addTransition(ScannerTransEntry(4 ,'a' ,5));
630    s24.addTransition(ScannerTransEntry(5 ,'r' ,6));
631    s24.addTransition(ScannerTransEntry(6 ,'y' ,7));
632    _scannerList.Insert(s24);
633 
634    Scanner s25(SET);
635    s25.addState(ScannerStateEntry(0 ,INTERMEDIATE));
636    s25.addState(ScannerStateEntry(1 ,INTERMEDIATE));
637    s25.addState(ScannerStateEntry(2 ,START));
638    s25.addState(ScannerStateEntry(3 ,FINAL));
639    s25.addTransition(ScannerTransEntry(0 ,'e' ,1));
640    s25.addTransition(ScannerTransEntry(1 ,'t' ,3));
641    s25.addTransition(ScannerTransEntry(2 ,'s' ,0));
642    _scannerList.Insert(s25);
643 
644    Scanner s26(TABLE);
645    s26.addState(ScannerStateEntry(0 ,INTERMEDIATE));
646    s26.addState(ScannerStateEntry(1 ,INTERMEDIATE));
647    s26.addState(ScannerStateEntry(2 ,START));
648    s26.addState(ScannerStateEntry(3 ,INTERMEDIATE));
649    s26.addState(ScannerStateEntry(4 ,INTERMEDIATE));
650    s26.addState(ScannerStateEntry(5 ,FINAL));
651    s26.addTransition(ScannerTransEntry(0 ,'a' ,1));
652    s26.addTransition(ScannerTransEntry(1 ,'b' ,3));
653    s26.addTransition(ScannerTransEntry(2 ,'t' ,0));
654    s26.addTransition(ScannerTransEntry(3 ,'l' ,4));
655    s26.addTransition(ScannerTransEntry(4 ,'e' ,5));
656    _scannerList.Insert(s26);
657 
658    Scanner s27(TABLES);
659    s27.addState(ScannerStateEntry(0 ,INTERMEDIATE));
660    s27.addState(ScannerStateEntry(1 ,INTERMEDIATE));
661    s27.addState(ScannerStateEntry(2 ,START));
662    s27.addState(ScannerStateEntry(3 ,INTERMEDIATE));
663    s27.addState(ScannerStateEntry(4 ,INTERMEDIATE));
664    s27.addState(ScannerStateEntry(5 ,INTERMEDIATE));
665    s27.addState(ScannerStateEntry(6 ,FINAL));
666    s27.addTransition(ScannerTransEntry(0 ,'a' ,1));
667    s27.addTransition(ScannerTransEntry(1 ,'b' ,3));
668    s27.addTransition(ScannerTransEntry(2 ,'t' ,0));
669    s27.addTransition(ScannerTransEntry(3 ,'l' ,4));
670    s27.addTransition(ScannerTransEntry(4 ,'e' ,5));
671    s27.addTransition(ScannerTransEntry(5 ,'s' ,6));
672    _scannerList.Insert(s27);
673 
674    Scanner s28(TEXT);
675    s28.addState(ScannerStateEntry(0 ,INTERMEDIATE));
676    s28.addState(ScannerStateEntry(1 ,INTERMEDIATE));
677    s28.addState(ScannerStateEntry(2 ,START));
678    s28.addState(ScannerStateEntry(3 ,INTERMEDIATE));
679    s28.addState(ScannerStateEntry(4 ,FINAL));
680    s28.addTransition(ScannerTransEntry(0 ,'e' ,1));
681    s28.addTransition(ScannerTransEntry(1 ,'x' ,3));
682    s28.addTransition(ScannerTransEntry(2 ,'t' ,0));
683    s28.addTransition(ScannerTransEntry(3 ,'t' ,4));
684    _scannerList.Insert(s28);
685 
686    Scanner s29(TIMESTAMP);
687    s29.addState(ScannerStateEntry(0 ,INTERMEDIATE));
688    s29.addState(ScannerStateEntry(1 ,INTERMEDIATE));
689    s29.addState(ScannerStateEntry(2 ,START));
690    s29.addState(ScannerStateEntry(3 ,INTERMEDIATE));
691    s29.addState(ScannerStateEntry(4 ,INTERMEDIATE));
692    s29.addState(ScannerStateEntry(5 ,INTERMEDIATE));
693    s29.addState(ScannerStateEntry(6 ,INTERMEDIATE));
694    s29.addState(ScannerStateEntry(7 ,INTERMEDIATE));
695    s29.addState(ScannerStateEntry(8 ,INTERMEDIATE));
696    s29.addState(ScannerStateEntry(9 ,FINAL));
697    s29.addTransition(ScannerTransEntry(0 ,'i' ,1));
698    s29.addTransition(ScannerTransEntry(1 ,'m' ,3));
699    s29.addTransition(ScannerTransEntry(2 ,'t' ,0));
700    s29.addTransition(ScannerTransEntry(3 ,'e' ,4));
701    s29.addTransition(ScannerTransEntry(4 ,'s' ,5));
702    s29.addTransition(ScannerTransEntry(5 ,'t' ,6));
703    s29.addTransition(ScannerTransEntry(6 ,'a' ,7));
704    s29.addTransition(ScannerTransEntry(7 ,'m' ,8));
705    s29.addTransition(ScannerTransEntry(8 ,'p' ,9));
706    _scannerList.Insert(s29);
707 
708    Scanner s30(UNLOCK);
709    s30.addState(ScannerStateEntry(0 ,INTERMEDIATE));
710    s30.addState(ScannerStateEntry(1 ,INTERMEDIATE));
711    s30.addState(ScannerStateEntry(2 ,START));
712    s30.addState(ScannerStateEntry(3 ,INTERMEDIATE));
713    s30.addState(ScannerStateEntry(4 ,INTERMEDIATE));
714    s30.addState(ScannerStateEntry(5 ,INTERMEDIATE));
715    s30.addState(ScannerStateEntry(6 ,FINAL));
716    s30.addTransition(ScannerTransEntry(0 ,'n' ,1));
717    s30.addTransition(ScannerTransEntry(1 ,'l' ,3));
718    s30.addTransition(ScannerTransEntry(2 ,'u' ,0));
719    s30.addTransition(ScannerTransEntry(3 ,'o' ,4));
720    s30.addTransition(ScannerTransEntry(4 ,'c' ,5));
721    s30.addTransition(ScannerTransEntry(5 ,'k' ,6));
722    _scannerList.Insert(s30);
723 
724    Scanner s31(UNIQUE);
725    s31.addState(ScannerStateEntry(0 ,INTERMEDIATE));
726    s31.addState(ScannerStateEntry(1 ,INTERMEDIATE));
727    s31.addState(ScannerStateEntry(2 ,START));
728    s31.addState(ScannerStateEntry(3 ,INTERMEDIATE));
729    s31.addState(ScannerStateEntry(4 ,INTERMEDIATE));
730    s31.addState(ScannerStateEntry(5 ,INTERMEDIATE));
731    s31.addState(ScannerStateEntry(6 ,FINAL));
732    s31.addTransition(ScannerTransEntry(0 ,'n' ,1));
733    s31.addTransition(ScannerTransEntry(1 ,'i' ,3));
734    s31.addTransition(ScannerTransEntry(2 ,'u' ,0));
735    s31.addTransition(ScannerTransEntry(3 ,'q' ,4));
736    s31.addTransition(ScannerTransEntry(4 ,'u' ,5));
737    s31.addTransition(ScannerTransEntry(5 ,'e' ,6));
738    _scannerList.Insert(s31);
739 
740    Scanner s32(UNSIGNED);
741    s32.addState(ScannerStateEntry(0 ,INTERMEDIATE));
742    s32.addState(ScannerStateEntry(1 ,INTERMEDIATE));
743    s32.addState(ScannerStateEntry(2 ,START));
744    s32.addState(ScannerStateEntry(3 ,INTERMEDIATE));
745    s32.addState(ScannerStateEntry(4 ,INTERMEDIATE));
746    s32.addState(ScannerStateEntry(5 ,INTERMEDIATE));
747    s32.addState(ScannerStateEntry(6 ,INTERMEDIATE));
748    s32.addState(ScannerStateEntry(7 ,INTERMEDIATE));
749    s32.addState(ScannerStateEntry(8 ,FINAL));
750    s32.addTransition(ScannerTransEntry(0 ,'n' ,1));
751    s32.addTransition(ScannerTransEntry(1 ,'s' ,3));
752    s32.addTransition(ScannerTransEntry(2 ,'u' ,0));
753    s32.addTransition(ScannerTransEntry(3 ,'i' ,4));
754    s32.addTransition(ScannerTransEntry(4 ,'g' ,5));
755    s32.addTransition(ScannerTransEntry(5 ,'n' ,6));
756    s32.addTransition(ScannerTransEntry(6 ,'e' ,7));
757    s32.addTransition(ScannerTransEntry(7 ,'d' ,8));
758    _scannerList.Insert(s32);
759 
760    Scanner s33(VALUES);
761    s33.addState(ScannerStateEntry(0 ,INTERMEDIATE));
762    s33.addState(ScannerStateEntry(1 ,INTERMEDIATE));
763    s33.addState(ScannerStateEntry(2 ,START));
764    s33.addState(ScannerStateEntry(3 ,INTERMEDIATE));
765    s33.addState(ScannerStateEntry(4 ,INTERMEDIATE));
766    s33.addState(ScannerStateEntry(5 ,INTERMEDIATE));
767    s33.addState(ScannerStateEntry(6 ,FINAL));
768    s33.addTransition(ScannerTransEntry(0 ,'a' ,1));
769    s33.addTransition(ScannerTransEntry(1 ,'l' ,3));
770    s33.addTransition(ScannerTransEntry(2 ,'v' ,0));
771    s33.addTransition(ScannerTransEntry(3 ,'u' ,4));
772    s33.addTransition(ScannerTransEntry(4 ,'e' ,5));
773    s33.addTransition(ScannerTransEntry(5 ,'s' ,6));
774    _scannerList.Insert(s33);
775 
776    Scanner s34(VARCHAR);
777    s34.addState(ScannerStateEntry(0 ,INTERMEDIATE));
778    s34.addState(ScannerStateEntry(1 ,INTERMEDIATE));
779    s34.addState(ScannerStateEntry(2 ,START));
780    s34.addState(ScannerStateEntry(3 ,INTERMEDIATE));
781    s34.addState(ScannerStateEntry(4 ,INTERMEDIATE));
782    s34.addState(ScannerStateEntry(5 ,INTERMEDIATE));
783    s34.addState(ScannerStateEntry(6 ,INTERMEDIATE));
784    s34.addState(ScannerStateEntry(7 ,FINAL));
785    s34.addTransition(ScannerTransEntry(0 ,'a' ,1));
786    s34.addTransition(ScannerTransEntry(1 ,'r' ,3));
787    s34.addTransition(ScannerTransEntry(2 ,'v' ,0));
788    s34.addTransition(ScannerTransEntry(3 ,'c' ,4));
789    s34.addTransition(ScannerTransEntry(4 ,'h' ,5));
790    s34.addTransition(ScannerTransEntry(5 ,'a' ,6));
791    s34.addTransition(ScannerTransEntry(6 ,'r' ,7));
792    _scannerList.Insert(s34);
793 
794    Scanner s35(WRITE);
795    s35.addState(ScannerStateEntry(0 ,INTERMEDIATE));
796    s35.addState(ScannerStateEntry(1 ,INTERMEDIATE));
797    s35.addState(ScannerStateEntry(2 ,START));
798    s35.addState(ScannerStateEntry(3 ,INTERMEDIATE));
799    s35.addState(ScannerStateEntry(4 ,INTERMEDIATE));
800    s35.addState(ScannerStateEntry(5 ,FINAL));
801    s35.addTransition(ScannerTransEntry(0 ,'r' ,1));
802    s35.addTransition(ScannerTransEntry(1 ,'i' ,3));
803    s35.addTransition(ScannerTransEntry(2 ,'w' ,0));
804    s35.addTransition(ScannerTransEntry(3 ,'t' ,4));
805    s35.addTransition(ScannerTransEntry(4 ,'e' ,5));
806    _scannerList.Insert(s35);
807 
808    Scanner s36(MINUS);
809    s36.addState(ScannerStateEntry(0 ,START));
810    s36.addState(ScannerStateEntry(1 ,FINAL));
811    s36.addTransition(ScannerTransEntry(0 ,'-' ,1));
812    _scannerList.Insert(s36);
813 
814    Scanner s37(EQU);
815    s37.addState(ScannerStateEntry(0 ,START));
816    s37.addState(ScannerStateEntry(1 ,FINAL));
817    s37.addTransition(ScannerTransEntry(0 ,'=' ,1));
818    _scannerList.Insert(s37);
819 
820    Scanner s38(KSEP);
821    s38.addState(ScannerStateEntry(0 ,START));
822    s38.addState(ScannerStateEntry(1 ,FINAL));
823    s38.addTransition(ScannerTransEntry(0 ,',' ,1));
824    _scannerList.Insert(s38);
825 
826    Scanner s39(LB);
827    s39.addState(ScannerStateEntry(0 ,START));
828    s39.addState(ScannerStateEntry(1 ,FINAL));
829    s39.addTransition(ScannerTransEntry(0 ,'(' ,1));
830    _scannerList.Insert(s39);
831 
832    Scanner s40(RB);
833    s40.addState(ScannerStateEntry(0 ,START));
834    s40.addState(ScannerStateEntry(1 ,FINAL));
835    s40.addTransition(ScannerTransEntry(0 ,')' ,1));
836    _scannerList.Insert(s40);
837 
838    Scanner s41(SEMICOLON);
839    s41.addState(ScannerStateEntry(0 ,START));
840    s41.addState(ScannerStateEntry(1 ,FINAL));
841    s41.addTransition(ScannerTransEntry(0 ,';' ,1));
842    _scannerList.Insert(s41);
843 
844    Scanner s42(INTVAL);
845    s42.addState(ScannerStateEntry(0 ,START));
846    s42.addState(ScannerStateEntry(1 ,FINAL));
847    s42.addState(ScannerStateEntry(2 ,FINAL));
848    s42.addTransition(ScannerTransEntry(0 ,'1' ,1));
849    s42.addTransition(ScannerTransEntry(0 ,'2' ,1));
850    s42.addTransition(ScannerTransEntry(0 ,'3' ,1));
851    s42.addTransition(ScannerTransEntry(0 ,'4' ,1));
852    s42.addTransition(ScannerTransEntry(0 ,'5' ,1));
853    s42.addTransition(ScannerTransEntry(0 ,'6' ,1));
854    s42.addTransition(ScannerTransEntry(0 ,'7' ,1));
855    s42.addTransition(ScannerTransEntry(0 ,'8' ,1));
856    s42.addTransition(ScannerTransEntry(0 ,'9' ,1));
857    s42.addTransition(ScannerTransEntry(0 ,'0' ,2));
858    s42.addTransition(ScannerTransEntry(1 ,'0' ,1));
859    s42.addTransition(ScannerTransEntry(1 ,'1' ,1));
860    s42.addTransition(ScannerTransEntry(1 ,'2' ,1));
861    s42.addTransition(ScannerTransEntry(1 ,'3' ,1));
862    s42.addTransition(ScannerTransEntry(1 ,'4' ,1));
863    s42.addTransition(ScannerTransEntry(1 ,'5' ,1));
864    s42.addTransition(ScannerTransEntry(1 ,'6' ,1));
865    s42.addTransition(ScannerTransEntry(1 ,'7' ,1));
866    s42.addTransition(ScannerTransEntry(1 ,'8' ,1));
867    s42.addTransition(ScannerTransEntry(1 ,'9' ,1));
868    _scannerList.Insert(s42);
869 
870    Scanner s43(FLOATVAL);
871    s43.addState(ScannerStateEntry(0 ,START));
872    s43.addState(ScannerStateEntry(1 ,INTERMEDIATE));
873    s43.addState(ScannerStateEntry(2 ,INTERMEDIATE));
874    s43.addState(ScannerStateEntry(3 ,FINAL));
875    s43.addTransition(ScannerTransEntry(0 ,'1' ,1));
876    s43.addTransition(ScannerTransEntry(0 ,'2' ,1));
877    s43.addTransition(ScannerTransEntry(0 ,'3' ,1));
878    s43.addTransition(ScannerTransEntry(0 ,'4' ,1));
879    s43.addTransition(ScannerTransEntry(0 ,'5' ,1));
880    s43.addTransition(ScannerTransEntry(0 ,'6' ,1));
881    s43.addTransition(ScannerTransEntry(0 ,'7' ,1));
882    s43.addTransition(ScannerTransEntry(0 ,'8' ,1));
883    s43.addTransition(ScannerTransEntry(0 ,'9' ,1));
884    s43.addTransition(ScannerTransEntry(0 ,'0' ,2));
885    s43.addTransition(ScannerTransEntry(1 ,'0' ,1));
886    s43.addTransition(ScannerTransEntry(1 ,'1' ,1));
887    s43.addTransition(ScannerTransEntry(1 ,'2' ,1));
888    s43.addTransition(ScannerTransEntry(1 ,'3' ,1));
889    s43.addTransition(ScannerTransEntry(1 ,'4' ,1));
890    s43.addTransition(ScannerTransEntry(1 ,'5' ,1));
891    s43.addTransition(ScannerTransEntry(1 ,'6' ,1));
892    s43.addTransition(ScannerTransEntry(1 ,'7' ,1));
893    s43.addTransition(ScannerTransEntry(1 ,'8' ,1));
894    s43.addTransition(ScannerTransEntry(1 ,'9' ,1));
895    s43.addTransition(ScannerTransEntry(1 ,'.' ,3));
896    s43.addTransition(ScannerTransEntry(2 ,'.' ,3));
897    s43.addTransition(ScannerTransEntry(3 ,'0' ,3));
898    s43.addTransition(ScannerTransEntry(3 ,'1' ,3));
899    s43.addTransition(ScannerTransEntry(3 ,'2' ,3));
900    s43.addTransition(ScannerTransEntry(3 ,'3' ,3));
901    s43.addTransition(ScannerTransEntry(3 ,'4' ,3));
902    s43.addTransition(ScannerTransEntry(3 ,'5' ,3));
903    s43.addTransition(ScannerTransEntry(3 ,'6' ,3));
904    s43.addTransition(ScannerTransEntry(3 ,'7' ,3));
905    s43.addTransition(ScannerTransEntry(3 ,'8' ,3));
906    s43.addTransition(ScannerTransEntry(3 ,'9' ,3));
907    _scannerList.Insert(s43);
908 
909    Scanner s44(QIDENTIFIER);
910    s44.addState(ScannerStateEntry(0 ,INTERMEDIATE));
911    s44.addState(ScannerStateEntry(1 ,INTERMEDIATE));
912    s44.addState(ScannerStateEntry(2 ,START));
913    s44.addState(ScannerStateEntry(3 ,FINAL));
914    s44.addTransition(ScannerTransEntry(0 ,'$' ,1));
915    s44.addTransition(ScannerTransEntry(0 ,'A' ,1));
916    s44.addTransition(ScannerTransEntry(0 ,'B' ,1));
917    s44.addTransition(ScannerTransEntry(0 ,'C' ,1));
918    s44.addTransition(ScannerTransEntry(0 ,'D' ,1));
919    s44.addTransition(ScannerTransEntry(0 ,'E' ,1));
920    s44.addTransition(ScannerTransEntry(0 ,'F' ,1));
921    s44.addTransition(ScannerTransEntry(0 ,'G' ,1));
922    s44.addTransition(ScannerTransEntry(0 ,'H' ,1));
923    s44.addTransition(ScannerTransEntry(0 ,'I' ,1));
924    s44.addTransition(ScannerTransEntry(0 ,'J' ,1));
925    s44.addTransition(ScannerTransEntry(0 ,'K' ,1));
926    s44.addTransition(ScannerTransEntry(0 ,'L' ,1));
927    s44.addTransition(ScannerTransEntry(0 ,'M' ,1));
928    s44.addTransition(ScannerTransEntry(0 ,'N' ,1));
929    s44.addTransition(ScannerTransEntry(0 ,'O' ,1));
930    s44.addTransition(ScannerTransEntry(0 ,'P' ,1));
931    s44.addTransition(ScannerTransEntry(0 ,'Q' ,1));
932    s44.addTransition(ScannerTransEntry(0 ,'R' ,1));
933    s44.addTransition(ScannerTransEntry(0 ,'S' ,1));
934    s44.addTransition(ScannerTransEntry(0 ,'T' ,1));
935    s44.addTransition(ScannerTransEntry(0 ,'U' ,1));
936    s44.addTransition(ScannerTransEntry(0 ,'V' ,1));
937    s44.addTransition(ScannerTransEntry(0 ,'W' ,1));
938    s44.addTransition(ScannerTransEntry(0 ,'X' ,1));
939    s44.addTransition(ScannerTransEntry(0 ,'Y' ,1));
940    s44.addTransition(ScannerTransEntry(0 ,'Z' ,1));
941    s44.addTransition(ScannerTransEntry(0 ,'a' ,1));
942    s44.addTransition(ScannerTransEntry(0 ,'b' ,1));
943    s44.addTransition(ScannerTransEntry(0 ,'c' ,1));
944    s44.addTransition(ScannerTransEntry(0 ,'d' ,1));
945    s44.addTransition(ScannerTransEntry(0 ,'e' ,1));
946    s44.addTransition(ScannerTransEntry(0 ,'f' ,1));
947    s44.addTransition(ScannerTransEntry(0 ,'g' ,1));
948    s44.addTransition(ScannerTransEntry(0 ,'h' ,1));
949    s44.addTransition(ScannerTransEntry(0 ,'i' ,1));
950    s44.addTransition(ScannerTransEntry(0 ,'j' ,1));
951    s44.addTransition(ScannerTransEntry(0 ,'k' ,1));
952    s44.addTransition(ScannerTransEntry(0 ,'l' ,1));
953    s44.addTransition(ScannerTransEntry(0 ,'m' ,1));
954    s44.addTransition(ScannerTransEntry(0 ,'n' ,1));
955    s44.addTransition(ScannerTransEntry(0 ,'o' ,1));
956    s44.addTransition(ScannerTransEntry(0 ,'p' ,1));
957    s44.addTransition(ScannerTransEntry(0 ,'q' ,1));
958    s44.addTransition(ScannerTransEntry(0 ,'r' ,1));
959    s44.addTransition(ScannerTransEntry(0 ,'s' ,1));
960    s44.addTransition(ScannerTransEntry(0 ,'t' ,1));
961    s44.addTransition(ScannerTransEntry(0 ,'u' ,1));
962    s44.addTransition(ScannerTransEntry(0 ,'v' ,1));
963    s44.addTransition(ScannerTransEntry(0 ,'w' ,1));
964    s44.addTransition(ScannerTransEntry(0 ,'x' ,1));
965    s44.addTransition(ScannerTransEntry(0 ,'y' ,1));
966    s44.addTransition(ScannerTransEntry(0 ,'z' ,1));
967    s44.addTransition(ScannerTransEntry(1 ,'0' ,1));
968    s44.addTransition(ScannerTransEntry(1 ,'1' ,1));
969    s44.addTransition(ScannerTransEntry(1 ,'2' ,1));
970    s44.addTransition(ScannerTransEntry(1 ,'3' ,1));
971    s44.addTransition(ScannerTransEntry(1 ,'4' ,1));
972    s44.addTransition(ScannerTransEntry(1 ,'5' ,1));
973    s44.addTransition(ScannerTransEntry(1 ,'6' ,1));
974    s44.addTransition(ScannerTransEntry(1 ,'7' ,1));
975    s44.addTransition(ScannerTransEntry(1 ,'8' ,1));
976    s44.addTransition(ScannerTransEntry(1 ,'9' ,1));
977    s44.addTransition(ScannerTransEntry(1 ,'A' ,1));
978    s44.addTransition(ScannerTransEntry(1 ,'B' ,1));
979    s44.addTransition(ScannerTransEntry(1 ,'C' ,1));
980    s44.addTransition(ScannerTransEntry(1 ,'D' ,1));
981    s44.addTransition(ScannerTransEntry(1 ,'E' ,1));
982    s44.addTransition(ScannerTransEntry(1 ,'F' ,1));
983    s44.addTransition(ScannerTransEntry(1 ,'G' ,1));
984    s44.addTransition(ScannerTransEntry(1 ,'H' ,1));
985    s44.addTransition(ScannerTransEntry(1 ,'I' ,1));
986    s44.addTransition(ScannerTransEntry(1 ,'J' ,1));
987    s44.addTransition(ScannerTransEntry(1 ,'K' ,1));
988    s44.addTransition(ScannerTransEntry(1 ,'L' ,1));
989    s44.addTransition(ScannerTransEntry(1 ,'M' ,1));
990    s44.addTransition(ScannerTransEntry(1 ,'N' ,1));
991    s44.addTransition(ScannerTransEntry(1 ,'O' ,1));
992    s44.addTransition(ScannerTransEntry(1 ,'P' ,1));
993    s44.addTransition(ScannerTransEntry(1 ,'Q' ,1));
994    s44.addTransition(ScannerTransEntry(1 ,'R' ,1));
995    s44.addTransition(ScannerTransEntry(1 ,'S' ,1));
996    s44.addTransition(ScannerTransEntry(1 ,'T' ,1));
997    s44.addTransition(ScannerTransEntry(1 ,'U' ,1));
998    s44.addTransition(ScannerTransEntry(1 ,'V' ,1));
999    s44.addTransition(ScannerTransEntry(1 ,'W' ,1));
1000    s44.addTransition(ScannerTransEntry(1 ,'X' ,1));
1001    s44.addTransition(ScannerTransEntry(1 ,'Y' ,1));
1002    s44.addTransition(ScannerTransEntry(1 ,'Z' ,1));
1003    s44.addTransition(ScannerTransEntry(1 ,'_' ,1));
1004    s44.addTransition(ScannerTransEntry(1 ,'a' ,1));
1005    s44.addTransition(ScannerTransEntry(1 ,'b' ,1));
1006    s44.addTransition(ScannerTransEntry(1 ,'c' ,1));
1007    s44.addTransition(ScannerTransEntry(1 ,'d' ,1));
1008    s44.addTransition(ScannerTransEntry(1 ,'e' ,1));
1009    s44.addTransition(ScannerTransEntry(1 ,'f' ,1));
1010    s44.addTransition(ScannerTransEntry(1 ,'g' ,1));
1011    s44.addTransition(ScannerTransEntry(1 ,'h' ,1));
1012    s44.addTransition(ScannerTransEntry(1 ,'i' ,1));
1013    s44.addTransition(ScannerTransEntry(1 ,'j' ,1));
1014    s44.addTransition(ScannerTransEntry(1 ,'k' ,1));
1015    s44.addTransition(ScannerTransEntry(1 ,'l' ,1));
1016    s44.addTransition(ScannerTransEntry(1 ,'m' ,1));
1017    s44.addTransition(ScannerTransEntry(1 ,'n' ,1));
1018    s44.addTransition(ScannerTransEntry(1 ,'o' ,1));
1019    s44.addTransition(ScannerTransEntry(1 ,'p' ,1));
1020    s44.addTransition(ScannerTransEntry(1 ,'q' ,1));
1021    s44.addTransition(ScannerTransEntry(1 ,'r' ,1));
1022    s44.addTransition(ScannerTransEntry(1 ,'s' ,1));
1023    s44.addTransition(ScannerTransEntry(1 ,'t' ,1));
1024    s44.addTransition(ScannerTransEntry(1 ,'u' ,1));
1025    s44.addTransition(ScannerTransEntry(1 ,'v' ,1));
1026    s44.addTransition(ScannerTransEntry(1 ,'w' ,1));
1027    s44.addTransition(ScannerTransEntry(1 ,'x' ,1));
1028    s44.addTransition(ScannerTransEntry(1 ,'y' ,1));
1029    s44.addTransition(ScannerTransEntry(1 ,'z' ,1));
1030    s44.addTransition(ScannerTransEntry(1 ,'`' ,3));
1031    s44.addTransition(ScannerTransEntry(2 ,'`' ,0));
1032    _scannerList.Insert(s44);
1033 
1034    Scanner s45(IDENTIFIER);
1035    s45.addState(ScannerStateEntry(0 ,START));
1036    s45.addState(ScannerStateEntry(1 ,FINAL));
1037    s45.addTransition(ScannerTransEntry(0 ,'@' ,1));
1038    s45.addTransition(ScannerTransEntry(0 ,'A' ,1));
1039    s45.addTransition(ScannerTransEntry(0 ,'B' ,1));
1040    s45.addTransition(ScannerTransEntry(0 ,'C' ,1));
1041    s45.addTransition(ScannerTransEntry(0 ,'D' ,1));
1042    s45.addTransition(ScannerTransEntry(0 ,'E' ,1));
1043    s45.addTransition(ScannerTransEntry(0 ,'F' ,1));
1044    s45.addTransition(ScannerTransEntry(0 ,'G' ,1));
1045    s45.addTransition(ScannerTransEntry(0 ,'H' ,1));
1046    s45.addTransition(ScannerTransEntry(0 ,'I' ,1));
1047    s45.addTransition(ScannerTransEntry(0 ,'J' ,1));
1048    s45.addTransition(ScannerTransEntry(0 ,'K' ,1));
1049    s45.addTransition(ScannerTransEntry(0 ,'L' ,1));
1050    s45.addTransition(ScannerTransEntry(0 ,'M' ,1));
1051    s45.addTransition(ScannerTransEntry(0 ,'N' ,1));
1052    s45.addTransition(ScannerTransEntry(0 ,'O' ,1));
1053    s45.addTransition(ScannerTransEntry(0 ,'P' ,1));
1054    s45.addTransition(ScannerTransEntry(0 ,'Q' ,1));
1055    s45.addTransition(ScannerTransEntry(0 ,'R' ,1));
1056    s45.addTransition(ScannerTransEntry(0 ,'S' ,1));
1057    s45.addTransition(ScannerTransEntry(0 ,'T' ,1));
1058    s45.addTransition(ScannerTransEntry(0 ,'U' ,1));
1059    s45.addTransition(ScannerTransEntry(0 ,'V' ,1));
1060    s45.addTransition(ScannerTransEntry(0 ,'W' ,1));
1061    s45.addTransition(ScannerTransEntry(0 ,'X' ,1));
1062    s45.addTransition(ScannerTransEntry(0 ,'Y' ,1));
1063    s45.addTransition(ScannerTransEntry(0 ,'Z' ,1));
1064    s45.addTransition(ScannerTransEntry(0 ,'a' ,1));
1065    s45.addTransition(ScannerTransEntry(0 ,'b' ,1));
1066    s45.addTransition(ScannerTransEntry(0 ,'c' ,1));
1067    s45.addTransition(ScannerTransEntry(0 ,'d' ,1));
1068    s45.addTransition(ScannerTransEntry(0 ,'e' ,1));
1069    s45.addTransition(ScannerTransEntry(0 ,'f' ,1));
1070    s45.addTransition(ScannerTransEntry(0 ,'g' ,1));
1071    s45.addTransition(ScannerTransEntry(0 ,'h' ,1));
1072    s45.addTransition(ScannerTransEntry(0 ,'i' ,1));
1073    s45.addTransition(ScannerTransEntry(0 ,'j' ,1));
1074    s45.addTransition(ScannerTransEntry(0 ,'k' ,1));
1075    s45.addTransition(ScannerTransEntry(0 ,'l' ,1));
1076    s45.addTransition(ScannerTransEntry(0 ,'m' ,1));
1077    s45.addTransition(ScannerTransEntry(0 ,'n' ,1));
1078    s45.addTransition(ScannerTransEntry(0 ,'o' ,1));
1079    s45.addTransition(ScannerTransEntry(0 ,'p' ,1));
1080    s45.addTransition(ScannerTransEntry(0 ,'q' ,1));
1081    s45.addTransition(ScannerTransEntry(0 ,'r' ,1));
1082    s45.addTransition(ScannerTransEntry(0 ,'s' ,1));
1083    s45.addTransition(ScannerTransEntry(0 ,'t' ,1));
1084    s45.addTransition(ScannerTransEntry(0 ,'u' ,1));
1085    s45.addTransition(ScannerTransEntry(0 ,'v' ,1));
1086    s45.addTransition(ScannerTransEntry(0 ,'w' ,1));
1087    s45.addTransition(ScannerTransEntry(0 ,'x' ,1));
1088    s45.addTransition(ScannerTransEntry(0 ,'y' ,1));
1089    s45.addTransition(ScannerTransEntry(0 ,'z' ,1));
1090    s45.addTransition(ScannerTransEntry(1 ,'0' ,1));
1091    s45.addTransition(ScannerTransEntry(1 ,'1' ,1));
1092    s45.addTransition(ScannerTransEntry(1 ,'2' ,1));
1093    s45.addTransition(ScannerTransEntry(1 ,'3' ,1));
1094    s45.addTransition(ScannerTransEntry(1 ,'4' ,1));
1095    s45.addTransition(ScannerTransEntry(1 ,'5' ,1));
1096    s45.addTransition(ScannerTransEntry(1 ,'6' ,1));
1097    s45.addTransition(ScannerTransEntry(1 ,'7' ,1));
1098    s45.addTransition(ScannerTransEntry(1 ,'8' ,1));
1099    s45.addTransition(ScannerTransEntry(1 ,'9' ,1));
1100    s45.addTransition(ScannerTransEntry(1 ,'@' ,1));
1101    s45.addTransition(ScannerTransEntry(1 ,'A' ,1));
1102    s45.addTransition(ScannerTransEntry(1 ,'B' ,1));
1103    s45.addTransition(ScannerTransEntry(1 ,'C' ,1));
1104    s45.addTransition(ScannerTransEntry(1 ,'D' ,1));
1105    s45.addTransition(ScannerTransEntry(1 ,'E' ,1));
1106    s45.addTransition(ScannerTransEntry(1 ,'F' ,1));
1107    s45.addTransition(ScannerTransEntry(1 ,'G' ,1));
1108    s45.addTransition(ScannerTransEntry(1 ,'H' ,1));
1109    s45.addTransition(ScannerTransEntry(1 ,'I' ,1));
1110    s45.addTransition(ScannerTransEntry(1 ,'J' ,1));
1111    s45.addTransition(ScannerTransEntry(1 ,'K' ,1));
1112    s45.addTransition(ScannerTransEntry(1 ,'L' ,1));
1113    s45.addTransition(ScannerTransEntry(1 ,'M' ,1));
1114    s45.addTransition(ScannerTransEntry(1 ,'N' ,1));
1115    s45.addTransition(ScannerTransEntry(1 ,'O' ,1));
1116    s45.addTransition(ScannerTransEntry(1 ,'P' ,1));
1117    s45.addTransition(ScannerTransEntry(1 ,'Q' ,1));
1118    s45.addTransition(ScannerTransEntry(1 ,'R' ,1));
1119    s45.addTransition(ScannerTransEntry(1 ,'S' ,1));
1120    s45.addTransition(ScannerTransEntry(1 ,'T' ,1));
1121    s45.addTransition(ScannerTransEntry(1 ,'U' ,1));
1122    s45.addTransition(ScannerTransEntry(1 ,'V' ,1));
1123    s45.addTransition(ScannerTransEntry(1 ,'W' ,1));
1124    s45.addTransition(ScannerTransEntry(1 ,'X' ,1));
1125    s45.addTransition(ScannerTransEntry(1 ,'Y' ,1));
1126    s45.addTransition(ScannerTransEntry(1 ,'Z' ,1));
1127    s45.addTransition(ScannerTransEntry(1 ,'_' ,1));
1128    s45.addTransition(ScannerTransEntry(1 ,'a' ,1));
1129    s45.addTransition(ScannerTransEntry(1 ,'b' ,1));
1130    s45.addTransition(ScannerTransEntry(1 ,'c' ,1));
1131    s45.addTransition(ScannerTransEntry(1 ,'d' ,1));
1132    s45.addTransition(ScannerTransEntry(1 ,'e' ,1));
1133    s45.addTransition(ScannerTransEntry(1 ,'f' ,1));
1134    s45.addTransition(ScannerTransEntry(1 ,'g' ,1));
1135    s45.addTransition(ScannerTransEntry(1 ,'h' ,1));
1136    s45.addTransition(ScannerTransEntry(1 ,'i' ,1));
1137    s45.addTransition(ScannerTransEntry(1 ,'j' ,1));
1138    s45.addTransition(ScannerTransEntry(1 ,'k' ,1));
1139    s45.addTransition(ScannerTransEntry(1 ,'l' ,1));
1140    s45.addTransition(ScannerTransEntry(1 ,'m' ,1));
1141    s45.addTransition(ScannerTransEntry(1 ,'n' ,1));
1142    s45.addTransition(ScannerTransEntry(1 ,'o' ,1));
1143    s45.addTransition(ScannerTransEntry(1 ,'p' ,1));
1144    s45.addTransition(ScannerTransEntry(1 ,'q' ,1));
1145    s45.addTransition(ScannerTransEntry(1 ,'r' ,1));
1146    s45.addTransition(ScannerTransEntry(1 ,'s' ,1));
1147    s45.addTransition(ScannerTransEntry(1 ,'t' ,1));
1148    s45.addTransition(ScannerTransEntry(1 ,'u' ,1));
1149    s45.addTransition(ScannerTransEntry(1 ,'v' ,1));
1150    s45.addTransition(ScannerTransEntry(1 ,'w' ,1));
1151    s45.addTransition(ScannerTransEntry(1 ,'x' ,1));
1152    s45.addTransition(ScannerTransEntry(1 ,'y' ,1));
1153    s45.addTransition(ScannerTransEntry(1 ,'z' ,1));
1154    _scannerList.Insert(s45);
1155 
1156 }
loadParser0()1157 void OracleParser::loadParser0()
1158 {
1159    _actionMap[107][UNSIGNED] = ActionEntry(REDUCE, 49);
1160    _actionMap[107][NULLTOKEN] = ActionEntry(REDUCE, 49);
1161    _actionMap[107][NOT] = ActionEntry(REDUCE, 49);
1162    _actionMap[107][DEFAULT] = ActionEntry(REDUCE, 49);
1163    _actionMap[107][RB] = ActionEntry(REDUCE, 49);
1164    _actionMap[107][KSEP] = ActionEntry(REDUCE, 49);
1165    _actionMap[103][KSEP] = ActionEntry(REDUCE, 23);
1166    _actionMap[103][RB] = ActionEntry(REDUCE, 23);
1167    _actionMap[104][KSEP] = ActionEntry(REDUCE, 21);
1168    _actionMap[104][RB] = ActionEntry(REDUCE, 21);
1169    _actionMap[105][RB] = ActionEntry(SHIFT, 107);
1170    _actionMap[106][KSEP] = ActionEntry(REDUCE, 42);
1171    _actionMap[106][RB] = ActionEntry(REDUCE, 42);
1172    _actionMap[93][QIDENTIFIER] = ActionEntry(SHIFT, 103);
1173    _actionMap[94][KSEP] = ActionEntry(REDUCE, 22);
1174    _actionMap[94][RB] = ActionEntry(REDUCE, 22);
1175    _actionMap[95][KSEP] = ActionEntry(REDUCE, 20);
1176    _actionMap[95][RB] = ActionEntry(REDUCE, 20);
1177    _actionMap[96][RB] = ActionEntry(SHIFT, 104);
1178    _actionMap[96][KSEP] = ActionEntry(SHIFT, 93);
1179    _actionMap[97][KSEP] = ActionEntry(REDUCE, 17);
1180    _actionMap[97][RB] = ActionEntry(REDUCE, 17);
1181    _actionMap[98][INTVAL] = ActionEntry(SHIFT, 105);
1182    _actionMap[99][INTVAL] = ActionEntry(SHIFT, 36);
1183    _actionMap[99][MINUS] = ActionEntry(SHIFT, 35);
1184    _actionMap[99][STRINGVAL] = ActionEntry(SHIFT, 33);
1185    _actionMap[99][NULLTOKEN] = ActionEntry(SHIFT, 34);
1186    _jumpMap[99][Constant] = 106;
1187    _actionMap[100][NULLTOKEN] = ActionEntry(REDUCE, 41);
1188    _actionMap[100][NOT] = ActionEntry(REDUCE, 41);
1189    _actionMap[100][DEFAULT] = ActionEntry(REDUCE, 41);
1190    _actionMap[100][RB] = ActionEntry(REDUCE, 41);
1191    _actionMap[100][KSEP] = ActionEntry(REDUCE, 41);
1192    _actionMap[101][UNSIGNED] = ActionEntry(REDUCE, 48);
1193    _actionMap[101][NULLTOKEN] = ActionEntry(REDUCE, 48);
1194    _actionMap[101][NOT] = ActionEntry(REDUCE, 48);
1195    _actionMap[101][DEFAULT] = ActionEntry(REDUCE, 48);
1196    _actionMap[101][RB] = ActionEntry(REDUCE, 48);
1197    _actionMap[101][KSEP] = ActionEntry(REDUCE, 48);
1198    _actionMap[102][NULLTOKEN] = ActionEntry(REDUCE, 35);
1199    _actionMap[102][NOT] = ActionEntry(REDUCE, 35);
1200    _actionMap[102][DEFAULT] = ActionEntry(REDUCE, 35);
1201    _actionMap[102][RB] = ActionEntry(REDUCE, 35);
1202    _actionMap[102][KSEP] = ActionEntry(REDUCE, 35);
1203    _actionMap[77][RB] = ActionEntry(SHIFT, 94);
1204    _actionMap[77][KSEP] = ActionEntry(SHIFT, 93);
1205    _actionMap[78][KSEP] = ActionEntry(REDUCE, 24);
1206    _actionMap[78][RB] = ActionEntry(REDUCE, 24);
1207    _actionMap[79][RB] = ActionEntry(SHIFT, 95);
1208    _actionMap[79][KSEP] = ActionEntry(SHIFT, 93);
1209 }
loadParser1()1210 void OracleParser::loadParser1()
1211 {
1212    _actionMap[80][QIDENTIFIER] = ActionEntry(SHIFT, 78);
1213    _jumpMap[80][KeyList] = 96;
1214    _actionMap[81][KSEP] = ActionEntry(REDUCE, 12);
1215    _actionMap[81][RB] = ActionEntry(REDUCE, 12);
1216    _actionMap[82][KSEP] = ActionEntry(REDUCE, 18);
1217    _actionMap[82][RB] = ActionEntry(REDUCE, 18);
1218    _actionMap[83][INTVAL] = ActionEntry(SHIFT, 36);
1219    _actionMap[83][MINUS] = ActionEntry(SHIFT, 35);
1220    _actionMap[83][STRINGVAL] = ActionEntry(SHIFT, 33);
1221    _actionMap[83][NULLTOKEN] = ActionEntry(SHIFT, 34);
1222    _jumpMap[83][Constant] = 97;
1223    _actionMap[84][DEFAULT] = ActionEntry(REDUCE, 14);
1224    _actionMap[84][RB] = ActionEntry(REDUCE, 14);
1225    _actionMap[84][KSEP] = ActionEntry(REDUCE, 14);
1226    _actionMap[85][NULLTOKEN] = ActionEntry(REDUCE, 34);
1227    _actionMap[85][NOT] = ActionEntry(REDUCE, 34);
1228    _actionMap[85][DEFAULT] = ActionEntry(REDUCE, 34);
1229    _actionMap[85][RB] = ActionEntry(REDUCE, 34);
1230    _actionMap[85][KSEP] = ActionEntry(REDUCE, 34);
1231    _actionMap[86][NULLTOKEN] = ActionEntry(REDUCE, 50);
1232    _actionMap[86][NOT] = ActionEntry(REDUCE, 50);
1233    _actionMap[86][DEFAULT] = ActionEntry(REDUCE, 50);
1234    _actionMap[86][RB] = ActionEntry(REDUCE, 50);
1235    _actionMap[86][KSEP] = ActionEntry(REDUCE, 50);
1236    _actionMap[87][KSEP] = ActionEntry(SHIFT, 98);
1237    _actionMap[88][RB] = ActionEntry(SHIFT, 100);
1238    _actionMap[88][KSEP] = ActionEntry(SHIFT, 99);
1239    _actionMap[89][KSEP] = ActionEntry(REDUCE, 43);
1240    _actionMap[89][RB] = ActionEntry(REDUCE, 43);
1241    _actionMap[90][NULLTOKEN] = ActionEntry(REDUCE, 33);
1242    _actionMap[90][NOT] = ActionEntry(REDUCE, 33);
1243    _actionMap[90][DEFAULT] = ActionEntry(REDUCE, 33);
1244    _actionMap[90][RB] = ActionEntry(REDUCE, 33);
1245    _actionMap[90][KSEP] = ActionEntry(REDUCE, 33);
1246    _actionMap[91][RB] = ActionEntry(SHIFT, 101);
1247    _actionMap[92][RB] = ActionEntry(SHIFT, 102);
1248    _actionMap[62][KSEP] = ActionEntry(REDUCE, 29);
1249    _actionMap[62][RB] = ActionEntry(REDUCE, 29);
1250    _actionMap[63][KSEP] = ActionEntry(REDUCE, 10);
1251    _actionMap[63][RB] = ActionEntry(REDUCE, 10);
1252    _actionMap[64][QIDENTIFIER] = ActionEntry(SHIFT, 78);
1253    _jumpMap[64][KeyList] = 77;
1254    _actionMap[65][QIDENTIFIER] = ActionEntry(SHIFT, 78);
1255    _jumpMap[65][KeyList] = 79;
1256    _actionMap[66][LB] = ActionEntry(SHIFT, 80);
1257    _actionMap[67][KSEP] = ActionEntry(REDUCE, 19);
1258    _actionMap[67][DEFAULT] = ActionEntry(SHIFT, 83);
1259    _actionMap[67][RB] = ActionEntry(REDUCE, 19);
1260    _jumpMap[67][DefaultDefOpt] = 82;
1261    _jumpMap[67][DefaultOpt] = 81;
1262 }
loadParser2()1263 void OracleParser::loadParser2()
1264 {
1265    _actionMap[68][DEFAULT] = ActionEntry(REDUCE, 15);
1266    _actionMap[68][RB] = ActionEntry(REDUCE, 15);
1267    _actionMap[68][KSEP] = ActionEntry(REDUCE, 15);
1268    _actionMap[69][NULLTOKEN] = ActionEntry(SHIFT, 84);
1269    _actionMap[70][DEFAULT] = ActionEntry(REDUCE, 13);
1270    _actionMap[70][RB] = ActionEntry(REDUCE, 13);
1271    _actionMap[70][KSEP] = ActionEntry(REDUCE, 13);
1272    _actionMap[71][UNSIGNED] = ActionEntry(SHIFT, 86);
1273    _actionMap[71][NULLTOKEN] = ActionEntry(REDUCE, 51);
1274    _actionMap[71][NOT] = ActionEntry(REDUCE, 51);
1275    _actionMap[71][DEFAULT] = ActionEntry(REDUCE, 51);
1276    _actionMap[71][RB] = ActionEntry(REDUCE, 51);
1277    _actionMap[71][KSEP] = ActionEntry(REDUCE, 51);
1278    _jumpMap[71][UnsignedOpt] = 85;
1279    _actionMap[72][INTVAL] = ActionEntry(SHIFT, 87);
1280    _actionMap[73][INTVAL] = ActionEntry(SHIFT, 36);
1281    _actionMap[73][MINUS] = ActionEntry(SHIFT, 35);
1282    _actionMap[73][STRINGVAL] = ActionEntry(SHIFT, 33);
1283    _actionMap[73][NULLTOKEN] = ActionEntry(SHIFT, 34);
1284    _jumpMap[73][Constant] = 89;
1285    _jumpMap[73][ConstList] = 88;
1286    _actionMap[74][UNSIGNED] = ActionEntry(SHIFT, 86);
1287    _actionMap[74][NULLTOKEN] = ActionEntry(REDUCE, 51);
1288    _actionMap[74][NOT] = ActionEntry(REDUCE, 51);
1289    _actionMap[74][DEFAULT] = ActionEntry(REDUCE, 51);
1290    _actionMap[74][RB] = ActionEntry(REDUCE, 51);
1291    _actionMap[74][KSEP] = ActionEntry(REDUCE, 51);
1292    _jumpMap[74][UnsignedOpt] = 90;
1293    _actionMap[75][INTVAL] = ActionEntry(SHIFT, 91);
1294    _actionMap[76][INTVAL] = ActionEntry(SHIFT, 92);
1295    _actionMap[43][SEMICOLON] = ActionEntry(REDUCE, 26);
1296    _actionMap[43][KSEP] = ActionEntry(REDUCE, 26);
1297    _actionMap[44][INTVAL] = ActionEntry(SHIFT, 36);
1298    _actionMap[44][MINUS] = ActionEntry(SHIFT, 35);
1299    _actionMap[44][STRINGVAL] = ActionEntry(SHIFT, 33);
1300    _actionMap[44][NULLTOKEN] = ActionEntry(SHIFT, 34);
1301    _jumpMap[44][Constant] = 62;
1302    _actionMap[45][SEMICOLON] = ActionEntry(REDUCE, 28);
1303    _actionMap[45][KSEP] = ActionEntry(REDUCE, 28);
1304    _actionMap[46][KSEP] = ActionEntry(REDUCE, 45);
1305    _actionMap[46][RB] = ActionEntry(REDUCE, 45);
1306    _actionMap[47][QIDENTIFIER] = ActionEntry(SHIFT, 42);
1307    _actionMap[47][PRIMARY] = ActionEntry(SHIFT, 40);
1308    _actionMap[47][UNIQUE] = ActionEntry(SHIFT, 41);
1309    _actionMap[47][KEY] = ActionEntry(SHIFT, 39);
1310    _jumpMap[47][ColumnDesc] = 63;
1311    _actionMap[48][SEMICOLON] = ActionEntry(REDUCE, 6);
1312    _actionMap[49][LB] = ActionEntry(SHIFT, 64);
1313    _actionMap[50][LB] = ActionEntry(SHIFT, 65);
1314    _actionMap[51][QIDENTIFIER] = ActionEntry(SHIFT, 66);
1315 }
loadParser3()1316 void OracleParser::loadParser3()
1317 {
1318    _actionMap[52][KSEP] = ActionEntry(REDUCE, 16);
1319    _actionMap[52][RB] = ActionEntry(REDUCE, 16);
1320    _actionMap[52][DEFAULT] = ActionEntry(REDUCE, 16);
1321    _actionMap[52][NULLTOKEN] = ActionEntry(SHIFT, 70);
1322    _actionMap[52][NOT] = ActionEntry(SHIFT, 69);
1323    _jumpMap[52][DefaultNullOpt] = 68;
1324    _jumpMap[52][NullOpt] = 67;
1325    _actionMap[53][NULLTOKEN] = ActionEntry(REDUCE, 37);
1326    _actionMap[53][NOT] = ActionEntry(REDUCE, 37);
1327    _actionMap[53][DEFAULT] = ActionEntry(REDUCE, 37);
1328    _actionMap[53][RB] = ActionEntry(REDUCE, 37);
1329    _actionMap[53][KSEP] = ActionEntry(REDUCE, 37);
1330    _actionMap[54][LB] = ActionEntry(SHIFT, 72);
1331    _jumpMap[54][DecimalDimOpt] = 71;
1332    _actionMap[55][LB] = ActionEntry(SHIFT, 73);
1333    _actionMap[56][LB] = ActionEntry(SHIFT, 75);
1334    _jumpMap[56][DimOpt] = 74;
1335    _actionMap[57][NULLTOKEN] = ActionEntry(REDUCE, 38);
1336    _actionMap[57][NOT] = ActionEntry(REDUCE, 38);
1337    _actionMap[57][DEFAULT] = ActionEntry(REDUCE, 38);
1338    _actionMap[57][RB] = ActionEntry(REDUCE, 38);
1339    _actionMap[57][KSEP] = ActionEntry(REDUCE, 38);
1340    _actionMap[58][NULLTOKEN] = ActionEntry(REDUCE, 39);
1341    _actionMap[58][NOT] = ActionEntry(REDUCE, 39);
1342    _actionMap[58][DEFAULT] = ActionEntry(REDUCE, 39);
1343    _actionMap[58][RB] = ActionEntry(REDUCE, 39);
1344    _actionMap[58][KSEP] = ActionEntry(REDUCE, 39);
1345    _actionMap[59][NULLTOKEN] = ActionEntry(REDUCE, 40);
1346    _actionMap[59][NOT] = ActionEntry(REDUCE, 40);
1347    _actionMap[59][DEFAULT] = ActionEntry(REDUCE, 40);
1348    _actionMap[59][RB] = ActionEntry(REDUCE, 40);
1349    _actionMap[59][KSEP] = ActionEntry(REDUCE, 40);
1350    _actionMap[60][NULLTOKEN] = ActionEntry(REDUCE, 36);
1351    _actionMap[60][NOT] = ActionEntry(REDUCE, 36);
1352    _actionMap[60][DEFAULT] = ActionEntry(REDUCE, 36);
1353    _actionMap[60][RB] = ActionEntry(REDUCE, 36);
1354    _actionMap[60][KSEP] = ActionEntry(REDUCE, 36);
1355    _actionMap[61][LB] = ActionEntry(SHIFT, 76);
1356    _actionMap[30][LB] = ActionEntry(SHIFT, 26);
1357    _jumpMap[30][InsertValueSpec] = 43;
1358    _actionMap[31][RB] = ActionEntry(SHIFT, 45);
1359    _actionMap[31][KSEP] = ActionEntry(SHIFT, 44);
1360    _actionMap[32][KSEP] = ActionEntry(REDUCE, 30);
1361    _actionMap[32][RB] = ActionEntry(REDUCE, 30);
1362    _actionMap[33][KSEP] = ActionEntry(REDUCE, 46);
1363    _actionMap[33][RB] = ActionEntry(REDUCE, 46);
1364    _actionMap[34][KSEP] = ActionEntry(REDUCE, 47);
1365    _actionMap[34][RB] = ActionEntry(REDUCE, 47);
1366    _actionMap[35][INTVAL] = ActionEntry(SHIFT, 46);
1367    _actionMap[36][KSEP] = ActionEntry(REDUCE, 44);
1368 }
loadParser4()1369 void OracleParser::loadParser4()
1370 {
1371    _actionMap[36][RB] = ActionEntry(REDUCE, 44);
1372    _actionMap[37][RB] = ActionEntry(SHIFT, 48);
1373    _actionMap[37][KSEP] = ActionEntry(SHIFT, 47);
1374    _actionMap[38][KSEP] = ActionEntry(REDUCE, 11);
1375    _actionMap[38][RB] = ActionEntry(REDUCE, 11);
1376    _actionMap[39][QIDENTIFIER] = ActionEntry(SHIFT, 49);
1377    _actionMap[40][KEY] = ActionEntry(SHIFT, 50);
1378    _actionMap[41][KEY] = ActionEntry(SHIFT, 51);
1379    _actionMap[42][INT] = ActionEntry(SHIFT, 56);
1380    _actionMap[42][DECIMAL] = ActionEntry(SHIFT, 54);
1381    _actionMap[42][VARCHAR] = ActionEntry(SHIFT, 61);
1382    _actionMap[42][TIMESTAMP] = ActionEntry(SHIFT, 60);
1383    _actionMap[42][DATETIME] = ActionEntry(SHIFT, 53);
1384    _actionMap[42][LONGBLOB] = ActionEntry(SHIFT, 57);
1385    _actionMap[42][MEDIUMTEXT] = ActionEntry(SHIFT, 58);
1386    _actionMap[42][TEXT] = ActionEntry(SHIFT, 59);
1387    _actionMap[42][ENUM] = ActionEntry(SHIFT, 55);
1388    _jumpMap[42][DataTypeProd] = 52;
1389    _actionMap[24][KSEP] = ActionEntry(SHIFT, 30);
1390    _actionMap[24][SEMICOLON] = ActionEntry(REDUCE, 25);
1391    _actionMap[25][SEMICOLON] = ActionEntry(REDUCE, 27);
1392    _actionMap[25][KSEP] = ActionEntry(REDUCE, 27);
1393    _actionMap[26][INTVAL] = ActionEntry(SHIFT, 36);
1394    _actionMap[26][MINUS] = ActionEntry(SHIFT, 35);
1395    _actionMap[26][STRINGVAL] = ActionEntry(SHIFT, 33);
1396    _actionMap[26][NULLTOKEN] = ActionEntry(SHIFT, 34);
1397    _jumpMap[26][Constant] = 32;
1398    _jumpMap[26][InsertValueList] = 31;
1399    _actionMap[27][QIDENTIFIER] = ActionEntry(SHIFT, 42);
1400    _actionMap[27][PRIMARY] = ActionEntry(SHIFT, 40);
1401    _actionMap[27][UNIQUE] = ActionEntry(SHIFT, 41);
1402    _actionMap[27][KEY] = ActionEntry(SHIFT, 39);
1403    _jumpMap[27][ColumnDesc] = 38;
1404    _jumpMap[27][ColumnList] = 37;
1405    _actionMap[28][QIDENTIFIER] = ActionEntry(REDUCE, 9);
1406    _actionMap[29][SEMICOLON] = ActionEntry(REDUCE, 4);
1407    _actionMap[19][SEMICOLON] = ActionEntry(REDUCE, 1);
1408    _actionMap[19][SET] = ActionEntry(REDUCE, 1);
1409    _actionMap[19][CREATE] = ActionEntry(REDUCE, 1);
1410    _actionMap[19][DROP] = ActionEntry(REDUCE, 1);
1411    _actionMap[19][INSERT] = ActionEntry(REDUCE, 1);
1412    _actionMap[19][ENDTOKEN] = ActionEntry(REDUCE, 1);
1413    _actionMap[20][LB] = ActionEntry(SHIFT, 26);
1414    _jumpMap[20][InsertValueSpec] = 25;
1415    _jumpMap[20][InsertValueSpecList] = 24;
1416    _actionMap[21][LB] = ActionEntry(SHIFT, 27);
1417    _actionMap[22][EXISTS] = ActionEntry(SHIFT, 28);
1418    _actionMap[23][IDENTIFIER] = ActionEntry(SHIFT, 29);
1419    _actionMap[10][SEMICOLON] = ActionEntry(SHIFT, 19);
1420    _actionMap[11][SEMICOLON] = ActionEntry(REDUCE, 2);
1421 }
loadParser5()1422 void OracleParser::loadParser5()
1423 {
1424    _actionMap[11][SET] = ActionEntry(REDUCE, 2);
1425    _actionMap[11][CREATE] = ActionEntry(REDUCE, 2);
1426    _actionMap[11][DROP] = ActionEntry(REDUCE, 2);
1427    _actionMap[11][INSERT] = ActionEntry(REDUCE, 2);
1428    _actionMap[11][ENDTOKEN] = ActionEntry(REDUCE, 2);
1429    _actionMap[12][SEMICOLON] = ActionEntry(REDUCE, 7);
1430    _actionMap[13][VALUES] = ActionEntry(REDUCE, 32);
1431    _actionMap[13][SEMICOLON] = ActionEntry(REDUCE, 32);
1432    _actionMap[13][LB] = ActionEntry(REDUCE, 32);
1433    _actionMap[14][VALUES] = ActionEntry(SHIFT, 20);
1434    _actionMap[15][QIDENTIFIER] = ActionEntry(SHIFT, 13);
1435    _jumpMap[15][Table] = 21;
1436    _actionMap[16][IF] = ActionEntry(SHIFT, 22);
1437    _actionMap[16][QIDENTIFIER] = ActionEntry(REDUCE, 8);
1438    _actionMap[17][QIDENTIFIER] = ActionEntry(REDUCE, 31);
1439    _actionMap[18][EQU] = ActionEntry(SHIFT, 23);
1440    _actionMap[1][ENDTOKEN] = ActionEntry(ACCEPT, 0);
1441    _actionMap[1][INSERT] = ActionEntry(SHIFT, 8);
1442    _actionMap[1][DROP] = ActionEntry(SHIFT, 7);
1443    _actionMap[1][SEMICOLON] = ActionEntry(REDUCE, 3);
1444    _actionMap[1][SET] = ActionEntry(SHIFT, 9);
1445    _actionMap[1][CREATE] = ActionEntry(SHIFT, 6);
1446    _jumpMap[1][InsertPrefix] = 5;
1447    _jumpMap[1][InsertStatement] = 4;
1448    _jumpMap[1][DropOpt] = 3;
1449    _jumpMap[1][Statement] = 10;
1450    _actionMap[2][SEMICOLON] = ActionEntry(SHIFT, 11);
1451    _actionMap[3][QIDENTIFIER] = ActionEntry(SHIFT, 13);
1452    _jumpMap[3][Table] = 12;
1453    _actionMap[4][SEMICOLON] = ActionEntry(REDUCE, 5);
1454    _actionMap[5][QIDENTIFIER] = ActionEntry(SHIFT, 13);
1455    _jumpMap[5][Table] = 14;
1456    _actionMap[6][TABLE] = ActionEntry(SHIFT, 15);
1457    _actionMap[7][TABLE] = ActionEntry(SHIFT, 16);
1458    _actionMap[8][INTO] = ActionEntry(SHIFT, 17);
1459    _actionMap[9][IDENTIFIER] = ActionEntry(SHIFT, 18);
1460    _actionMap[0][INSERT] = ActionEntry(SHIFT, 8);
1461    _actionMap[0][DROP] = ActionEntry(SHIFT, 7);
1462    _actionMap[0][SEMICOLON] = ActionEntry(REDUCE, 3);
1463    _actionMap[0][SET] = ActionEntry(SHIFT, 9);
1464    _actionMap[0][CREATE] = ActionEntry(SHIFT, 6);
1465    _jumpMap[0][InsertPrefix] = 5;
1466    _jumpMap[0][InsertStatement] = 4;
1467    _jumpMap[0][DropOpt] = 3;
1468    _jumpMap[0][Statement] = 2;
1469    _jumpMap[0][StatementList] = 1;
1470 }
loadParser6()1471 void OracleParser::loadParser6()
1472 {
1473    _prodInfo.Insert(ProdEntry(51, UnsignedOpt, 0));
1474    _prodInfo.Insert(ProdEntry(50, UnsignedOpt, 1));
1475    _prodInfo.Insert(ProdEntry(49, DecimalDimOpt, 5));
1476    _prodInfo.Insert(ProdEntry(48, DimOpt, 3));
1477    _prodInfo.Insert(ProdEntry(47, Constant, 1));
1478    _prodInfo.Insert(ProdEntry(46, Constant, 1));
1479    _prodInfo.Insert(ProdEntry(45, Constant, 2));
1480    _prodInfo.Insert(ProdEntry(44, Constant, 1));
1481    _prodInfo.Insert(ProdEntry(43, ConstList, 1));
1482    _prodInfo.Insert(ProdEntry(42, ConstList, 3));
1483    _prodInfo.Insert(ProdEntry(41, DataTypeProd, 4));
1484    _prodInfo.Insert(ProdEntry(40, DataTypeProd, 1));
1485    _prodInfo.Insert(ProdEntry(39, DataTypeProd, 1));
1486    _prodInfo.Insert(ProdEntry(38, DataTypeProd, 1));
1487    _prodInfo.Insert(ProdEntry(37, DataTypeProd, 1));
1488    _prodInfo.Insert(ProdEntry(36, DataTypeProd, 1));
1489    _prodInfo.Insert(ProdEntry(35, DataTypeProd, 4));
1490    _prodInfo.Insert(ProdEntry(34, DataTypeProd, 3));
1491    _prodInfo.Insert(ProdEntry(33, DataTypeProd, 3));
1492    _prodInfo.Insert(ProdEntry(32, Table, 1));
1493    _prodInfo.Insert(ProdEntry(31, InsertPrefix, 2));
1494    _prodInfo.Insert(ProdEntry(30, InsertValueList, 1));
1495    _prodInfo.Insert(ProdEntry(29, InsertValueList, 3));
1496    _prodInfo.Insert(ProdEntry(28, InsertValueSpec, 3));
1497    _prodInfo.Insert(ProdEntry(27, InsertValueSpecList, 1));
1498    _prodInfo.Insert(ProdEntry(26, InsertValueSpecList, 3));
1499    _prodInfo.Insert(ProdEntry(25, InsertStatement, 4));
1500    _prodInfo.Insert(ProdEntry(24, KeyList, 1));
1501    _prodInfo.Insert(ProdEntry(23, KeyList, 3));
1502    _prodInfo.Insert(ProdEntry(22, ColumnDesc, 5));
1503    _prodInfo.Insert(ProdEntry(21, ColumnDesc, 6));
1504    _prodInfo.Insert(ProdEntry(20, ColumnDesc, 5));
1505    _prodInfo.Insert(ProdEntry(19, DefaultDefOpt, 0));
1506    _prodInfo.Insert(ProdEntry(18, DefaultOpt, 1));
1507    _prodInfo.Insert(ProdEntry(17, DefaultOpt, 2));
1508    _prodInfo.Insert(ProdEntry(16, DefaultNullOpt, 0));
1509    _prodInfo.Insert(ProdEntry(15, NullOpt, 1));
1510    _prodInfo.Insert(ProdEntry(14, NullOpt, 2));
1511    _prodInfo.Insert(ProdEntry(13, NullOpt, 1));
1512    _prodInfo.Insert(ProdEntry(12, ColumnDesc, 4));
1513    _prodInfo.Insert(ProdEntry(11, ColumnList, 1));
1514    _prodInfo.Insert(ProdEntry(10, ColumnList, 3));
1515    _prodInfo.Insert(ProdEntry(9, DropOpt, 4));
1516    _prodInfo.Insert(ProdEntry(8, DropOpt, 2));
1517    _prodInfo.Insert(ProdEntry(7, Statement, 2));
1518    _prodInfo.Insert(ProdEntry(6, Statement, 6));
1519    _prodInfo.Insert(ProdEntry(5, Statement, 1));
1520    _prodInfo.Insert(ProdEntry(4, Statement, 4));
1521    _prodInfo.Insert(ProdEntry(3, Statement, 0));
1522    _prodInfo.Insert(ProdEntry(2, StatementList, 2));
1523    _prodInfo.Insert(ProdEntry(1, StatementList, 3));
1524    _prodInfo.Insert(ProdEntry(0, Start, 1));
1525 }
1526 
OracleParser()1527 OracleParser::OracleParser()
1528 {
1529    loadScanner();
1530    for ( int i=0; i < 108; i++)
1531    {
1532       int j;
1533       for ( j = 0; j < 48; j++)
1534          _actionMap[i][j] = ActionEntry();
1535       for ( j = 0; j < 24; j++)
1536          _jumpMap[i][j] = -1;
1537    }
1538    loadParser0();
1539    loadParser1();
1540    loadParser2();
1541    loadParser3();
1542    loadParser4();
1543    loadParser5();
1544    loadParser6();
1545    _isReserved = false;
1546 }
1547 
~OracleParser()1548 OracleParser::~OracleParser()
1549 {
1550 }
1551 
parse()1552 void OracleParser::parse()
1553 {
1554    StackT<StackEntry> s;
1555    StackEntry se(NONE, 0, 0);
1556    s.Push(se);
1557    _isReserved = false;
1558    if ( shiftToken() == false )
1559    {
1560       Chain msg = "Parse error at token <" + Chain(_tokenVal) + ">.";
1561       throw Exception(EXLOC, msg);
1562    }
1563    while ( true )
1564    {
1565       Action a;
1566       int num;
1567       if ( getAction(s.getTop()->getState(), _token, a, num) )
1568       {
1569          switch (a)
1570          {
1571             case SHIFT:
1572             {
1573                StackEntry se(TOKEN, _token, num, _tokenVal);
1574                s.Push(se);
1575                if ( shiftToken() == false )
1576                {
1577                   Chain msg = "Parse error at token <" + Chain(_tokenVal) + ">.";
1578                   throw Exception(EXLOC, msg);
1579                }
1580                break;
1581             }
1582             case REDUCE:
1583             {
1584                _tokenList.Empty();
1585                ProdEntry* pPE = _prodInfo.Find(num);
1586                for (int i=0; i<pPE->getNumSymbol();i++)
1587                {
1588                   StackEntry se;
1589                   s.Pop(se);
1590                   if (se.getSymbol() == TOKEN)
1591                      _tokenList.Insert(se.getTval());
1592                }
1593                int fstate;
1594                if (getJump(s.getTop()->getState(), pPE->getProd(), fstate))
1595                {
1596                   StackEntry se(PROD, pPE->getId(), fstate, _tokenVal);
1597                   s.Push(se);
1598                }
1599                else
1600                {
1601                   Chain msg = "Cannot reduce after token <" + Chain(_tokenVal) + ">.";
1602                   throw Exception(EXLOC, msg);
1603                }
1604                switch (num)
1605                {
1606                   case 50:
1607                      storeUnsignedType();
1608                      break;
1609                   case 49:
1610                      storeDecimalDim();
1611                      break;
1612                   case 48:
1613                      storeDim();
1614                      break;
1615                   case 47:
1616                      storeNullValue();
1617                      break;
1618                   case 46:
1619                      storeVarcharValue();
1620                      break;
1621                   case 45:
1622                      storeNegIntValue();
1623                      break;
1624                   case 44:
1625                      storeIntValue();
1626                      break;
1627                   case 41:
1628                      storeEnumType();
1629                      break;
1630                   case 40:
1631                      storeMediumTextType();
1632                      break;
1633                   case 39:
1634                      storeMediumTextType();
1635                      break;
1636                   case 37:
1637                      storeDatetimeType();
1638                      break;
1639                   case 36:
1640                      storeTimestampType();
1641                      break;
1642                   case 35:
1643                      storeVarcharType();
1644                      break;
1645                   case 34:
1646                      storeDecimalType();
1647                      break;
1648                   case 33:
1649                      storeIntType();
1650                      break;
1651                   case 32:
1652                      storeTable();
1653                      break;
1654                   case 31:
1655                      insertPreAction();
1656                      break;
1657                   case 30:
1658                      insertConstValue();
1659                      break;
1660                   case 29:
1661                      insertConstValue();
1662                      break;
1663                   case 28:
1664                      execInsert();
1665                      break;
1666                   case 25:
1667                      insertPostAction();
1668                      break;
1669                   case 24:
1670                      storeKeyColumn();
1671                      break;
1672                   case 23:
1673                      storeKeyColumn();
1674                      break;
1675                   case 22:
1676                      storeKey();
1677                      break;
1678                   case 21:
1679                      storeUniqueKey();
1680                      break;
1681                   case 20:
1682                      storePrimaryKey();
1683                      break;
1684                   case 18:
1685                      storeDefaultNullOpt();
1686                      break;
1687                   case 17:
1688                      storeDefaultOpt();
1689                      break;
1690                   case 15:
1691                      storeNullOpt();
1692                      break;
1693                   case 14:
1694                      storeNotNullOpt();
1695                      break;
1696                   case 13:
1697                      storeNullOpt();
1698                      break;
1699                   case 12:
1700                      storeAttrColumn();
1701                      break;
1702                   case 9:
1703                      dropOpt2();
1704                      break;
1705                   case 8:
1706                      dropOpt1();
1707                      break;
1708                   case 7:
1709                      execDrop();
1710                      break;
1711                   case 6:
1712                      execCreate();
1713                      break;
1714                }
1715                break;
1716             }
1717             case ACCEPT:
1718             {
1719                postAction();
1720                return;
1721             }
1722             default:
1723                break;
1724          }
1725       }
1726       else
1727       {
1728          Chain msg = "Parse error at token <" + Chain(_tokenVal) + ">.";
1729          throw Exception(EXLOC, msg);
1730       }
1731    }
1732 }
1733 
1734 
getAction(int state,OracleParser::Token token,OracleParser::Action & a,int & num)1735 bool OracleParser::getAction(int state, OracleParser::Token token, OracleParser::Action& a, int& num)
1736 {
1737     if (_actionMap[state][token].getAction() != NULLACTION )
1738     {
1739 	a = _actionMap[state][token].getAction();
1740 	num = _actionMap[state][token].getNum();
1741 	return true;
1742     }
1743     else
1744     {
1745 	return false;
1746     }
1747 }
1748 
getJump(int state,Production prod,int & fstate)1749 bool OracleParser::getJump(int state, Production prod, int& fstate)
1750 {
1751     if ( _jumpMap[state][prod] > 0 )
1752     {
1753        fstate = _jumpMap[state][prod];
1754 	    return true;
1755     }
1756     else
1757     {
1758 	    return false;
1759     }
1760 }
1761 
isSepSign(char c)1762 bool OracleParser::isSepSign(char c)
1763 {
1764    if (c == ';') return true;
1765    if (c == ',') return true;
1766    if (c == '=') return true;
1767    if (c == '<') return true;
1768    if (c == '>') return true;
1769    if (c == ')') return true;
1770    if (c == '(') return true;
1771    if (c == '[') return true;
1772    if (c == ']') return true;
1773    if (c == '+') return true;
1774    if (c == '-') return true;
1775    if (c == '|') return true;
1776    return false;
1777 }
isSepIgnore(char c)1778 bool OracleParser::isSepIgnore(char c)
1779 {
1780    if (c == '\t') return true;
1781    if (c == ' ') return true;
1782    if (c == '\n') return true;
1783    if (c == '\r') return true;
1784    return false;
1785 }
shiftToken()1786 bool OracleParser::shiftToken()
1787 {
1788    unsigned long i=0;
1789    char c;
1790    while ( isSepIgnore(c = nextChar()) && ! _isReserved );
1791    if ( _isReserved )
1792    {
1793       _token = _reservedToken;
1794       _isReserved = false;
1795       return true;
1796    }
1797    if (c == 0)
1798    {
1799       _token = ENDTOKEN;
1800       return true;
1801    }
1802    if (isSepSign(c))
1803    {
1804       _tokenVal[i]=c;
1805        i++;
1806    }
1807    else
1808    {
1809       while (c && ! isSepIgnore(c) && ! ( isSepSign(c) && i>0 ) )
1810       {
1811          _tokenVal[i]=c;
1812          i++;
1813          c = nextChar();
1814       }
1815       if (isSepSign(c)) backChar();
1816    }
1817    _tokenVal[i]=0;
1818    Scanner* pS = _scannerList.First();
1819    while (pS)
1820    {
1821       if (pS->checkPattern(_tokenVal))
1822       {
1823          _token = pS->getToken();
1824          return true;
1825       }
1826       pS=_scannerList.Next();
1827    }
1828    return false;
1829 }
setReserved(Token t)1830 void OracleParser::setReserved(Token t)
1831 {
1832    _reservedToken = t;
1833    _isReserved = true;
1834 }
1835