KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > quadcap > sql > SQLParser


1 // $ANTLR 2.7.2a2 (20020112-1): "sql.g" -> "SQLParser.java"$
2

3 package com.quadcap.sql;
4
5 import antlr.TokenBuffer;
6 import antlr.TokenStreamException;
7 import antlr.TokenStreamIOException;
8 import antlr.ANTLRException;
9 import antlr.LLkParser;
10 import antlr.Token;
11 import antlr.TokenStream;
12 import antlr.RecognitionException;
13 import antlr.NoViableAltException;
14 import antlr.MismatchedTokenException;
15 import antlr.SemanticException;
16 import antlr.ParserSharedInputState;
17 import antlr.collections.impl.BitSet;
18
19 import java.io.*;
20 import java.sql.ResultSet JavaDoc;
21 import java.sql.SQLException JavaDoc;
22 import java.sql.Types JavaDoc;
23 import java.util.Vector JavaDoc;
24 import com.quadcap.sql.types.Type;
25 import com.quadcap.sql.types.TypeReal;
26 import com.quadcap.sql.types.*;
27
28 public class SQLParser extends antlr.LLkParser
29        implements SQLTokenTypes
30  {
31
32     Vector JavaDoc parameters = new Vector JavaDoc();
33     Session session = null;
34     Connection qConn = null;
35     void addParameter(ParameterExpression e) {
36     parameters.addElement(e);
37     }
38     public Vector JavaDoc getParameters() {
39     return parameters;
40     }
41     public SQLParser(Session session, String JavaDoc cmd, boolean esc) {
42     super((esc
43            ? (TokenStream)(new JdbcEscapeTokenStream(
44                  new SQLLexer(new StringReader(cmd))))
45            : (TokenStream)(new SQLLexer(new StringReader(cmd)))), 2);
46     this.session = session;
47         this.qConn = session.getConnection();
48     tokenNames = _tokenNames;
49     }
50
51     String JavaDoc fixIdTerm(String JavaDoc s) {
52         if (s.charAt(0) == '"') {
53         boolean bad = false;
54         for (int i = 1; !bad && i < s.length() - 1; i++) {
55             char c = s.charAt(i);
56         if (Character.isUpperCase(c) || (i > 1 && Character.isDigit(c) || c == '_')) {
57         } else {
58             bad = true;
59         }
60             }
61         if (bad) {
62             return s;
63         } else {
64             return s.substring(1, s.length()-1).toUpperCase();
65             }
66     } else {
67         return s.toUpperCase();
68         }
69     }
70
71 protected SQLParser(TokenBuffer tokenBuf, int k) {
72   super(tokenBuf,k);
73   tokenNames = _tokenNames;
74 }
75
76 public SQLParser(TokenBuffer tokenBuf) {
77   this(tokenBuf,2);
78 }
79
80 protected SQLParser(TokenStream lexer, int k) {
81   super(lexer,k);
82   tokenNames = _tokenNames;
83 }
84
85 public SQLParser(TokenStream lexer) {
86   this(lexer,2);
87 }
88
89 public SQLParser(ParserSharedInputState state) {
90   super(state,2);
91   tokenNames = _tokenNames;
92 }
93
94     public final Stmt statement() throws RecognitionException, TokenStreamException {
95         Stmt s;
96         
97         
98             s = null;
99             parameters.clear();
100         
101         
102         switch ( LA(1)) {
103         case LITERAL_alter:
104         {
105             s=alterTableStmt();
106             break;
107         }
108         case LITERAL_delete:
109         {
110             s=deleteStmt();
111             break;
112         }
113         case LITERAL_grant:
114         {
115             s=grantStmt();
116             break;
117         }
118         case LITERAL_insert:
119         {
120             s=insertStmt();
121             break;
122         }
123         case LITERAL_table:
124         case LPAREN:
125         case LITERAL_select:
126         case LITERAL_values:
127         case ID:
128         {
129             s=selectStmt();
130             break;
131         }
132         case LITERAL_update:
133         {
134             s=updateStmt();
135             break;
136         }
137         case LITERAL_commit:
138         {
139             s=commitStmt();
140             break;
141         }
142         case LITERAL_rollback:
143         {
144             s=rollbackStmt();
145             break;
146         }
147         default:
148             boolean synPredMatched4 = false;
149             if (((LA(1)==LITERAL_create) && (LA(2)==LITERAL_unique||LA(2)==LITERAL_index))) {
150                 int _m4 = mark();
151                 synPredMatched4 = true;
152                 inputState.guessing++;
153                 try {
154                     {
155                     match(LITERAL_create);
156                     {
157                     switch ( LA(1)) {
158                     case LITERAL_unique:
159                     {
160                         match(LITERAL_unique);
161                         break;
162                     }
163                     case LITERAL_index:
164                     {
165                         break;
166                     }
167                     default:
168                     {
169                         throw new NoViableAltException(LT(1), getFilename());
170                     }
171                     }
172                     }
173                     match(LITERAL_index);
174                     }
175                 }
176                 catch (RecognitionException pe) {
177                     synPredMatched4 = false;
178                 }
179                 rewind(_m4);
180                 inputState.guessing--;
181             }
182             if ( synPredMatched4 ) {
183                 s=createIndexStmt();
184             }
185             else {
186                 boolean synPredMatched6 = false;
187                 if (((LA(1)==LITERAL_create) && (LA(2)==LITERAL_schema))) {
188                     int _m6 = mark();
189                     synPredMatched6 = true;
190                     inputState.guessing++;
191                     try {
192                         {
193                         match(LITERAL_create);
194                         match(LITERAL_schema);
195                         }
196                     }
197                     catch (RecognitionException pe) {
198                         synPredMatched6 = false;
199                     }
200                     rewind(_m6);
201                     inputState.guessing--;
202                 }
203                 if ( synPredMatched6 ) {
204                     s=createSchemaStmt();
205                 }
206                 else {
207                     boolean synPredMatched9 = false;
208                     if (((LA(1)==LITERAL_create) && (LA(2)==LITERAL_temporary||LA(2)==LITERAL_table||LA(2)==LITERAL_global||LA(2)==LITERAL_local))) {
209                         int _m9 = mark();
210                         synPredMatched9 = true;
211                         inputState.guessing++;
212                         try {
213                             {
214                             match(LITERAL_create);
215                             {
216                             switch ( LA(1)) {
217                             case LITERAL_temporary:
218                             {
219                                 match(LITERAL_temporary);
220                                 break;
221                             }
222                             case LITERAL_table:
223                             {
224                                 break;
225                             }
226                             default:
227                             {
228                                 throw new NoViableAltException(LT(1), getFilename());
229                             }
230                             }
231                             }
232                             match(LITERAL_table);
233                             }
234                         }
235                         catch (RecognitionException pe) {
236                             synPredMatched9 = false;
237                         }
238                         rewind(_m9);
239                         inputState.guessing--;
240                     }
241                     if ( synPredMatched9 ) {
242                         s=createTableStmt();
243                     }
244                     else {
245                         boolean synPredMatched11 = false;
246                         if (((LA(1)==LITERAL_create) && (LA(2)==LITERAL_view))) {
247                             int _m11 = mark();
248                             synPredMatched11 = true;
249                             inputState.guessing++;
250                             try {
251                                 {
252                                 match(LITERAL_create);
253                                 match(LITERAL_view);
254                                 }
255                             }
256                             catch (RecognitionException pe) {
257                                 synPredMatched11 = false;
258                             }
259                             rewind(_m11);
260                             inputState.guessing--;
261                         }
262                         if ( synPredMatched11 ) {
263                             s=createViewStmt();
264                         }
265                         else {
266                             boolean synPredMatched14 = false;
267                             if (((LA(1)==LITERAL_drop) && (LA(2)==LITERAL_table||LA(2)==LITERAL_view))) {
268                                 int _m14 = mark();
269                                 synPredMatched14 = true;
270                                 inputState.guessing++;
271                                 try {
272                                     {
273                                     match(LITERAL_drop);
274                                     {
275                                     switch ( LA(1)) {
276                                     case LITERAL_table:
277                                     {
278                                         match(LITERAL_table);
279                                         break;
280                                     }
281                                     case LITERAL_view:
282                                     {
283                                         match(LITERAL_view);
284                                         break;
285                                     }
286                                     default:
287                                     {
288                                         throw new NoViableAltException(LT(1), getFilename());
289                                     }
290                                     }
291                                     }
292                                     }
293                                 }
294                                 catch (RecognitionException pe) {
295                                     synPredMatched14 = false;
296                                 }
297                                 rewind(_m14);
298                                 inputState.guessing--;
299                             }
300                             if ( synPredMatched14 ) {
301                                 s=dropTableStmt();
302                             }
303                             else {
304                                 boolean synPredMatched16 = false;
305                                 if (((LA(1)==LITERAL_drop) && (LA(2)==LITERAL_index))) {
306                                     int _m16 = mark();
307                                     synPredMatched16 = true;
308                                     inputState.guessing++;
309                                     try {
310                                         {
311                                         match(LITERAL_drop);
312                                         match(LITERAL_index);
313                                         }
314                                     }
315                                     catch (RecognitionException pe) {
316                                         synPredMatched16 = false;
317                                     }
318                                     rewind(_m16);
319                                     inputState.guessing--;
320                                 }
321                                 if ( synPredMatched16 ) {
322                                     s=dropIndexStmt();
323                                 }
324                             else {
325                                 throw new NoViableAltException(LT(1), getFilename());
326                             }
327                             }}}}}}
328                             return s;
329                         }
330                         
331     public final Stmt alterTableStmt() throws RecognitionException, TokenStreamException {
332         Stmt s;
333         
334         
335             s = null;
336             String JavaDoc id = null;
337         
338         
339         match(LITERAL_alter);
340         match(LITERAL_table);
341         id=sqlId();
342         if ( inputState.guessing==0 ) {
343             id = qConn.resolveName(id);
344         }
345         {
346         switch ( LA(1)) {
347         case LITERAL_alter:
348         {
349             s=alterColumn(id);
350             break;
351         }
352         case LITERAL_rename:
353         {
354             s=renameTable(id);
355             break;
356         }
357         default:
358             boolean synPredMatched28 = false;
359             if (((LA(1)==LITERAL_add) && (LA(2)==LITERAL_unique||LA(2)==LITERAL_constraint||LA(2)==LITERAL_primary||LA(2)==LITERAL_foreign||LA(2)==LITERAL_check))) {
360                 int _m28 = mark();
361                 synPredMatched28 = true;
362                 inputState.guessing++;
363                 try {
364                     {
365                     match(LITERAL_add);
366                     {
367                     switch ( LA(1)) {
368                     case LITERAL_constraint:
369                     {
370                         match(LITERAL_constraint);
371                         break;
372                     }
373                     case LITERAL_primary:
374                     {
375                         match(LITERAL_primary);
376                         break;
377                     }
378                     case LITERAL_unique:
379                     {
380                         match(LITERAL_unique);
381                         break;
382                     }
383                     case LITERAL_foreign:
384                     {
385                         match(LITERAL_foreign);
386                         break;
387                     }
388                     case LITERAL_check:
389                     {
390                         match(LITERAL_check);
391                         break;
392                     }
393                     default:
394                     {
395                         throw new NoViableAltException(LT(1), getFilename());
396                     }
397                     }
398                     }
399                     }
400                 }
401                 catch (RecognitionException pe) {
402                     synPredMatched28 = false;
403                 }
404                 rewind(_m28);
405                 inputState.guessing--;
406             }
407             if ( synPredMatched28 ) {
408                 s=addConstraint(id);
409             }
410             else {
411                 boolean synPredMatched30 = false;
412                 if (((LA(1)==LITERAL_add) && (LA(2)==LITERAL_column||LA(2)==ID))) {
413                     int _m30 = mark();
414                     synPredMatched30 = true;
415                     inputState.guessing++;
416                     try {
417                         {
418                         match(LITERAL_add);
419                         }
420                     }
421                     catch (RecognitionException pe) {
422                         synPredMatched30 = false;
423                     }
424                     rewind(_m30);
425                     inputState.guessing--;
426                 }
427                 if ( synPredMatched30 ) {
428                     s=addColumn(id);
429                 }
430                 else {
431                     boolean synPredMatched32 = false;
432                     if (((LA(1)==LITERAL_drop) && (LA(2)==LITERAL_constraint))) {
433                         int _m32 = mark();
434                         synPredMatched32 = true;
435                         inputState.guessing++;
436                         try {
437                             {
438                             match(LITERAL_drop);
439                             match(LITERAL_constraint);
440                             }
441                         }
442                         catch (RecognitionException pe) {
443                             synPredMatched32 = false;
444                         }
445                         rewind(_m32);
446                         inputState.guessing--;
447                     }
448                     if ( synPredMatched32 ) {
449                         s=dropConstraint(id);
450                     }
451                     else {
452                         boolean synPredMatched34 = false;
453                         if (((LA(1)==LITERAL_drop) && (LA(2)==LITERAL_column||LA(2)==ID))) {
454                             int _m34 = mark();
455                             synPredMatched34 = true;
456                             inputState.guessing++;
457                             try {
458                                 {
459                                 match(LITERAL_drop);
460                                 }
461                             }
462                             catch (RecognitionException pe) {
463                                 synPredMatched34 = false;
464                             }
465                             rewind(_m34);
466                             inputState.guessing--;
467                         }
468                         if ( synPredMatched34 ) {
469                             s=dropColumn(id);
470                         }
471                     else {
472                         throw new NoViableAltException(LT(1), getFilename());
473                     }
474                     }}}}
475                     }
476                     return s;
477                 }
478                 
479     public final Stmt createIndexStmt() throws RecognitionException, TokenStreamException {
480         Stmt s;
481         
482         
483             s = null;
484             String JavaDoc indexName = null;
485             String JavaDoc tableName = null;
486             Vector JavaDoc columns;
487             boolean unique = false;
488             boolean text = false;
489         
490         
491         match(LITERAL_create);
492         {
493         switch ( LA(1)) {
494         case LITERAL_unique:
495         {
496             match(LITERAL_unique);
497             if ( inputState.guessing==0 ) {
498                 unique = true;
499             }
500             break;
501         }
502         case LITERAL_index:
503         {
504             break;
505         }
506         default:
507         {
508             throw new NoViableAltException(LT(1), getFilename());
509         }
510         }
511         }
512         match(LITERAL_index);
513         indexName=sqlId();
514         match(LITERAL_on);
515         tableName=sqlId();
516         match(LPAREN);
517         columns=idList();
518         match(RPAREN);
519         if ( inputState.guessing==0 ) {
520             
521                           tableName = qConn.resolveName(tableName);
522                           indexName = qConn.resolveName(indexName);
523                           s = new StmtCreateIndex(indexName, tableName,
524                                       columns, unique, text);
525                         
526         }
527         return s;
528     }
529     
530     public final StmtCreateSchema createSchemaStmt() throws RecognitionException, TokenStreamException {
531         StmtCreateSchema s;
532         
533         
534             s = null;
535             String JavaDoc name = null;
536             String JavaDoc auth = null;
537             Stmt s1 = null;
538         
539         
540         match(LITERAL_create);
541         match(LITERAL_schema);
542         {
543         switch ( LA(1)) {
544         case ID:
545         {
546             name=sqlId();
547             {
548             switch ( LA(1)) {
549             case LITERAL_authorization:
550             {
551                 match(LITERAL_authorization);
552                 auth=sqlId();
553                 break;
554             }
555             case EOF:
556             case LITERAL_create:
557             case LITERAL_grant:
558             {
559                 break;
560             }
561             default:
562             {
563                 throw new NoViableAltException(LT(1), getFilename());
564             }
565             }
566             }
567             break;
568         }
569         case LITERAL_authorization:
570         {
571             match(LITERAL_authorization);
572             name=sqlId();
573             if ( inputState.guessing==0 ) {
574                 auth = name;
575             }
576             break;
577         }
578         default:
579         {
580             throw new NoViableAltException(LT(1), getFilename());
581         }
582         }
583         }
584         if ( inputState.guessing==0 ) {
585             
586             try {
587             s = new StmtCreateSchema(name, auth);
588             qConn.setAuth(name, null);
589             } catch (SQLException JavaDoc ex) {
590             throw new RecognitionException("Bad auth");
591             }
592                     
593         }
594         {
595         _loop71:
596         do {
597             if ((LA(1)==LITERAL_create||LA(1)==LITERAL_grant)) {
598                 s1=schemaStatement();
599                 if ( inputState.guessing==0 ) {
600                     s.addStatement(s1);
601                 }
602             }
603             else {
604                 break _loop71;
605             }
606             
607         } while (true);
608         }
609         return s;
610     }
611     
612     public final Stmt createTableStmt() throws RecognitionException, TokenStreamException {
613         Stmt s;
614         
615         
616             s = null;
617             Column col = null;
618             Constraint con = null;
619             Vector JavaDoc constraints = new Vector JavaDoc();
620             Table t = null;
621             String JavaDoc id = null;
622             int modifiers = 0;
623         
624         
625         match(LITERAL_create);
626         {
627         switch ( LA(1)) {
628         case LITERAL_global:
629         {
630             match(LITERAL_global);
631             if ( inputState.guessing==0 ) {
632                 modifiers |= Table.GLOBAL;
633             }
634             break;
635         }
636         case LITERAL_local:
637         {
638             match(LITERAL_local);
639             if ( inputState.guessing==0 ) {
640                 modifiers |= Table.LOCAL;
641             }
642             break;
643         }
644         case LITERAL_temporary:
645         case LITERAL_table:
646         {
647             break;
648         }
649         default:
650         {
651             throw new NoViableAltException(LT(1), getFilename());
652         }
653         }
654         }
655         {
656         switch ( LA(1)) {
657         case LITERAL_temporary:
658         {
659             match(LITERAL_temporary);
660             if ( inputState.guessing==0 ) {
661                 modifiers |= Table.TEMPORARY;
662             }
663             break;
664         }
665         case LITERAL_table:
666         {
667             break;
668         }
669         default:
670         {
671             throw new NoViableAltException(LT(1), getFilename());
672         }
673         }
674         }
675         match(LITERAL_table);
676         id=sqlId();
677         match(LPAREN);
678         if ( inputState.guessing==0 ) {
679             
680                         t = new Table(qConn.resolveName(id), modifiers);
681                     
682         }
683         {
684         switch ( LA(1)) {
685         case ID:
686         {
687             col=columnDefinition();
688             if ( inputState.guessing==0 ) {
689                 
690                             try {
691                                 t.addColumn(col);
692                             } catch (SQLException JavaDoc e) {
693                                 throw new DbException(e);
694                             }
695                         
696             }
697             break;
698         }
699         case LITERAL_unique:
700         case LITERAL_constraint:
701         case LITERAL_primary:
702         case LITERAL_foreign:
703         case LITERAL_check:
704         {
705             con=tableConstraint();
706             if ( inputState.guessing==0 ) {
707                 
708                             constraints.addElement(con);
709                         
710             }
711             break;
712         }
713         case RPAREN:
714         case COMMA:
715         {
716             break;
717         }
718         default:
719         {
720             throw new NoViableAltException(LT(1), getFilename());
721         }
722         }
723         }
724         {
725         _loop87:
726         do {
727             if ((LA(1)==COMMA)) {
728                 match(COMMA);
729                 {
730                 switch ( LA(1)) {
731                 case ID:
732                 {
733                     col=columnDefinition();
734                     if ( inputState.guessing==0 ) {
735                         
736                                     try {
737                                         t.addColumn(col);
738                                     } catch (SQLException JavaDoc e) {
739                                         throw new DbException(e);
740                                     }
741                                 
742                     }
743                     break;
744                 }
745                 case LITERAL_unique:
746                 case LITERAL_constraint:
747                 case LITERAL_primary:
748                 case LITERAL_foreign:
749                 case LITERAL_check:
750                 {
751                     con=tableConstraint();
752                     if ( inputState.guessing==0 ) {
753                         
754                                     constraints.addElement(con);
755                                 
756                     }
757                     break;
758                 }
759                 default:
760                 {
761                     throw new NoViableAltException(LT(1), getFilename());
762                 }
763                 }
764                 }
765             }
766             else {
767                 break _loop87;
768             }
769             
770         } while (true);
771         }
772         match(RPAREN);
773         if ( inputState.guessing==0 ) {
774             
775                     s = new StmtCreateTable(t, constraints);
776                 
777         }
778         return s;
779     }
780     
781     public final StmtCreateView createViewStmt() throws RecognitionException, TokenStreamException {
782         StmtCreateView s;
783         
784         
785             s = null;
786             Vector JavaDoc columns = null;
787             TableExpression te = null;
788             int check = View.NOCHECK;
789             String JavaDoc id = null;
790         
791         
792         match(LITERAL_create);
793         match(LITERAL_view);
794         id=sqlId();
795         {
796         switch ( LA(1)) {
797         case LPAREN:
798         {
799             match(LPAREN);
800             columns=idList();
801             match(RPAREN);
802             break;
803         }
804         case LITERAL_as:
805         {
806             break;
807         }
808         default:
809         {
810             throw new NoViableAltException(LT(1), getFilename());
811         }
812         }
813         }
814         match(LITERAL_as);
815         te=queryExpression();
816         {
817         switch ( LA(1)) {
818         case LITERAL_with:
819         {
820             match(LITERAL_with);
821             if ( inputState.guessing==0 ) {
822                 check = View.CASCADED;
823             }
824             {
825             switch ( LA(1)) {
826             case LITERAL_cascaded:
827             {
828                 match(LITERAL_cascaded);
829                 break;
830             }
831             case LITERAL_check:
832             {
833                 break;
834             }
835             default:
836             {
837                 throw new NoViableAltException(LT(1), getFilename());
838             }
839             }
840             }
841             match(LITERAL_check);
842             match(LITERAL_option);
843             break;
844         }
845         case EOF:
846         case LITERAL_create:
847         case LITERAL_grant:
848         {
849             break;
850         }
851         default:
852         {
853             throw new NoViableAltException(LT(1), getFilename());
854         }
855         }
856         }
857         if ( inputState.guessing==0 ) {
858             
859                             String JavaDoc name = qConn.resolveName(id);
860                             View view = new View(name, columns, te, check);
861                             s = new StmtCreateView(session, view);
862                         
863         }
864         return s;
865     }
866     
867     public final Stmt deleteStmt() throws RecognitionException, TokenStreamException {
868         Stmt s;
869         
870         
871             s = null;
872             Expression e = null;
873             String JavaDoc id = null;
874         
875         
876         match(LITERAL_delete);
877         match(LITERAL_from);
878         id=sqlId();
879         e=whereExpression();
880         if ( inputState.guessing==0 ) {
881             
882                         String JavaDoc n = qConn.resolveName(id);
883                         s = new StmtDelete(n, e);
884                     
885         }
886         return s;
887     }
888     
889     public final Stmt dropTableStmt() throws RecognitionException, TokenStreamException {
890         Stmt s;
891         
892         
893             s = null;
894             boolean restrict = true;
895             boolean view = false;
896             String JavaDoc id;
897             String JavaDoc n;
898         
899         
900         match(LITERAL_drop);
901         {
902         switch ( LA(1)) {
903         case LITERAL_table:
904         {
905             match(LITERAL_table);
906             break;
907         }
908         case LITERAL_view:
909         {
910             match(LITERAL_view);
911             if ( inputState.guessing==0 ) {
912                 view = true;
913             }
914             break;
915         }
916         default:
917         {
918             throw new NoViableAltException(LT(1), getFilename());
919         }
920         }
921         }
922         id=sqlId();
923         {
924         switch ( LA(1)) {
925         case LITERAL_cascade:
926         {
927             match(LITERAL_cascade);
928             if ( inputState.guessing==0 ) {
929                 restrict = false;
930             }
931             break;
932         }
933         case LITERAL_restrict:
934         {
935             match(LITERAL_restrict);
936             if ( inputState.guessing==0 ) {
937                 restrict = true;
938             }
939             break;
940         }
941         case EOF:
942         {
943             break;
944         }
945         default:
946         {
947             throw new NoViableAltException(LT(1), getFilename());
948         }
949         }
950         }
951         if ( inputState.guessing==0 ) {
952             
953                             n = qConn.resolveName(id);
954                             s = new StmtDropTable(n, view, restrict);
955                         
956         }
957         return s;
958     }
959     
960     public final Stmt dropIndexStmt() throws RecognitionException, TokenStreamException {
961         Stmt s;
962         
963         
964             s = null;
965             String JavaDoc indexName = null;
966         
967         
968         match(LITERAL_drop);
969         match(LITERAL_index);
970         indexName=sqlId();
971         if ( inputState.guessing==0 ) {
972             
973                           indexName = qConn.resolveName(indexName);
974             s = new StmtDropIndex(indexName);
975             
976         }
977         return s;
978     }
979     
980     public final Stmt grantStmt() throws RecognitionException, TokenStreamException {
981         Stmt s;
982         
983         
984             s = null;
985             String JavaDoc id = null;
986         
987         
988         match(LITERAL_grant);
989         privilege();
990         {
991         _loop90:
992         do {
993             if ((LA(1)==COMMA)) {
994                 match(COMMA);
995                 privilege();
996             }
997             else {
998                 break _loop90;
999             }
1000            
1001        } while (true);
1002        }
1003        match(LITERAL_on);
1004        {
1005        switch ( LA(1)) {
1006        case LITERAL_table:
1007        {
1008            match(LITERAL_table);
1009            break;
1010        }
1011        case ID:
1012        {
1013            break;
1014        }
1015        default:
1016        {
1017            throw new NoViableAltException(LT(1), getFilename());
1018        }
1019        }
1020        }
1021        id=sqlId();
1022        match(LITERAL_to);
1023        {
1024        switch ( LA(1)) {
1025        case ID:
1026        {
1027            id=sqlId();
1028            {
1029            _loop94:
1030            do {
1031                if ((LA(1)==COMMA)) {
1032                    match(COMMA);
1033                    id=sqlId();
1034                }
1035                else {
1036                    break _loop94;
1037                }
1038                
1039            } while (true);
1040            }
1041            break;
1042        }
1043        case LITERAL_public:
1044        {
1045            match(LITERAL_public);
1046            break;
1047        }
1048        default:
1049        {
1050            throw new NoViableAltException(LT(1), getFilename());
1051        }
1052        }
1053        }
1054        {
1055        switch ( LA(1)) {
1056        case LITERAL_with:
1057        {
1058            match(LITERAL_with);
1059            match(LITERAL_grant);
1060            match(LITERAL_option);
1061            break;
1062        }
1063        case EOF:
1064        case LITERAL_create:
1065        case LITERAL_grant:
1066        {
1067            break;
1068        }
1069        default:
1070        {
1071            throw new NoViableAltException(LT(1), getFilename());
1072        }
1073        }
1074        }
1075        if ( inputState.guessing==0 ) {
1076            s = new StmtNull();
1077        }
1078        return s;
1079    }
1080    
1081    public final StmtInsert insertStmt() throws RecognitionException, TokenStreamException {
1082        StmtInsert s;
1083        
1084        
1085            s = null;
1086            ResultSet JavaDoc rs = null;
1087            Vector JavaDoc columns = null;
1088            Expression query = null;
1089            String JavaDoc n = null;
1090            String JavaDoc id = null;
1091        
1092        
1093        match(LITERAL_insert);
1094        match(LITERAL_into);
1095        id=sqlId();
1096        if ( inputState.guessing==0 ) {
1097            
1098                                n = qConn.resolveName(id);
1099                                s = new StmtInsert(n);
1100                            
1101        }
1102        {
1103        if ((LA(1)==LPAREN) && (LA(2)==ID)) {
1104            match(LPAREN);
1105            columns=idList();
1106            if ( inputState.guessing==0 ) {
1107                s.setColumns(columns);
1108            }
1109            match(RPAREN);
1110        }
1111        else if ((LA(1)==LITERAL_table||LA(1)==LPAREN||LA(1)==LITERAL_default||LA(1)==LITERAL_select||LA(1)==LITERAL_values||LA(1)==ID) && (LA(2)==EOF||LA(2)==LITERAL_unique||LA(2)==LITERAL_table||LA(2)==LPAREN||LA(2)==LITERAL_default||LA(2)==LITERAL_as||LA(2)==LITERAL_all||LA(2)==LITERAL_select||LA(2)==LITERAL_insert||LA(2)==LITERAL_not||LA(2)==LITERAL_null||LA(2)==LITERAL_full||LA(2)==LITERAL_char||LA(2)==LITERAL_date||LA(2)==LITERAL_time||LA(2)==LITERAL_timestamp||LA(2)==LITERAL_interval||LA(2)==LITERAL_distinct||LA(2)==STAR||LA(2)==LITERAL_values||LA(2)==LITERAL_exists||LA(2)==PLUS||LA(2)==MINUS||LA(2)==STRING_LITERAL||LA(2)==QUESTION||LA(2)==INT||LA(2)==REAL||LA(2)==BINSTR||LA(2)==HEXSTR||LA(2)==LITERAL_case||LA(2)==LITERAL_hour||LA(2)==LITERAL_left||LA(2)==LITERAL_minute||LA(2)==LITERAL_month||LA(2)==LITERAL_right||LA(2)==LITERAL_second||LA(2)==LITERAL_year||LA(2)==LITERAL_user||LA(2)==LITERAL_current_user||LA(2)==LITERAL_session_user||LA(2)==LITERAL_system_user||LA(2)==LITERAL_current_date||LA(2)==LITERAL_current_time||LA(2)==LITERAL_current_timestamp||LA(2)==LITERAL_sql_tsi_frac_second||LA(2)==LITERAL_sql_tsi_second||LA(2)==LITERAL_sql_tsi_minute||LA(2)==LITERAL_sql_tsi_hour||LA(2)==LITERAL_sql_tsi_day||LA(2)==LITERAL_sql_tsi_week||LA(2)==LITERAL_sql_tsi_month||LA(2)==LITERAL_sql_tsi_quarter||LA(2)==LITERAL_sql_tsi_year||LA(2)==LITERAL_cast||LA(2)==LITERAL_true||LA(2)==LITERAL_false||LA(2)==LITERAL_avg||LA(2)==LITERAL_min||LA(2)==LITERAL_max||LA(2)==LITERAL_sum||LA(2)==LITERAL_count||LA(2)==LITERAL_cross||LA(2)==LITERAL_join||LA(2)==LITERAL_natural||LA(2)==LITERAL_union||LA(2)==LITERAL_inner||LA(2)==LITERAL_intersect||LA(2)==LITERAL_except||LA(2)==ID)) {
1112        }
1113        else {
1114            throw new NoViableAltException(LT(1), getFilename());
1115        }
1116        
1117        }
1118        {
1119        switch ( LA(1)) {
1120        case LITERAL_table:
1121        case LPAREN:
1122        case LITERAL_select:
1123        case LITERAL_values:
1124        case ID:
1125        {
1126            query=queryExpression();
1127            if ( inputState.guessing==0 ) {
1128                s.setValues(query);
1129            }
1130            break;
1131        }
1132        case LITERAL_default:
1133        {
1134            match(LITERAL_default);
1135            match(LITERAL_values);
1136            if ( inputState.guessing==0 ) {
1137                s.setDefaultValue();
1138            }
1139            break;
1140        }
1141        default:
1142        {
1143            throw new NoViableAltException(LT(1), getFilename());
1144        }
1145        }
1146        }
1147        return s;
1148    }
1149    
1150    public final SelectStmt selectStmt() throws RecognitionException, TokenStreamException {
1151        SelectStmt s;
1152        
1153        
1154            s = null;
1155            TableExpression te = null;
1156            Vector JavaDoc ob = null;
1157        
1158        
1159        te=queryExpression();
1160        if ( inputState.guessing==0 ) {
1161            s = new SelectStmt(te);
1162        }
1163        {
1164        switch ( LA(1)) {
1165        case LITERAL_order:
1166        {
1167            ob=orderBy();
1168            if ( inputState.guessing==0 ) {
1169                s.setOrder(ob);
1170            }
1171            break;
1172        }
1173        case LITERAL_for:
1174        {
1175            match(LITERAL_for);
1176            {
1177            switch ( LA(1)) {
1178            case LITERAL_update:
1179            {
1180                match(LITERAL_update);
1181                break;
1182            }
1183            case LITERAL_read:
1184            {
1185                match(LITERAL_read);
1186                match(LITERAL_only);
1187                break;
1188            }
1189            default:
1190            {
1191                throw new NoViableAltException(LT(1), getFilename());
1192            }
1193            }
1194            }
1195            break;
1196        }
1197        case EOF:
1198        {
1199            break;
1200        }
1201        default:
1202        {
1203            throw new NoViableAltException(LT(1), getFilename());
1204        }
1205        }
1206        }
1207        return s;
1208    }
1209    
1210    public final StmtUpdate updateStmt() throws RecognitionException, TokenStreamException {
1211        StmtUpdate s;
1212        
1213        
1214            s = null;
1215            String JavaDoc n = null;
1216            UpdateItem item = null;
1217            Expression we = null;
1218            String JavaDoc id = null;
1219        
1220        
1221        match(LITERAL_update);
1222        id=sqlId();
1223        if ( inputState.guessing==0 ) {
1224            
1225                                n = qConn.resolveName(id);
1226                                s = new StmtUpdate(n);
1227                            
1228        }
1229        match(LITERAL_set);
1230        {
1231        switch ( LA(1)) {
1232        case ID:
1233        {
1234            item=updateItem();
1235            if ( inputState.guessing==0 ) {
1236                
1237                                    s.addItem(item);
1238                                
1239            }
1240            {
1241            _loop62:
1242            do {
1243                if ((LA(1)==COMMA)) {
1244                    match(COMMA);
1245                    item=updateItem();
1246                    if ( inputState.guessing==0 ) {
1247                        
1248                                            s.addItem(item);
1249                                        
1250                    }
1251                }
1252                else {
1253                    break _loop62;
1254                }
1255                
1256            } while (true);
1257            }
1258            break;
1259        }
1260        case EOF:
1261        case LITERAL_where:
1262        {
1263            break;
1264        }
1265        default:
1266        {
1267            throw new NoViableAltException(LT(1), getFilename());
1268        }
1269        }
1270        }
1271        we=whereExpression();
1272        if ( inputState.guessing==0 ) {
1273                s.addWhere(we);
1274        }
1275        return s;
1276    }
1277    
1278    public final Stmt commitStmt() throws RecognitionException, TokenStreamException {
1279        Stmt s;
1280        
1281        
1282            s = null;
1283        
1284        
1285        match(LITERAL_commit);
1286        {
1287        switch ( LA(1)) {
1288        case LITERAL_work:
1289        {
1290            match(LITERAL_work);
1291            break;
1292        }
1293        case EOF:
1294        {
1295            break;
1296        }
1297        default:
1298        {
1299            throw new NoViableAltException(LT(1), getFilename());
1300        }
1301        }
1302        }
1303        if ( inputState.guessing==0 ) {
1304                  s = new StmtCommit();
1305        }
1306        return s;
1307    }
1308    
1309    public final Stmt rollbackStmt() throws RecognitionException, TokenStreamException {
1310        Stmt s;
1311        
1312        
1313            s = null;
1314        
1315        
1316        match(LITERAL_rollback);
1317        {
1318        switch ( LA(1)) {
1319        case LITERAL_transaction:
1320        {
1321            match(LITERAL_transaction);
1322            break;
1323        }
1324        case EOF:
1325        {
1326            break;
1327        }
1328        default:
1329        {
1330            throw new NoViableAltException(LT(1), getFilename());
1331        }
1332        }
1333        }
1334        if ( inputState.guessing==0 ) {
1335                  s = new StmtRollback();
1336        }
1337        return s;
1338    }
1339    
1340    public final String JavaDoc sqlId() throws RecognitionException, TokenStreamException {
1341        String JavaDoc s;
1342        
1343        Token id = null;
1344        
1345            s = null;
1346            StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
1347        
1348        
1349        id = LT(1);
1350        match(ID);
1351        if ( inputState.guessing==0 ) {
1352            
1353                            String JavaDoc n = id.getText();
1354                            int idx = TupleImpl.nextUnquotedPeriod(n);
1355                            if (idx > 0) {
1356                               sb.append(fixIdTerm(n.substring(0, idx)));
1357                               sb.append('.');
1358                               n = n.substring(idx+1);
1359                               idx = TupleImpl.nextUnquotedPeriod(n);
1360                               if (idx > 0) {
1361                                  sb.append(fixIdTerm(n.substring(0, idx)));
1362                                  sb.append('.');
1363                                  n = n.substring(idx+1);
1364                               }
1365                            }
1366                            sb.append(fixIdTerm(n));
1367                            s = sb.toString();
1368                    
1369        }
1370        return s;
1371    }
1372    
1373    public final Vector JavaDoc idList() throws RecognitionException, TokenStreamException {
1374         Vector JavaDoc v ;
1375        
1376        
1377            v = new Vector JavaDoc();
1378            String JavaDoc id = null;
1379        
1380        
1381        id=sqlId();
1382        if ( inputState.guessing==0 ) {
1383            v.addElement(id);
1384        }
1385        {
1386        _loop332:
1387        do {
1388            if ((LA(1)==COMMA) && (LA(2)==ID)) {
1389                match(COMMA);
1390                id=sqlId();
1391                if ( inputState.guessing==0 ) {
1392                    v.addElement(id);
1393                }
1394            }
1395            else {
1396                break _loop332;
1397            }
1398            
1399        } while (true);
1400        }
1401        return v ;
1402    }
1403    
1404    public final Stmt addConstraint(
1405        String JavaDoc id
1406    ) throws RecognitionException, TokenStreamException {
1407        Stmt s;
1408        
1409        
1410            s = null;
1411            Constraint con = null;
1412        
1413        
1414        match(LITERAL_add);
1415        con=tableConstraint();
1416        if ( inputState.guessing==0 ) {
1417            s = new StmtAddConstraint(id, con);
1418        }
1419        return s;
1420    }
1421    
1422    public final Stmt addColumn(
1423        String JavaDoc id
1424    ) throws RecognitionException, TokenStreamException {
1425        Stmt s;
1426        
1427        
1428            s = null;
1429            Column col = null;
1430        String JavaDoc aname = null;
1431        
1432        
1433        match(LITERAL_add);
1434        {
1435        switch ( LA(1)) {
1436        case LITERAL_column:
1437        {
1438            match(LITERAL_column);
1439            break;
1440        }
1441        case ID:
1442        {
1443            break;
1444        }
1445        default:
1446        {
1447            throw new NoViableAltException(LT(1), getFilename());
1448        }
1449        }
1450        }
1451        col=columnDefinition();
1452        {
1453        switch ( LA(1)) {
1454        case LITERAL_first:
1455        {
1456            match(LITERAL_first);
1457            if ( inputState.guessing==0 ) {
1458                aname = "";
1459            }
1460            break;
1461        }
1462        case LITERAL_after:
1463        {
1464            match(LITERAL_after);
1465            aname=sqlId();
1466            break;
1467        }
1468        case EOF:
1469        {
1470            break;
1471        }
1472        default:
1473        {
1474            throw new NoViableAltException(LT(1), getFilename());
1475        }
1476        }
1477        }
1478        if ( inputState.guessing==0 ) {
1479            s = new StmtAddColumn(id, col, aname);
1480        }
1481        return s;
1482    }
1483    
1484    public final Stmt dropConstraint(
1485        String JavaDoc id
1486    ) throws RecognitionException, TokenStreamException {
1487        Stmt s;
1488        
1489        
1490            s = null;
1491            String JavaDoc conName = null;
1492            boolean restrict = true;
1493        
1494        
1495        match(LITERAL_drop);
1496        match(LITERAL_constraint);
1497        conName=sqlId();
1498        {
1499        switch ( LA(1)) {
1500        case LITERAL_restrict:
1501        {
1502            match(LITERAL_restrict);
1503            break;
1504        }
1505        case LITERAL_cascade:
1506        {
1507            match(LITERAL_cascade);
1508            if ( inputState.guessing==0 ) {
1509                restrict = false;
1510            }
1511            break;
1512        }
1513        case EOF:
1514        {
1515            break;
1516        }
1517        default:
1518        {
1519            throw new NoViableAltException(LT(1), getFilename());
1520        }
1521        }
1522        }
1523        if ( inputState.guessing==0 ) {
1524            s = new StmtDropConstraint(id, conName, restrict);
1525        }
1526        return s;
1527    }
1528    
1529    public final Stmt dropColumn(
1530        String JavaDoc id
1531    ) throws RecognitionException, TokenStreamException {
1532        Stmt s;
1533        
1534        
1535            s = null;
1536            String JavaDoc colName = null;
1537        
1538        
1539        match(LITERAL_drop);
1540        {
1541        switch ( LA(1)) {
1542        case LITERAL_column:
1543        {
1544            match(LITERAL_column);
1545            break;
1546        }
1547        case ID:
1548        {
1549            break;
1550        }
1551        default:
1552        {
1553            throw new NoViableAltException(LT(1), getFilename());
1554        }
1555        }
1556        }
1557        colName=sqlId();
1558        {
1559        switch ( LA(1)) {
1560        case LITERAL_restrict:
1561        {
1562            match(LITERAL_restrict);
1563            break;
1564        }
1565        case LITERAL_cascade:
1566        {
1567            match(LITERAL_cascade);
1568            break;
1569        }
1570        case EOF:
1571        {
1572            break;
1573        }
1574        default:
1575        {
1576            throw new NoViableAltException(LT(1), getFilename());
1577        }
1578        }
1579        }
1580        if ( inputState.guessing==0 ) {
1581            s = new StmtDropColumn(id, colName);
1582        }
1583        return s;
1584    }
1585    
1586    public final Stmt alterColumn(
1587        String JavaDoc id
1588    ) throws RecognitionException, TokenStreamException {
1589        Stmt s;
1590        
1591                
1592            s = null;
1593            String JavaDoc colName = null;
1594            Expression def = null;
1595        
1596        
1597        match(LITERAL_alter);
1598        {
1599        switch ( LA(1)) {
1600        case LITERAL_column:
1601        {
1602            match(LITERAL_column);
1603            break;
1604        }
1605        case ID:
1606        {
1607            break;
1608        }
1609        default:
1610        {
1611            throw new NoViableAltException(LT(1), getFilename());
1612        }
1613        }
1614        }
1615        colName=sqlId();
1616        {
1617        switch ( LA(1)) {
1618        case LITERAL_set:
1619        {
1620            match(LITERAL_set);
1621            match(LITERAL_default);
1622            def=expression();
1623            break;
1624        }
1625        case LITERAL_drop:
1626        {
1627            match(LITERAL_drop);
1628            match(LITERAL_default);
1629            break;
1630        }
1631        default:
1632        {
1633            throw new NoViableAltException(LT(1), getFilename());
1634        }
1635        }
1636        }
1637        if ( inputState.guessing==0 ) {
1638            s = new StmtAlterColumn(id, colName, def);
1639        }
1640        return s;
1641    }
1642    
1643    public final Stmt renameTable(
1644        String JavaDoc id
1645    ) throws RecognitionException, TokenStreamException {
1646        Stmt s;
1647        
1648        
1649            s = null;
1650            Constraint con = null;
1651            String JavaDoc id2 = null;
1652        
1653        
1654        match(LITERAL_rename);
1655        match(LITERAL_to);
1656        id2=sqlId();
1657        if ( inputState.guessing==0 ) {
1658            
1659                             id2 = qConn.resolveName(id2);
1660                             s = new StmtRenameTable(id, id2);
1661            
1662        }
1663        return s;
1664    }
1665    
1666    public final Constraint tableConstraint() throws RecognitionException, TokenStreamException {
1667        Constraint con;
1668        
1669        
1670            con = null;
1671            String JavaDoc name = null;
1672            Vector JavaDoc v = null;
1673            Vector JavaDoc v2 = null;
1674            int ref = 0;
1675            String JavaDoc n = null;
1676            String JavaDoc id = null;
1677            Expression predicate = null;
1678        
1679        
1680        {
1681        switch ( LA(1)) {
1682        case LITERAL_constraint:
1683        {
1684            match(LITERAL_constraint);
1685            name=sqlId();
1686            break;
1687        }
1688        case LITERAL_unique:
1689        case LITERAL_primary:
1690        case LITERAL_foreign:
1691        case LITERAL_check:
1692        {
1693            break;
1694        }
1695        default:
1696        {
1697            throw new NoViableAltException(LT(1), getFilename());
1698        }
1699        }
1700        }
1701        {
1702        switch ( LA(1)) {
1703        case LITERAL_primary:
1704        {
1705            match(LITERAL_primary);
1706            match(LITERAL_key);
1707            match(LPAREN);
1708            v=idList();
1709            match(RPAREN);
1710            if ( inputState.guessing==0 ) {
1711                con = new PrimaryKeyConstraint(name, v);
1712            }
1713            break;
1714        }
1715        case LITERAL_unique:
1716        {
1717            match(LITERAL_unique);
1718            match(LPAREN);
1719            v=idList();
1720            match(RPAREN);
1721            if ( inputState.guessing==0 ) {
1722                con = new UniqueConstraint(name, v);
1723            }
1724            break;
1725        }
1726        case LITERAL_foreign:
1727        {
1728            match(LITERAL_foreign);
1729            match(LITERAL_key);
1730            match(LPAREN);
1731            v=idList();
1732            match(RPAREN);
1733            match(LITERAL_references);
1734            id=sqlId();
1735            {
1736            switch ( LA(1)) {
1737            case LPAREN:
1738            {
1739                match(LPAREN);
1740                v2=idList();
1741                match(RPAREN);
1742                break;
1743            }
1744            case EOF:
1745            case LITERAL_on:
1746            case RPAREN:
1747            case COMMA:
1748            case LITERAL_match:
1749            {
1750                break;
1751            }
1752            default:
1753            {
1754                throw new NoViableAltException(LT(1), getFilename());
1755            }
1756            }
1757            }
1758            ref=referentialSpec();
1759            if ( inputState.guessing==0 ) {
1760                
1761                                n = qConn.resolveName(id);
1762                                con = new ImportedKeyConstraint(name, v, n, v2);
1763                                con.setRefSpec(ref);
1764                            
1765            }
1766            break;
1767        }
1768        case LITERAL_check:
1769        {
1770            match(LITERAL_check);
1771            predicate=expression();
1772            if ( inputState.guessing==0 ) {
1773                con = new CheckConstraint(name, predicate);
1774            }
1775            break;
1776        }
1777        default:
1778        {
1779            throw new NoViableAltException(LT(1), getFilename());
1780        }
1781        }
1782        }
1783        return con;
1784    }
1785    
1786    public final Column columnDefinition() throws RecognitionException, TokenStreamException {
1787        Column def;
1788        
1789        
1790            def = null;
1791        Type t = null;
1792            Constraint constraint = null;
1793            String JavaDoc id = null;
1794            Expression p = null;
1795        
1796        
1797        id=sqlId();
1798        t=type();
1799        if ( inputState.guessing==0 ) {
1800            def = new Column(id, t);
1801        }
1802        {
1803        _loop101:
1804        do {
1805            switch ( LA(1)) {
1806            case LITERAL_unique:
1807            case LITERAL_constraint:
1808            case LITERAL_primary:
1809            case LITERAL_check:
1810            case LITERAL_with:
1811            case LITERAL_references:
1812            case LITERAL_not:
1813            {
1814                constraint=columnConstraint();
1815                if ( inputState.guessing==0 ) {
1816                    def.addConstraint(constraint);
1817                }
1818                break;
1819            }
1820            case LITERAL_default:
1821            {
1822                match(LITERAL_default);
1823                p=expression();
1824                if ( inputState.guessing==0 ) {
1825                    def.setDefault(p);
1826                }
1827                break;
1828            }
1829            default:
1830            {
1831                break _loop101;
1832            }
1833            }
1834        } while (true);
1835        }
1836        return def;
1837    }
1838    
1839    public final Expression expression() throws RecognitionException, TokenStreamException {
1840        Expression e;
1841        
1842        e = null;
1843        
1844        e=scalarExpression();
1845        return e;
1846    }
1847    
1848    public final TableExpression queryExpression() throws RecognitionException, TokenStreamException {
1849        TableExpression item;
1850        
1851        
1852            item = null;
1853            int op = 0;
1854            boolean all = false;
1855            boolean corr = false;
1856            Vector JavaDoc columns = null;
1857            TableExpression item2 = null;
1858            String JavaDoc id = null;
1859        
1860        
1861        item=queryExpressionHead();
1862        {
1863        _loop203:
1864        do {
1865            if ((LA(1)==LITERAL_union||LA(1)==LITERAL_intersect||LA(1)==LITERAL_except) && (LA(2)==LITERAL_table||LA(2)==LPAREN||LA(2)==LITERAL_all||LA(2)==LITERAL_select||LA(2)==LITERAL_corresponding||LA(2)==LITERAL_values||LA(2)==ID)) {
1866                op=combine();
1867                if ( inputState.guessing==0 ) {
1868                    
1869                                    all = false;
1870                                    corr = false;
1871                                    columns = null;
1872                                    item2 = null;
1873                                
1874                }
1875                {
1876                switch ( LA(1)) {
1877                case LITERAL_all:
1878                {
1879                    match(LITERAL_all);
1880                    if ( inputState.guessing==0 ) {
1881                        all = true;
1882                    }
1883                    break;
1884                }
1885                case LITERAL_table:
1886                case LPAREN:
1887                case LITERAL_select:
1888                case LITERAL_corresponding:
1889                case LITERAL_values:
1890                case ID:
1891                {
1892                    break;
1893                }
1894                default:
1895                {
1896                    throw new NoViableAltException(LT(1), getFilename());
1897                }
1898                }
1899                }
1900                {
1901                switch ( LA(1)) {
1902                case LITERAL_corresponding:
1903                {
1904                    match(LITERAL_corresponding);
1905                    if ( inputState.guessing==0 ) {
1906                        
1907                                        corr = true;
1908                                
1909                    }
1910                    {
1911                    switch ( LA(1)) {
1912                    case LITERAL_by:
1913                    {
1914                        match(LITERAL_by);
1915                        match(LPAREN);
1916                        columns=idList();
1917                        match(RPAREN);
1918                        break;
1919                    }
1920                    case LITERAL_table:
1921                    case LPAREN:
1922                    case LITERAL_select:
1923                    case LITERAL_values:
1924                    case ID:
1925                    {
1926                        break;
1927                    }
1928                    default:
1929                    {
1930                        throw new NoViableAltException(LT(1), getFilename());
1931                    }
1932                    }
1933                    }
1934                    break;
1935                }
1936                case LITERAL_table:
1937                case LPAREN:
1938                case LITERAL_select:
1939                case LITERAL_values:
1940                case ID:
1941                {
1942                    break;
1943                }
1944                default:
1945                {
1946                    throw new NoViableAltException(LT(1), getFilename());
1947                }
1948                }
1949                }
1950                item2=queryExpressionHead();
1951                if ( inputState.guessing==0 ) {
1952                    
1953                                    item = new MergeExpression(op, all, item,
1954                                                   item2, columns,
1955                                                   corr);
1956                                
1957                }
1958            }
1959            else {
1960                break _loop203;
1961            }
1962            
1963        } while (true);
1964        }
1965        return item;
1966    }
1967    
1968    public final UpdateItem updateItem() throws RecognitionException, TokenStreamException {
1969        UpdateItem item;
1970        
1971        
1972            item = null;
1973            Expression e = null;
1974            String JavaDoc id = null;
1975        
1976        
1977        id=sqlId();
1978        match(EQ);
1979        e=expression();
1980        if ( inputState.guessing==0 ) {
1981            
1982                        item = new UpdateItem(id, e);
1983                    
1984        }
1985        return item;
1986    }
1987    
1988    public final Expression whereExpression() throws RecognitionException, TokenStreamException {
1989        Expression e;
1990        
1991        
1992            e = null;
1993        
1994        
1995        {
1996        if ((LA(1)==LITERAL_where) && (LA(2)==LITERAL_unique||LA(2)==LPAREN||LA(2)==LITERAL_default||LA(2)==LITERAL_insert||LA(2)==LITERAL_not||LA(2)==LITERAL_null||LA(2)==LITERAL_char||LA(2)==LITERAL_date||LA(2)==LITERAL_time||LA(2)==LITERAL_timestamp||LA(2)==LITERAL_interval||LA(2)==LITERAL_exists||LA(2)==PLUS||LA(2)==MINUS||LA(2)==STRING_LITERAL||LA(2)==QUESTION||LA(2)==INT||LA(2)==REAL||LA(2)==BINSTR||LA(2)==HEXSTR||LA(2)==LITERAL_case||LA(2)==LITERAL_hour||LA(2)==LITERAL_left||LA(2)==LITERAL_minute||LA(2)==LITERAL_month||LA(2)==LITERAL_right||LA(2)==LITERAL_second||LA(2)==LITERAL_year||LA(2)==LITERAL_user||LA(2)==LITERAL_current_user||LA(2)==LITERAL_session_user||LA(2)==LITERAL_system_user||LA(2)==LITERAL_current_date||LA(2)==LITERAL_current_time||LA(2)==LITERAL_current_timestamp||LA(2)==LITERAL_sql_tsi_frac_second||LA(2)==LITERAL_sql_tsi_second||LA(2)==LITERAL_sql_tsi_minute||LA(2)==LITERAL_sql_tsi_hour||LA(2)==LITERAL_sql_tsi_day||LA(2)==LITERAL_sql_tsi_week||LA(2)==LITERAL_sql_tsi_month||LA(2)==LITERAL_sql_tsi_quarter||LA(2)==LITERAL_sql_tsi_year||LA(2)==LITERAL_cast||LA(2)==LITERAL_true||LA(2)==LITERAL_false||LA(2)==LITERAL_avg||LA(2)==LITERAL_min||LA(2)==LITERAL_max||LA(2)==LITERAL_sum||LA(2)==LITERAL_count||LA(2)==ID)) {
1997            match(LITERAL_where);
1998            e=expression();
1999        }
2000        else if ((LA(1)==EOF||LA(1)==LITERAL_create||LA(1)==LITERAL_unique||LA(1)==LITERAL_on||LA(1)==RPAREN||LA(1)==LITERAL_constraint||LA(1)==LITERAL_primary||LA(1)==LITERAL_check||LA(1)==LITERAL_first||LA(1)==LITERAL_after||LA(1)==LITERAL_default||LA(1)==LITERAL_as||LA(1)==LITERAL_with||LA(1)==COMMA||LA(1)==LITERAL_where||LA(1)==LITERAL_from||LA(1)==LITERAL_grant||LA(1)==LITERAL_references||LA(1)==LITERAL_not||LA(1)==LITERAL_full||LA(1)==LITERAL_initially||LA(1)==LITERAL_deferrable||LA(1)==LITERAL_for||LA(1)==LITERAL_order||LA(1)==LITERAL_having||LA(1)==LITERAL_using||LA(1)==LITERAL_group||LA(1)==CONCAT||LA(1)==LITERAL_or||LA(1)==LITERAL_and||LA(1)==LITERAL_when||LA(1)==LITERAL_then||LA(1)==LITERAL_else||LA(1)==LITERAL_end||LA(1)==LITERAL_left||LA(1)==LITERAL_right||LA(1)==LITERAL_cross||LA(1)==LITERAL_join||LA(1)==LITERAL_natural||LA(1)==LITERAL_union||LA(1)==LITERAL_inner||LA(1)==LITERAL_intersect||LA(1)==LITERAL_except||LA(1)==ID) && (LA(2)==EOF||LA(2)==LITERAL_create||LA(2)==LITERAL_unique||LA(2)==LITERAL_index||LA(2)==LITERAL_temporary||LA(2)==LITERAL_table||LA(2)==LITERAL_view||LA(2)==LITERAL_on||LA(2)==LPAREN||LA(2)==RPAREN||LA(2)==LITERAL_constraint||LA(2)==LITERAL_primary||LA(2)==LITERAL_foreign||LA(2)==LITERAL_check||LA(2)==LITERAL_first||LA(2)==LITERAL_after||LA(2)==LITERAL_default||LA(2)==LITERAL_as||LA(2)==LITERAL_with||LA(2)==LITERAL_cascaded||LA(2)==LITERAL_update||LA(2)==COMMA||LA(2)==LITERAL_where||LA(2)==EQ||LA(2)==LITERAL_delete||LA(2)==LITERAL_from||LA(2)==LITERAL_global||LA(2)==LITERAL_local||LA(2)==LITERAL_grant||LA(2)==LITERAL_all||LA(2)==LITERAL_select||LA(2)==LITERAL_insert||LA(2)==LITERAL_references||LA(2)==LITERAL_usage||LA(2)==LITERAL_not||LA(2)==LITERAL_null||LA(2)==LITERAL_key||LA(2)==LITERAL_identity||LA(2)==LITERAL_full||LA(2)==LITERAL_initially||LA(2)==LITERAL_deferred||LA(2)==LITERAL_immediate||LA(2)==LITERAL_deferrable||LA(2)==LITERAL_bit||LA(2)==LITERAL_varbinary||LA(2)==LITERAL_binary||LA(2)==LITERAL_blob||LA(2)==LITERAL_clob||LA(2)==LITERAL_character||LA(2)==LITERAL_char||LA(2)==LITERAL_varchar||LA(2)==LITERAL_int||LA(2)==LITERAL_integer||LA(2)==LITERAL_smallint||LA(2)==LITERAL_tinyint||LA(2)==LITERAL_bigint||LA(2)==LITERAL_dec||LA(2)==LITERAL_decimal||LA(2)==LITERAL_numeric||LA(2)==LITERAL_real||LA(2)==LITERAL_double||LA(2)==LITERAL_float||LA(2)==LITERAL_boolean||LA(2)==LITERAL_date||LA(2)==LITERAL_time||LA(2)==LITERAL_timestamp||LA(2)==LITERAL_interval||LA(2)==LITERAL_for||LA(2)==LITERAL_read||LA(2)==LITERAL_order||LA(2)==LITERAL_by||LA(2)==STAR||LA(2)==LITERAL_having||LA(2)==LITERAL_corresponding||LA(2)==LITERAL_values||LA(2)==LITERAL_using||LA(2)==LITERAL_group||LA(2)==CONCAT||LA(2)==LITERAL_or||LA(2)==LITERAL_and||LA(2)==LITERAL_is||LA(2)==LITERAL_like||LA(2)==LITERAL_between||LA(2)==LITERAL_in||LA(2)==LITERAL_exists||LA(2)==LITERAL_escape||LA(2)==120||LA(2)==PLUS||LA(2)==MINUS||LA(2)==STRING_LITERAL||LA(2)==QUESTION||LA(2)==INT||LA(2)==REAL||LA(2)==BINSTR||LA(2)==HEXSTR||LA(2)==LITERAL_case||LA(2)==LITERAL_when||LA(2)==LITERAL_then||LA(2)==LITERAL_else||LA(2)==LITERAL_end||LA(2)==LITERAL_hour||LA(2)==LITERAL_left||LA(2)==LITERAL_minute||LA(2)==LITERAL_month||LA(2)==LITERAL_right||LA(2)==LITERAL_second||LA(2)==LITERAL_year||LA(2)==LITERAL_user||LA(2)==LITERAL_current_user||LA(2)==LITERAL_session_user||LA(2)==LITERAL_system_user||LA(2)==LITERAL_current_date||LA(2)==LITERAL_current_time||LA(2)==LITERAL_current_timestamp||LA(2)==LITERAL_sql_tsi_frac_second||LA(2)==LITERAL_sql_tsi_second||LA(2)==LITERAL_sql_tsi_minute||LA(2)==LITERAL_sql_tsi_hour||LA(2)==LITERAL_sql_tsi_day||LA(2)==LITERAL_sql_tsi_week||LA(2)==LITERAL_sql_tsi_month||LA(2)==LITERAL_sql_tsi_quarter||LA(2)==LITERAL_sql_tsi_year||LA(2)==LITERAL_cast||LA(2)==LITERAL_true||LA(2)==LITERAL_false||LA(2)==LITERAL_avg||LA(2)==LITERAL_min||LA(2)==LITERAL_max||LA(2)==LITERAL_sum||LA(2)==LITERAL_count||LA(2)==LT||LA(2)==LE||LA(2)==GT||LA(2)==GE||LA(2)==NE||LA(2)==SLASH||LA(2)==LITERAL_cross||LA(2)==LITERAL_join||LA(2)==LITERAL_natural||LA(2)==LITERAL_union||LA(2)==LITERAL_inner||LA(2)==LITERAL_outer||LA(2)==LITERAL_intersect||LA(2)==LITERAL_except||LA(2)==ID)) {
2001        }
2002        else {
2003            throw new NoViableAltException(LT(1), getFilename());
2004        }
2005        
2006        }
2007        return e;
2008    }
2009    
2010    public final Stmt schemaStatement() throws RecognitionException, TokenStreamException {
2011        Stmt s;
2012        
2013        
2014            s = null;
2015        
2016        
2017        boolean synPredMatched75 = false;
2018        if (((LA(1)==LITERAL_create) && (LA(2)==LITERAL_unique||LA(2)==LITERAL_index))) {
2019            int _m75 = mark();
2020            synPredMatched75 = true;
2021            inputState.guessing++;
2022            try {
2023                {
2024                match(LITERAL_create);
2025                {
2026                switch ( LA(1)) {
2027                case LITERAL_unique:
2028                {
2029                    match(LITERAL_unique);
2030                    break;
2031                }
2032                case LITERAL_index:
2033                {
2034                    break;
2035                }
2036                default:
2037                {
2038                    throw new NoViableAltException(LT(1), getFilename());
2039                }
2040                }
2041                }
2042                match(LITERAL_index);
2043                }
2044            }
2045            catch (RecognitionException pe) {
2046                synPredMatched75 = false;
2047            }
2048            rewind(_m75);
2049            inputState.guessing--;
2050        }
2051        if ( synPredMatched75 ) {
2052            s=createIndexStmt();
2053        }
2054        else {
2055            boolean synPredMatched78 = false;
2056            if (((LA(1)==LITERAL_create) && (LA(2)==LITERAL_temporary||LA(2)==LITERAL_table||LA(2)==LITERAL_global||LA(2)==LITERAL_local))) {
2057                int _m78 = mark();
2058                synPredMatched78 = true;
2059                inputState.guessing++;
2060                try {
2061                    {
2062                    match(LITERAL_create);
2063                    {
2064                    switch ( LA(1)) {
2065                    case LITERAL_temporary:
2066                    {
2067                        match(LITERAL_temporary);
2068                        break;
2069                    }
2070                    case LITERAL_table:
2071                    {
2072                        break;
2073                    }
2074                    default:
2075                    {
2076                        throw new NoViableAltException(LT(1), getFilename());
2077                    }
2078                    }
2079                    }
2080                    match(LITERAL_table);
2081                    }
2082                }
2083                catch (RecognitionException pe) {
2084                    synPredMatched78 = false;
2085                }
2086                rewind(_m78);
2087                inputState.guessing--;
2088            }
2089            if ( synPredMatched78 ) {
2090                s=createTableStmt();
2091            }
2092            else {
2093                boolean synPredMatched80 = false;
2094                if (((LA(1)==LITERAL_create) && (LA(2)==LITERAL_view))) {
2095                    int _m80 = mark();
2096                    synPredMatched80 = true;
2097                    inputState.guessing++;
2098                    try {
2099                        {
2100                        match(LITERAL_create);
2101                        match(LITERAL_view);
2102                        }
2103                    }
2104                    catch (RecognitionException pe) {
2105                        synPredMatched80 = false;
2106                    }
2107                    rewind(_m80);
2108                    inputState.guessing--;
2109                }
2110                if ( synPredMatched80 ) {
2111                    s=createViewStmt();
2112                }
2113                else if ((LA(1)==LITERAL_grant)) {
2114                    s=grantStmt();
2115                }
2116                else {
2117                    throw new NoViableAltException(LT(1), getFilename());
2118                }
2119                }}
2120                return s;
2121            }
2122            
2123    public final void privilege() throws RecognitionException, TokenStreamException {
2124        
2125        
2126            Vector JavaDoc v = null;
2127        
2128        
2129        switch ( LA(1)) {
2130        case LITERAL_all:
2131        {
2132            match(LITERAL_all);
2133            match(LITERAL_privileges);
2134            break;
2135        }
2136        case LITERAL_select:
2137        {
2138            match(LITERAL_select);
2139            break;
2140        }
2141        case LITERAL_delete:
2142        {
2143            match(LITERAL_delete);
2144            break;
2145        }
2146        case LITERAL_update:
2147        case LITERAL_insert:
2148        case LITERAL_references:
2149        {
2150            {
2151            switch ( LA(1)) {
2152            case LITERAL_insert:
2153            {
2154                match(LITERAL_insert);
2155                break;
2156            }
2157            case LITERAL_update:
2158            {
2159                match(LITERAL_update);
2160                break;
2161            }
2162            case LITERAL_references:
2163            {
2164                match(LITERAL_references);
2165                break;
2166            }
2167            default:
2168            {
2169                throw new NoViableAltException(LT(1), getFilename());
2170            }
2171            }
2172            }
2173            {
2174            switch ( LA(1)) {
2175            case LPAREN:
2176            {
2177                match(LPAREN);
2178                v=idList();
2179                match(RPAREN);
2180                break;
2181            }
2182            case LITERAL_on:
2183            case COMMA:
2184            {
2185                break;
2186            }
2187            default:
2188            {
2189                throw new NoViableAltException(LT(1), getFilename());
2190            }
2191            }
2192            }
2193            break;
2194        }
2195        case LITERAL_usage:
2196        {
2197            match(LITERAL_usage);
2198            break;
2199        }
2200        default:
2201        {
2202            throw new NoViableAltException(LT(1), getFilename());
2203        }
2204        }
2205    }
2206    
2207    public final Type type() throws RecognitionException, TokenStreamException {
2208        Type t;
2209        
2210        
2211            t = null;
2212            int max = -1;
2213            int scale = 0;
2214            int precision = 0;
2215            boolean tz = false;
2216        
2217        
2218        switch ( LA(1)) {
2219        case LITERAL_int:
2220        case LITERAL_integer:
2221        {
2222            t=typeInt();
2223            break;
2224        }
2225        case LITERAL_tinyint:
2226        {
2227            t=typeTinyInt();
2228            break;
2229        }
2230        case LITERAL_smallint:
2231        {
2232            t=typeSmallInt();
2233            break;
2234        }
2235        case LITERAL_bigint:
2236        {
2237            t=typeBigInt();
2238            break;
2239        }
2240        case LITERAL_dec:
2241        case LITERAL_decimal:
2242        case LITERAL_numeric:
2243        {
2244            t=typeDecimal();
2245            break;
2246        }
2247        case LITERAL_real:
2248        {
2249            t=typeReal();
2250            break;
2251        }
2252        case LITERAL_double:
2253        {
2254            t=typeDouble();
2255            break;
2256        }
2257        case LITERAL_float:
2258        {
2259            t=typeFloat();
2260            break;
2261        }
2262        case LITERAL_boolean:
2263        {
2264            t=typeBoolean();
2265            break;
2266        }
2267        case LITERAL_date:
2268        {
2269            t=typeDate();
2270            break;
2271        }
2272        case LITERAL_time:
2273        {
2274            t=typeTime();
2275            break;
2276        }
2277        case LITERAL_timestamp:
2278        {
2279            t=typeTimestamp();
2280            break;
2281        }
2282        case LITERAL_interval:
2283        {
2284            t=typeInterval();
2285            break;
2286        }
2287        default:
2288            boolean synPredMatched127 = false;
2289            if (((LA(1)==LITERAL_bit||LA(1)==LITERAL_varbinary) && (LA(2)==EOF||LA(2)==LITERAL_unique||LA(2)==LPAREN||LA(2)==RPAREN||LA(2)==LITERAL_constraint||LA(2)==LITERAL_primary||LA(2)==LITERAL_check||LA(2)==LITERAL_first||LA(2)==LITERAL_after||LA(2)==LITERAL_default||LA(2)==LITERAL_with||LA(2)==COMMA||LA(2)==LITERAL_references||LA(2)==LITERAL_not||LA(2)==LITERAL_varying))) {
2290                int _m127 = mark();
2291                synPredMatched127 = true;
2292                inputState.guessing++;
2293                try {
2294                    {
2295                    switch ( LA(1)) {
2296                    case LITERAL_bit:
2297                    {
2298                        match(LITERAL_bit);
2299                        match(LITERAL_varying);
2300                        break;
2301                    }
2302                    case LITERAL_varbinary:
2303                    {
2304                        match(LITERAL_varbinary);
2305                        break;
2306                    }
2307                    default:
2308                    {
2309                        throw new NoViableAltException(LT(1), getFilename());
2310                    }
2311                    }
2312                    }
2313                }
2314                catch (RecognitionException pe) {
2315                    synPredMatched127 = false;
2316                }
2317                rewind(_m127);
2318                inputState.guessing--;
2319            }
2320            if ( synPredMatched127 ) {
2321                t=typeVarBinary();
2322            }
2323            else {
2324                boolean synPredMatched129 = false;
2325                if (((LA(1)==LITERAL_bit||LA(1)==LITERAL_binary) && (LA(2)==EOF||LA(2)==LITERAL_unique||LA(2)==LPAREN||LA(2)==RPAREN||LA(2)==LITERAL_constraint||LA(2)==LITERAL_primary||LA(2)==LITERAL_check||LA(2)==LITERAL_first||LA(2)==LITERAL_after||LA(2)==LITERAL_default||LA(2)==LITERAL_with||LA(2)==COMMA||LA(2)==LITERAL_references||LA(2)==LITERAL_not))) {
2326                    int _m129 = mark();
2327                    synPredMatched129 = true;
2328                    inputState.guessing++;
2329                    try {
2330                        {
2331                        switch ( LA(1)) {
2332                        case LITERAL_bit:
2333                        {
2334                            match(LITERAL_bit);
2335                            break;
2336                        }
2337                        case LITERAL_binary:
2338                        {
2339                            match(LITERAL_binary);
2340                            break;
2341                        }
2342                        default:
2343                        {
2344                            throw new NoViableAltException(LT(1), getFilename());
2345                        }
2346                        }
2347                        }
2348                    }
2349                    catch (RecognitionException pe) {
2350                        synPredMatched129 = false;
2351                    }
2352                    rewind(_m129);
2353                    inputState.guessing--;
2354                }
2355                if ( synPredMatched129 ) {
2356                    t=typeBit();
2357                }
2358                else {
2359                    boolean synPredMatched131 = false;
2360                    if (((LA(1)==LITERAL_binary||LA(1)==LITERAL_blob) && (LA(2)==EOF||LA(2)==LITERAL_unique||LA(2)==LPAREN||LA(2)==RPAREN||LA(2)==LITERAL_constraint||LA(2)==LITERAL_primary||LA(2)==LITERAL_check||LA(2)==LITERAL_first||LA(2)==LITERAL_after||LA(2)==LITERAL_default||LA(2)==LITERAL_with||LA(2)==COMMA||LA(2)==LITERAL_references||LA(2)==LITERAL_not||LA(2)==LITERAL_large))) {
2361                        int _m131 = mark();
2362                        synPredMatched131 = true;
2363                        inputState.guessing++;
2364                        try {
2365                            {
2366                            switch ( LA(1)) {
2367                            case LITERAL_blob:
2368                            {
2369                                match(LITERAL_blob);
2370                                break;
2371                            }
2372                            case LITERAL_binary:
2373                            {
2374                                match(LITERAL_binary);
2375                                match(LITERAL_large);
2376                                match(LITERAL_object);
2377                                break;
2378                            }
2379                            default:
2380                            {
2381                                throw new NoViableAltException(LT(1), getFilename());
2382                            }
2383                            }
2384                            }
2385                        }
2386                        catch (RecognitionException pe) {
2387                            synPredMatched131 = false;
2388                        }
2389                        rewind(_m131);
2390                        inputState.guessing--;
2391                    }
2392                    if ( synPredMatched131 ) {
2393                        t=typeBlob();
2394                    }
2395                    else {
2396                        boolean synPredMatched133 = false;
2397                        if (((LA(1)==LITERAL_clob||LA(1)==LITERAL_character) && (LA(2)==EOF||LA(2)==LITERAL_unique||LA(2)==LPAREN||LA(2)==RPAREN||LA(2)==LITERAL_constraint||LA(2)==LITERAL_primary||LA(2)==LITERAL_check||LA(2)==LITERAL_first||LA(2)==LITERAL_after||LA(2)==LITERAL_default||LA(2)==LITERAL_with||LA(2)==COMMA||LA(2)==LITERAL_references||LA(2)==LITERAL_not||LA(2)==LITERAL_large))) {
2398                            int _m133 = mark();
2399                            synPredMatched133 = true;
2400                            inputState.guessing++;
2401                            try {
2402                                {
2403                                switch ( LA(1)) {
2404                                case LITERAL_clob:
2405                                {
2406                                    match(LITERAL_clob);
2407                                    break;
2408                                }
2409                                case LITERAL_character:
2410                                {
2411                                    match(LITERAL_character);
2412                                    match(LITERAL_large);
2413                                    match(LITERAL_object);
2414                                    break;
2415                                }
2416                                default:
2417                                {
2418                                    throw new NoViableAltException(LT(1), getFilename());
2419                                }
2420                                }
2421                                }
2422                            }
2423                            catch (RecognitionException pe) {
2424                                synPredMatched133 = false;
2425                            }
2426                            rewind(_m133);
2427                            inputState.guessing--;
2428                        }
2429                        if ( synPredMatched133 ) {
2430                            t=typeClob();
2431                        }
2432                        else {
2433                            boolean synPredMatched135 = false;
2434                            if ((((LA(1) >= LITERAL_character && LA(1) <= LITERAL_varchar)) && (LA(2)==EOF||LA(2)==LITERAL_unique||LA(2)==LPAREN||LA(2)==RPAREN||LA(2)==LITERAL_constraint||LA(2)==LITERAL_primary||LA(2)==LITERAL_check||LA(2)==LITERAL_first||LA(2)==LITERAL_after||LA(2)==LITERAL_default||LA(2)==LITERAL_with||LA(2)==COMMA||LA(2)==LITERAL_references||LA(2)==LITERAL_not||LA(2)==LITERAL_varying))) {
2435                                int _m135 = mark();
2436                                synPredMatched135 = true;
2437                                inputState.guessing++;
2438                                try {
2439                                    {
2440                                    switch ( LA(1)) {
2441                                    case LITERAL_char:
2442                                    {
2443                                        match(LITERAL_char);
2444                                        match(LITERAL_varying);
2445                                        break;
2446                                    }
2447                                    case LITERAL_character:
2448                                    {
2449                                        match(LITERAL_character);
2450                                        match(LITERAL_varying);
2451                                        break;
2452                                    }
2453                                    case LITERAL_varchar:
2454                                    {
2455                                        match(LITERAL_varchar);
2456                                        break;
2457                                    }
2458                                    default:
2459                                    {
2460                                        throw new NoViableAltException(LT(1), getFilename());
2461                                    }
2462                                    }
2463                                    }
2464                                }
2465                                catch (RecognitionException pe) {
2466                                    synPredMatched135 = false;
2467                                }
2468                                rewind(_m135);
2469                                inputState.guessing--;
2470                            }
2471                            if ( synPredMatched135 ) {
2472                                t=typeVarChar();
2473                            }
2474                            else {
2475                                boolean synPredMatched137 = false;
2476                                if (((LA(1)==LITERAL_character||LA(1)==LITERAL_char) && (LA(2)==EOF||LA(2)==LITERAL_unique||LA(2)==LPAREN||LA(2)==RPAREN||LA(2)==LITERAL_constraint||LA(2)==LITERAL_primary||LA(2)==LITERAL_check||LA(2)==LITERAL_first||LA(2)==LITERAL_after||LA(2)==LITERAL_default||LA(2)==LITERAL_with||LA(2)==COMMA||LA(2)==LITERAL_references||LA(2)==LITERAL_not))) {
2477                                    int _m137 = mark();
2478                                    synPredMatched137 = true;
2479                                    inputState.guessing++;
2480                                    try {
2481                                        {
2482                                        switch ( LA(1)) {
2483                                        case LITERAL_char:
2484                                        {
2485                                            match(LITERAL_char);
2486                                            break;
2487                                        }
2488                                        case LITERAL_character:
2489                                        {
2490                                            match(LITERAL_character);
2491                                            break;
2492                                        }
2493                                        default:
2494                                        {
2495                                            throw new NoViableAltException(LT(1), getFilename());
2496                                        }
2497                                        }
2498                                        }
2499                                    }
2500                                    catch (RecognitionException pe) {
2501                                        synPredMatched137 = false;
2502                                    }
2503                                    rewind(_m137);
2504                                    inputState.guessing--;
2505                                }
2506                                if ( synPredMatched137 ) {
2507                                    t=typeChar();
2508                                }
2509                            else {
2510                                throw new NoViableAltException(LT(1), getFilename());
2511                            }
2512                            }}}}}}
2513                            return t;
2514                        }
2515                        
2516    public final Constraint columnConstraint() throws RecognitionException, TokenStreamException {
2517        Constraint con;
2518        
2519        
2520            con = null;
2521            String JavaDoc name = null;
2522            int ref = 0;
2523            int def = 0;
2524            ImportedKeyConstraint fk = null;
2525            Expression predicate = null;
2526            String JavaDoc n;
2527            String JavaDoc id = null;
2528        
2529        
2530        {
2531        switch ( LA(1)) {
2532        case LITERAL_constraint:
2533        {
2534            match(LITERAL_constraint);
2535            name=sqlId();
2536            break;
2537        }
2538        case LITERAL_unique:
2539        case LITERAL_primary:
2540        case LITERAL_check:
2541        case LITERAL_with:
2542        case LITERAL_references:
2543        case LITERAL_not:
2544        {
2545            break;
2546        }
2547        default:
2548        {
2549            throw new NoViableAltException(LT(1), getFilename());
2550        }
2551        }
2552        }
2553        {
2554        switch ( LA(1)) {
2555        case LITERAL_not:
2556        {
2557            match(LITERAL_not);
2558            match(LITERAL_null);
2559            if ( inputState.guessing==0 ) {
2560                con = new NotNullConstraint(name);
2561            }
2562            break;
2563        }
2564        case LITERAL_unique:
2565        {
2566            match(LITERAL_unique);
2567            if ( inputState.guessing==0 ) {
2568                con = new UniqueConstraint(name);
2569            }
2570            break;
2571        }
2572        case LITERAL_primary:
2573        {
2574            match(LITERAL_primary);
2575            match(LITERAL_key);
2576            if ( inputState.guessing==0 ) {
2577                con = new PrimaryKeyConstraint(name);
2578            }
2579            break;
2580        }
2581        case LITERAL_references:
2582        {
2583            match(LITERAL_references);
2584            id=sqlId();
2585            if ( inputState.guessing==0 ) {
2586                
2587                            n = qConn.resolveName(id);
2588                            con = fk = new ImportedKeyConstraint(name, n);
2589                            
2590            }
2591            {
2592            switch ( LA(1)) {
2593            case LPAREN:
2594            {
2595                match(LPAREN);
2596                id=sqlId();
2597                if ( inputState.guessing==0 ) {
2598                    fk.setForeignColumn(id);
2599                }
2600                match(RPAREN);
2601                break;
2602            }
2603            case EOF:
2604            case LITERAL_unique:
2605            case LITERAL_on:
2606            case RPAREN:
2607            case LITERAL_constraint:
2608            case LITERAL_primary:
2609            case LITERAL_check:
2610            case LITERAL_first:
2611            case LITERAL_after:
2612            case LITERAL_default:
2613            case LITERAL_with:
2614            case COMMA:
2615            case LITERAL_references:
2616            case LITERAL_not:
2617            case LITERAL_match:
2618            case LITERAL_initially:
2619            case LITERAL_deferrable:
2620            {
2621                break;
2622            }
2623            default:
2624            {
2625                throw new NoViableAltException(LT(1), getFilename());
2626            }
2627            }
2628            }
2629            ref=referentialSpec();
2630            if ( inputState.guessing==0 ) {
2631                con.setRefSpec(ref);
2632            }
2633            break;
2634        }
2635        case LITERAL_check:
2636        {
2637            match(LITERAL_check);
2638            predicate=expression();
2639            if ( inputState.guessing==0 ) {
2640                con = new CheckConstraint(name, predicate);
2641            }
2642            break;
2643        }
2644        case LITERAL_with:
2645        {
2646            match(LITERAL_with);
2647            match(LITERAL_identity);
2648            if ( inputState.guessing==0 ) {
2649                con = new AutoNumberConstraint(name);
2650            }
2651            break;
2652        }
2653        default:
2654        {
2655            throw new NoViableAltException(LT(1), getFilename());
2656        }
2657        }
2658        }
2659        {
2660        boolean synPredMatched108 = false;
2661        if (((LA(1)==EOF||LA(1)==LITERAL_unique||LA(1)==RPAREN||LA(1)==LITERAL_constraint||LA(1)==LITERAL_primary||LA(1)==LITERAL_check||LA(1)==LITERAL_first||LA(1)==LITERAL_after||LA(1)==LITERAL_default||LA(1)==LITERAL_with||LA(1)==COMMA||LA(1)==LITERAL_references||LA(1)==LITERAL_not) && (LA(2)==EOF||LA(2)==LITERAL_create||LA(2)==LITERAL_unique||LA(2)==LPAREN||LA(2)==RPAREN||LA(2)==LITERAL_constraint||LA(2)==LITERAL_primary||LA(2)==LITERAL_foreign||LA(2)==LITERAL_check||LA(2)==LITERAL_first||LA(2)==LITERAL_after||LA(2)==LITERAL_default||LA(2)==LITERAL_with||LA(2)==COMMA||LA(2)==LITERAL_grant||LA(2)==LITERAL_insert||LA(2)==LITERAL_references||LA(2)==LITERAL_not||LA(2)==LITERAL_null||LA(2)==LITERAL_key||LA(2)==LITERAL_identity||LA(2)==LITERAL_initially||LA(2)==LITERAL_deferrable||LA(2)==LITERAL_char||LA(2)==LITERAL_date||LA(2)==LITERAL_time||LA(2)==LITERAL_timestamp||LA(2)==LITERAL_interval||LA(2)==LITERAL_exists||LA(2)==PLUS||LA(2)==MINUS||LA(2)==STRING_LITERAL||LA(2)==QUESTION||LA(2)==INT||LA(2)==REAL||LA(2)==BINSTR||LA(2)==HEXSTR||LA(2)==LITERAL_case||LA(2)==LITERAL_hour||LA(2)==LITERAL_left||LA(2)==LITERAL_minute||LA(2)==LITERAL_month||LA(2)==LITERAL_right||LA(2)==LITERAL_second||LA(2)==LITERAL_year||LA(2)==LITERAL_user||LA(2)==LITERAL_current_user||LA(2)==LITERAL_session_user||LA(2)==LITERAL_system_user||LA(2)==LITERAL_current_date||LA(2)==LITERAL_current_time||LA(2)==LITERAL_current_timestamp||LA(2)==LITERAL_sql_tsi_frac_second||LA(2)==LITERAL_sql_tsi_second||LA(2)==LITERAL_sql_tsi_minute||LA(2)==LITERAL_sql_tsi_hour||LA(2)==LITERAL_sql_tsi_day||LA(2)==LITERAL_sql_tsi_week||LA(2)==LITERAL_sql_tsi_month||LA(2)==LITERAL_sql_tsi_quarter||LA(2)==LITERAL_sql_tsi_year||LA(2)==LITERAL_cast||LA(2)==LITERAL_true||LA(2)==LITERAL_false||LA(2)==LITERAL_avg||LA(2)==LITERAL_min||LA(2)==LITERAL_max||LA(2)==LITERAL_sum||LA(2)==LITERAL_count||LA(2)==ID))) {
2662            int _m108 = mark();
2663            synPredMatched108 = true;
2664            inputState.guessing++;
2665            try {
2666                {
2667                match(LITERAL_not);
2668                match(LITERAL_null);
2669                }
2670            }
2671            catch (RecognitionException pe) {
2672                synPredMatched108 = false;
2673            }
2674            rewind(_m108);
2675            inputState.guessing--;
2676        }
2677        if ( synPredMatched108 ) {
2678        }
2679        else if ((LA(1)==EOF||LA(1)==LITERAL_unique||LA(1)==RPAREN||LA(1)==LITERAL_constraint||LA(1)==LITERAL_primary||LA(1)==LITERAL_check||LA(1)==LITERAL_first||LA(1)==LITERAL_after||LA(1)==LITERAL_default||LA(1)==LITERAL_with||LA(1)==COMMA||LA(1)==LITERAL_references||LA(1)==LITERAL_not||LA(1)==LITERAL_initially||LA(1)==LITERAL_deferrable) && (LA(2)==EOF||LA(2)==LITERAL_create||LA(2)==LITERAL_unique||LA(2)==LPAREN||LA(2)==RPAREN||LA(2)==LITERAL_constraint||LA(2)==LITERAL_primary||LA(2)==LITERAL_foreign||LA(2)==LITERAL_check||LA(2)==LITERAL_first||LA(2)==LITERAL_after||LA(2)==LITERAL_default||LA(2)==LITERAL_with||LA(2)==COMMA||LA(2)==LITERAL_grant||LA(2)==LITERAL_insert||LA(2)==LITERAL_references||LA(2)==LITERAL_not||LA(2)==LITERAL_null||LA(2)==LITERAL_key||LA(2)==LITERAL_identity||LA(2)==LITERAL_initially||LA(2)==LITERAL_deferred||LA(2)==LITERAL_immediate||LA(2)==LITERAL_deferrable||LA(2)==LITERAL_char||LA(2)==LITERAL_date||LA(2)==LITERAL_time||LA(2)==LITERAL_timestamp||LA(2)==LITERAL_interval||LA(2)==LITERAL_exists||LA(2)==PLUS||LA(2)==MINUS||LA(2)==STRING_LITERAL||LA(2)==QUESTION||LA(2)==INT||LA(2)==REAL||LA(2)==BINSTR||LA(2)==HEXSTR||LA(2)==LITERAL_case||LA(2)==LITERAL_hour||LA(2)==LITERAL_left||LA(2)==LITERAL_minute||LA(2)==LITERAL_month||LA(2)==LITERAL_right||LA(2)==LITERAL_second||LA(2)==LITERAL_year||LA(2)==LITERAL_user||LA(2)==LITERAL_current_user||LA(2)==LITERAL_session_user||LA(2)==LITERAL_system_user||LA(2)==LITERAL_current_date||LA(2)==LITERAL_current_time||LA(2)==LITERAL_current_timestamp||LA(2)==LITERAL_sql_tsi_frac_second||LA(2)==LITERAL_sql_tsi_second||LA(2)==LITERAL_sql_tsi_minute||LA(2)==LITERAL_sql_tsi_hour||LA(2)==LITERAL_sql_tsi_day||LA(2)==LITERAL_sql_tsi_week||LA(2)==LITERAL_sql_tsi_month||LA(2)==LITERAL_sql_tsi_quarter||LA(2)==LITERAL_sql_tsi_year||LA(2)==LITERAL_cast||LA(2)==LITERAL_true||LA(2)==LITERAL_false||LA(2)==LITERAL_avg||LA(2)==LITERAL_min||LA(2)==LITERAL_max||LA(2)==LITERAL_sum||LA(2)==LITERAL_count||LA(2)==ID)) {
2680            def=deferrableSpec();
2681            if ( inputState.guessing==0 ) {
2682                con.setDeferrable(def);
2683            }
2684        }
2685        else {
2686            throw new NoViableAltException(LT(1), getFilename());
2687        }
2688        
2689        }
2690        return con;
2691    }
2692    
2693    public final int referentialSpec() throws RecognitionException, TokenStreamException {
2694        int ref;
2695        
2696        
2697            ref = 0;
2698            int type = 0;
2699        
2700        
2701        {
2702        _loop119:
2703        do {
2704            switch ( LA(1)) {
2705            case LITERAL_match:
2706            {
2707                match(LITERAL_match);
2708                {
2709                switch ( LA(1)) {
2710                case LITERAL_full:
2711                {
2712                    match(LITERAL_full);
2713                    if ( inputState.guessing==0 ) {
2714                        ref |= Constraint.FULL;
2715                    }
2716                    break;
2717                }
2718                case LITERAL_partial:
2719                {
2720                    match(LITERAL_partial);
2721                    if ( inputState.guessing==0 ) {
2722                        ref |= Constraint.PARTIAL;
2723                    }
2724                    break;
2725                }
2726                default:
2727                {
2728                    throw new NoViableAltException(LT(1), getFilename());
2729                }
2730                }
2731                }
2732                break;
2733            }
2734            case LITERAL_on:
2735            {
2736                match(LITERAL_on);
2737                {
2738                switch ( LA(1)) {
2739                case LITERAL_update:
2740                {
2741                    match(LITERAL_update);
2742                    if ( inputState.guessing==0 ) {
2743                        type = Constraint.UPDATE;
2744                    }
2745                    break;
2746                }
2747                case LITERAL_delete:
2748                {
2749                    match(LITERAL_delete);
2750                    if ( inputState.guessing==0 ) {
2751                        type = Constraint.DELETE;
2752                    }
2753                    break;
2754                }
2755                default:
2756                {
2757                    throw new NoViableAltException(LT(1), getFilename());
2758                }
2759                }
2760                }
2761                {
2762                switch ( LA(1)) {
2763                case LITERAL_cascade:
2764                {
2765                    match(LITERAL_cascade);
2766                    if ( inputState.guessing==0 ) {
2767                        ref |= (Constraint.CASCADE << type);
2768                    }
2769                    break;
2770                }
2771                case LITERAL_set:
2772                {
2773                    match(LITERAL_set);
2774                    {
2775                    switch ( LA(1)) {
2776                    case LITERAL_null:
2777                    {
2778                        match(LITERAL_null);
2779                        if ( inputState.guessing==0 ) {
2780                            ref |= (Constraint.SETNULL << type);
2781                        }
2782                        break;
2783                    }
2784                    case LITERAL_default:
2785                    {
2786                        match(LITERAL_default);
2787                        if ( inputState.guessing==0 ) {
2788                            ref |= (Constraint.SETDEFAULT << type);
2789                        }
2790                        break;
2791                    }
2792                    default:
2793                    {
2794                        throw new NoViableAltException(LT(1), getFilename());
2795                    }
2796                    }
2797                    }
2798                    break;
2799                }
2800                case LITERAL_no:
2801                {
2802                    match(LITERAL_no);
2803                    match(LITERAL_action);
2804                    if ( inputState.guessing==0 ) {
2805                        ref |= (Constraint.NOACTION << type);
2806                    }
2807                    break;
2808                }
2809                default:
2810                {
2811                    throw new NoViableAltException(LT(1), getFilename());
2812                }
2813                }
2814                }
2815                break;
2816            }
2817            default:
2818            {
2819                break _loop119;
2820            }
2821            }
2822        } while (true);
2823        }
2824        return ref;
2825    }
2826    
2827    public final int deferrableSpec() throws RecognitionException, TokenStreamException {
2828        int def;
2829        
2830        
2831            def = 0;
2832        
2833        
2834        {
2835        switch ( LA(1)) {
2836        case LITERAL_initially:
2837        {
2838            match(LITERAL_initially);
2839            {
2840            switch ( LA(1)) {
2841            case LITERAL_deferred:
2842            {
2843                match(LITERAL_deferred);
2844                if ( inputState.guessing==0 ) {
2845                    def |= Constraint.INIT_DEFERRED;
2846                }
2847                break;
2848            }
2849            case LITERAL_immediate:
2850            {
2851                match(LITERAL_immediate);
2852                break;
2853            }
2854            default:
2855            {
2856                throw new NoViableAltException(LT(1), getFilename());
2857            }
2858            }
2859            }
2860            break;
2861        }
2862        case LITERAL_deferrable:
2863        {
2864            match(LITERAL_deferrable);
2865            if ( inputState.guessing==0 ) {
2866                def |= Constraint.DEFERRABLE;
2867            }
2868            break;
2869        }
2870        default:
2871            boolean synPredMatched124 = false;
2872            if (((LA(1)==LITERAL_not) && (LA(2)==LITERAL_deferrable))) {
2873                int _m124 = mark();
2874                synPredMatched124 = true;
2875                inputState.guessing++;
2876                try {
2877                    {
2878                    match(LITERAL_not);
2879                    match(LITERAL_deferrable);
2880                    }
2881                }
2882                catch (RecognitionException pe) {
2883                    synPredMatched124 = false;
2884                }
2885                rewind(_m124);
2886                inputState.guessing--;
2887            }
2888            if ( synPredMatched124 ) {
2889                match(LITERAL_not);
2890                match(LITERAL_deferrable);
2891            }
2892            else if ((LA(1)==EOF||LA(1)==LITERAL_unique||LA(1)==RPAREN||LA(1)==LITERAL_constraint||LA(1)==LITERAL_primary||LA(1)==LITERAL_check||LA(1)==LITERAL_first||LA(1)==LITERAL_after||LA(1)==LITERAL_default||LA(1)==LITERAL_with||LA(1)==COMMA||LA(1)==LITERAL_references||LA(1)==LITERAL_not) && (LA(2)==EOF||LA(2)==LITERAL_create||LA(2)==LITERAL_unique||LA(2)==LPAREN||LA(2)==RPAREN||LA(2)==LITERAL_constraint||LA(2)==LITERAL_primary||LA(2)==LITERAL_foreign||LA(2)==LITERAL_check||LA(2)==LITERAL_first||LA(2)==LITERAL_after||LA(2)==LITERAL_default||LA(2)==LITERAL_with||LA(2)==COMMA||LA(2)==LITERAL_grant||LA(2)==LITERAL_insert||LA(2)==LITERAL_references||LA(2)==LITERAL_not||LA(2)==LITERAL_null||LA(2)==LITERAL_key||LA(2)==LITERAL_identity||LA(2)==LITERAL_initially||LA(2)==LITERAL_deferrable||LA(2)==LITERAL_char||LA(2)==LITERAL_date||LA(2)==LITERAL_time||LA(2)==LITERAL_timestamp||LA(2)==LITERAL_interval||LA(2)==LITERAL_exists||LA(2)==PLUS||LA(2)==MINUS||LA(2)==STRING_LITERAL||LA(2)==QUESTION||LA(2)==INT||LA(2)==REAL||LA(2)==BINSTR||LA(2)==HEXSTR||LA(2)==LITERAL_case||LA(2)==LITERAL_hour||LA(2)==LITERAL_left||LA(2)==LITERAL_minute||LA(2)==LITERAL_month||LA(2)==LITERAL_right||LA(2)==LITERAL_second||LA(2)==LITERAL_year||LA(2)==LITERAL_user||LA(2)==LITERAL_current_user||LA(2)==LITERAL_session_user||LA(2)==LITERAL_system_user||LA(2)==LITERAL_current_date||LA(2)==LITERAL_current_time||LA(2)==LITERAL_current_timestamp||LA(2)==LITERAL_sql_tsi_frac_second||LA(2)==LITERAL_sql_tsi_second||LA(2)==LITERAL_sql_tsi_minute||LA(2)==LITERAL_sql_tsi_hour||LA(2)==LITERAL_sql_tsi_day||LA(2)==LITERAL_sql_tsi_week||LA(2)==LITERAL_sql_tsi_month||LA(2)==LITERAL_sql_tsi_quarter||LA(2)==LITERAL_sql_tsi_year||LA(2)==LITERAL_cast||LA(2)==LITERAL_true||LA(2)==LITERAL_false||LA(2)==LITERAL_avg||LA(2)==LITERAL_min||LA(2)==LITERAL_max||LA(2)==LITERAL_sum||LA(2)==LITERAL_count||LA(2)==ID)) {
2893            }
2894        else {
2895            throw new NoViableAltException(LT(1), getFilename());
2896        }
2897        }
2898        }
2899        return def;
2900    }
2901    
2902    public final Type typeInt() throws RecognitionException, TokenStreamException {
2903        Type t;
2904        
2905        
2906            t = null;
2907        
2908        
2909        {
2910        switch ( LA(1)) {
2911        case LITERAL_int:
2912        {
2913            match(LITERAL_int);
2914            break;
2915        }
2916        case LITERAL_integer:
2917        {
2918            match(LITERAL_integer);
2919            break;
2920        }
2921        default:
2922        {
2923            throw new NoViableAltException(LT(1), getFilename());
2924        }
2925        }
2926        }
2927        if ( inputState.guessing==0 ) {
2928            t = TypeInt.typeInt;
2929        }
2930        return t;
2931    }
2932    
2933    public final Type typeTinyInt() throws RecognitionException, TokenStreamException {
2934        Type t;
2935        
2936        
2937            t = null;
2938        
2939        
2940        match(LITERAL_tinyint);
2941        if ( inputState.guessing==0 ) {
2942            t = TypeTinyInt.typeTinyInt;
2943        }
2944        return t;
2945    }
2946    
2947    public final Type typeSmallInt() throws RecognitionException, TokenStreamException {
2948        Type t;
2949        
2950        
2951            t = null;
2952        
2953        
2954        match(LITERAL_smallint);
2955        if ( inputState.guessing==0 ) {
2956            t = TypeSmallInt.typeSmallInt;
2957        }
2958        return t;
2959    }
2960    
2961    public final Type typeBigInt() throws RecognitionException, TokenStreamException {
2962        Type t;
2963        
2964        
2965            t = null;
2966        
2967        
2968        match(LITERAL_bigint);
2969        if ( inputState.guessing==0 ) {
2970            t = TypeBigInt.typeBigInt;
2971        }
2972        return t;
2973    }
2974    
2975    public final Type typeDecimal() throws RecognitionException, TokenStreamException {
2976        Type t;
2977        
2978        
2979            t = null;
2980            int max = 18;
2981            int scale = 0;
2982        
2983        
2984        {
2985        switch ( LA(1)) {
2986        case LITERAL_dec:
2987        {
2988            match(LITERAL_dec);
2989            break;
2990        }
2991        case LITERAL_decimal:
2992        {
2993            match(LITERAL_decimal);
2994            break;
2995        }
2996        case LITERAL_numeric:
2997        {
2998            match(LITERAL_numeric);
2999            break;
3000        }
3001        default:
3002        {
3003            throw new NoViableAltException(LT(1), getFilename());
3004        }
3005        }
3006        }
3007        {
3008        switch ( LA(1)) {
3009        case LPAREN:
3010        {
3011            match(LPAREN);
3012            max=integer();
3013            {
3014            switch ( LA(1)) {
3015            case COMMA:
3016            {
3017                match(COMMA);
3018                scale=integer();
3019                break;
3020            }
3021            case RPAREN:
3022            {
3023                break;
3024            }
3025            default:
3026            {
3027                throw new NoViableAltException(LT(1), getFilename());
3028            }
3029            }
3030            }
3031            match(RPAREN);
3032            break;
3033        }
3034        case EOF:
3035        case LITERAL_unique:
3036        case RPAREN:
3037        case LITERAL_constraint:
3038        case LITERAL_primary:
3039        case LITERAL_check:
3040        case LITERAL_first:
3041        case LITERAL_after:
3042        case LITERAL_default:
3043        case LITERAL_with:
3044        case COMMA:
3045        case LITERAL_references:
3046        case LITERAL_not:
3047        {
3048            break;
3049        }
3050        default:
3051        {
3052            throw new NoViableAltException(LT(1), getFilename());
3053        }
3054        }
3055        }
3056        if ( inputState.guessing==0 ) {
3057            t = new TypeDecimal(max, scale);
3058        }
3059        return t;
3060    }
3061    
3062    public final Type typeReal() throws RecognitionException, TokenStreamException {
3063        Type t;
3064        
3065        
3066            t = null;
3067        
3068        
3069        match(LITERAL_real);
3070        if ( inputState.guessing==0 ) {
3071            t = TypeReal.typeReal;
3072        }
3073        return t;
3074    }
3075    
3076    public final Type typeDouble() throws RecognitionException, TokenStreamException {
3077        Type t;
3078        
3079        
3080            t = null;
3081        
3082        
3083        match(LITERAL_double);
3084        match(LITERAL_precision);
3085        if ( inputState.guessing==0 ) {
3086            t = TypeReal.typeDouble;
3087        }
3088        return t;
3089    }
3090    
3091    public final Type typeFloat() throws RecognitionException, TokenStreamException {
3092        Type t;
3093        
3094        
3095            t = null;
3096            int precision = 23;
3097        
3098        
3099        match(LITERAL_float);
3100        {
3101        switch ( LA(1)) {
3102        case LPAREN:
3103        {
3104            match(LPAREN);
3105            precision=integer();
3106            match(RPAREN);
3107            break;
3108        }
3109        case EOF:
3110        case LITERAL_unique:
3111        case RPAREN:
3112        case LITERAL_constraint:
3113        case LITERAL_primary:
3114        case LITERAL_check:
3115        case LITERAL_first:
3116        case LITERAL_after:
3117        case LITERAL_default:
3118        case LITERAL_with:
3119        case COMMA:
3120        case LITERAL_references:
3121        case LITERAL_not:
3122        {
3123            break;
3124        }
3125        default:
3126        {
3127            throw new NoViableAltException(LT(1), getFilename());
3128        }
3129        }
3130        }
3131        if ( inputState.guessing==0 ) {
3132            t = new TypeReal(Types.FLOAT,
3133                                           precision);
3134        }
3135        return t;
3136    }
3137    
3138    public final Type typeBoolean() throws RecognitionException, TokenStreamException {
3139        Type t;
3140        
3141        
3142            t = null;
3143            int max = 1;
3144        
3145        
3146        match(LITERAL_boolean);
3147        if ( inputState.guessing==0 ) {
3148            t = TypeBoolean.typeBoolean;
3149        }
3150        return t;
3151    }
3152    
3153    public final Type typeVarBinary() throws RecognitionException, TokenStreamException {
3154        Type t;
3155        
3156        
3157            t = null;
3158            int max = -1;
3159        
3160        
3161        {
3162        switch ( LA(1)) {
3163        case LITERAL_bit:
3164        {
3165            match(LITERAL_bit);
3166            match(LITERAL_varying);
3167            break;
3168        }
3169        case LITERAL_varbinary:
3170        {
3171            match(LITERAL_varbinary);
3172            break;
3173        }
3174        default:
3175        {
3176            throw new NoViableAltException(LT(1), getFilename());
3177        }
3178        }
3179        }
3180        {
3181        switch ( LA(1)) {
3182        case LPAREN:
3183        {
3184            match(LPAREN);
3185            max=integer();
3186            match(RPAREN);
3187            break;
3188        }
3189        case EOF:
3190        case LITERAL_unique:
3191        case RPAREN:
3192        case LITERAL_constraint:
3193        case LITERAL_primary:
3194        case LITERAL_check:
3195        case LITERAL_first:
3196        case LITERAL_after:
3197        case LITERAL_default:
3198        case LITERAL_with:
3199        case COMMA:
3200        case LITERAL_references:
3201        case LITERAL_not:
3202        {
3203            break;
3204        }
3205        default:
3206        {
3207            throw new NoViableAltException(LT(1), getFilename());
3208        }
3209        }
3210        }
3211        if ( inputState.guessing==0 ) {
3212            t = new TypeVarBinary(max);
3213        }
3214        return t;
3215    }
3216    
3217    public final Type typeBit() throws RecognitionException, TokenStreamException {
3218        Type t;
3219        
3220        
3221            t = null;
3222            int max = 1;
3223        
3224        
3225        {
3226        switch ( LA(1)) {
3227        case LITERAL_bit:
3228        {
3229            match(LITERAL_bit);
3230            break;
3231        }
3232        case LITERAL_binary:
3233        {
3234            match(LITERAL_binary);
3235            break;
3236        }
3237        default:
3238        {
3239            throw new NoViableAltException(LT(1), getFilename());
3240        }
3241        }
3242        }
3243        {
3244        switch ( LA(1)) {
3245        case LPAREN:
3246        {
3247            match(LPAREN);
3248            max=integer();
3249            match(RPAREN);
3250            break;
3251        }
3252        case EOF:
3253        case LITERAL_unique:
3254        case RPAREN:
3255        case LITERAL_constraint:
3256        case LITERAL_primary:
3257        case LITERAL_check:
3258        case LITERAL_first:
3259        case LITERAL_after:
3260        case LITERAL_default:
3261        case LITERAL_with:
3262        case COMMA:
3263        case LITERAL_references:
3264        case LITERAL_not:
3265        {
3266            break;
3267        }
3268        default:
3269        {
3270            throw new NoViableAltException(LT(1), getFilename());
3271        }
3272        }
3273        }
3274        if ( inputState.guessing==0 ) {
3275            t = new TypeBinary(max);
3276        }
3277        return t;
3278    }
3279    
3280    public final Type typeBlob() throws RecognitionException, TokenStreamException {
3281        Type t;
3282        
3283        
3284            t = null;
3285            int max = 1;
3286        
3287        
3288        {
3289        switch ( LA(1)) {
3290        case LITERAL_blob:
3291        {
3292            match(LITERAL_blob);
3293            break;
3294        }
3295        case LITERAL_binary:
3296        {
3297            match(LITERAL_binary);
3298            match(LITERAL_large);
3299            match(LITERAL_object);
3300            break;
3301        }
3302        default:
3303        {
3304            throw new NoViableAltException(LT(1), getFilename());
3305        }
3306        }
3307        }
3308        {
3309        switch ( LA(1)) {
3310        case LPAREN:
3311        {
3312            match(LPAREN);
3313            max=integer();
3314            match(RPAREN);
3315            break;
3316        }
3317        case EOF:
3318        case LITERAL_unique:
3319        case RPAREN:
3320        case LITERAL_constraint:
3321        case LITERAL_primary:
3322        case LITERAL_check:
3323        case LITERAL_first:
3324        case LITERAL_after:
3325        case LITERAL_default:
3326        case LITERAL_with:
3327        case COMMA:
3328        case LITERAL_references:
3329        case LITERAL_not:
3330        {
3331            break;
3332        }
3333        default:
3334        {
3335            throw new NoViableAltException(LT(1), getFilename());
3336        }
3337        }
3338        }
3339        if ( inputState.guessing==0 ) {
3340            t = new TypeBlob(max);
3341        }
3342        return t;
3343    }
3344    
3345    public final Type typeClob() throws RecognitionException, TokenStreamException {
3346        Type t;
3347        
3348        
3349            t = null;
3350            int max = 1;
3351        
3352        
3353        {
3354        switch ( LA(1)) {
3355        case LITERAL_clob:
3356        {
3357            match(LITERAL_clob);
3358            break;
3359        }
3360        case LITERAL_character:
3361        {
3362            match(LITERAL_character);
3363            match(LITERAL_large);
3364            match(LITERAL_object);
3365            break;
3366        }
3367        default:
3368        {
3369            throw new NoViableAltException(LT(1), getFilename());
3370        }
3371        }
3372        }
3373        {
3374        switch ( LA(1)) {
3375        case LPAREN:
3376        {
3377            match(LPAREN);
3378            max=integer();
3379            match(RPAREN);
3380            break;
3381        }
3382        case EOF:
3383        case LITERAL_unique:
3384        case RPAREN:
3385        case LITERAL_constraint:
3386        case LITERAL_primary:
3387        case LITERAL_check:
3388        case LITERAL_first:
3389        case LITERAL_after:
3390        case LITERAL_default:
3391        case LITERAL_with:
3392        case COMMA:
3393        case LITERAL_references:
3394        case LITERAL_not:
3395        {
3396            break;
3397        }
3398        default:
3399        {
3400            throw new NoViableAltException(LT(1), getFilename());
3401        }
3402        }
3403        }
3404        if ( inputState.guessing==0 ) {
3405            t = new TypeClob(max);
3406        }
3407        return t;
3408    }
3409    
3410    public final Type typeVarChar() throws RecognitionException, TokenStreamException {
3411        Type t;
3412        
3413        
3414            t = null;
3415            int max = 1;
3416        
3417        
3418        {
3419        switch ( LA(1)) {
3420        case LITERAL_char:
3421        {
3422            match(LITERAL_char);
3423            match(LITERAL_varying);
3424            break;
3425        }
3426        case LITERAL_character:
3427        {
3428            match(LITERAL_character);
3429            match(LITERAL_varying);
3430            break;
3431        }
3432        case LITERAL_varchar:
3433        {
3434            match(LITERAL_varchar);
3435            break;
3436        }
3437        default:
3438        {
3439            throw new NoViableAltException(LT(1), getFilename());
3440        }
3441        }
3442        }
3443        {
3444        switch ( LA(1)) {
3445        case LPAREN:
3446        {
3447            match(LPAREN);
3448            max=integer();
3449            match(RPAREN);
3450            break;
3451        }
3452        case EOF:
3453        case LITERAL_unique:
3454        case RPAREN:
3455        case LITERAL_constraint:
3456        case LITERAL_primary:
3457        case LITERAL_check:
3458        case LITERAL_first:
3459        case LITERAL_after:
3460        case LITERAL_default:
3461        case LITERAL_with:
3462        case COMMA:
3463        case LITERAL_references:
3464        case LITERAL_not:
3465        {
3466            break;
3467        }
3468        default:
3469        {
3470            throw new NoViableAltException(LT(1), getFilename());
3471        }
3472        }
3473        }
3474        if ( inputState.guessing==0 ) {
3475            t = new TypeVarChar(max);
3476        }
3477        return t;
3478    }
3479    
3480    public final Type typeChar() throws RecognitionException, TokenStreamException {
3481        Type t;
3482        
3483        
3484            t = null;
3485            int max = 1;
3486        
3487        
3488        {
3489        switch ( LA(1)) {
3490        case LITERAL_char:
3491        {
3492            match(LITERAL_char);
3493            break;
3494        }
3495        case LITERAL_character:
3496        {
3497            match(LITERAL_character);
3498            break;
3499        }
3500        default:
3501        {
3502            throw new NoViableAltException(LT(1), getFilename());
3503        }
3504        }
3505        }
3506        {
3507        switch ( LA(1)) {
3508        case LPAREN:
3509        {
3510            match(LPAREN);
3511            max=integer();
3512            match(RPAREN);
3513            break;
3514        }
3515        case EOF:
3516        case LITERAL_unique:
3517        case RPAREN:
3518        case LITERAL_constraint:
3519        case LITERAL_primary:
3520        case LITERAL_check:
3521        case LITERAL_first:
3522        case LITERAL_after:
3523        case LITERAL_default:
3524        case LITERAL_with:
3525        case COMMA:
3526        case LITERAL_references:
3527        case LITERAL_not:
3528        {
3529            break;
3530        }
3531        default:
3532        {
3533            throw new NoViableAltException(LT(1), getFilename());
3534        }
3535        }
3536        }
3537        if ( inputState.guessing==0 ) {
3538            t = new TypeChar(max);
3539        }
3540        return t;
3541    }
3542    
3543    public final Type typeDate() throws RecognitionException, TokenStreamException {
3544        Type t;
3545        
3546        
3547            t = null;
3548        
3549        
3550        match(LITERAL_date);
3551        if ( inputState.guessing==0 ) {
3552            t = TypeDate.typeDate;
3553        }
3554        return t;
3555    }
3556    
3557    public final Type typeTime() throws RecognitionException, TokenStreamException {
3558        Type t;
3559        
3560        
3561            t = null;
3562            int precision = 0;
3563            boolean tz = false;
3564        
3565        
3566        match(LITERAL_time);
3567        {
3568        switch ( LA(1)) {
3569        case LPAREN:
3570        {
3571            match(LPAREN);
3572            precision=integer();
3573            match(RPAREN);
3574            break;
3575        }
3576        case EOF:
3577        case LITERAL_unique:
3578        case RPAREN:
3579        case LITERAL_constraint:
3580        case LITERAL_primary:
3581        case LITERAL_check:
3582        case LITERAL_first:
3583        case LITERAL_after:
3584        case LITERAL_default:
3585        case LITERAL_with:
3586        case COMMA:
3587        case LITERAL_references:
3588        case LITERAL_not:
3589        {
3590            break;
3591        }
3592        default:
3593        {
3594            throw new NoViableAltException(LT(1), getFilename());
3595        }
3596        }
3597        }
3598        {
3599        if ((LA(1)==LITERAL_with) && (LA(2)==LITERAL_time)) {
3600            match(LITERAL_with);
3601            match(LITERAL_time);
3602            match(LITERAL_zone);
3603            if ( inputState.guessing==0 ) {
3604                tz = true;
3605            }
3606        }
3607        else if ((LA(1)==EOF||LA(1)==LITERAL_unique||LA(1)==RPAREN||LA(1)==LITERAL_constraint||LA(1)==LITERAL_primary||LA(1)==LITERAL_check||LA(1)==LITERAL_first||LA(1)==LITERAL_after||LA(1)==LITERAL_default||LA(1)==LITERAL_with||LA(1)==COMMA||LA(1)==LITERAL_references||LA(1)==LITERAL_not) && (LA(2)==EOF||LA(2)==LITERAL_create||LA(2)==LITERAL_unique||LA(2)==LITERAL_on||LA(2)==LPAREN||LA(2)==RPAREN||LA(2)==LITERAL_constraint||LA(2)==LITERAL_primary||LA(2)==LITERAL_foreign||LA(2)==LITERAL_check||LA(2)==LITERAL_first||LA(2)==LITERAL_after||LA(2)==LITERAL_default||LA(2)==LITERAL_as||LA(2)==LITERAL_with||LA(2)==COMMA||LA(2)==LITERAL_where||LA(2)==EQ||LA(2)==LITERAL_from||LA(2)==LITERAL_grant||LA(2)==LITERAL_insert||LA(2)==LITERAL_references||LA(2)==LITERAL_not||LA(2)==LITERAL_null||LA(2)==LITERAL_key||LA(2)==LITERAL_identity||LA(2)==LITERAL_full||LA(2)==LITERAL_initially||LA(2)==LITERAL_deferrable||LA(2)==LITERAL_char||LA(2)==LITERAL_date||LA(2)==LITERAL_time||LA(2)==LITERAL_timestamp||LA(2)==LITERAL_interval||LA(2)==LITERAL_for||LA(2)==LITERAL_order||LA(2)==STAR||LA(2)==LITERAL_having||LA(2)==LITERAL_using||LA(2)==LITERAL_group||LA(2)==CONCAT||LA(2)==LITERAL_or||LA(2)==LITERAL_and||LA(2)==LITERAL_is||LA(2)==LITERAL_like||LA(2)==LITERAL_between||LA(2)==LITERAL_in||LA(2)==LITERAL_exists||LA(2)==LITERAL_escape||LA(2)==120||LA(2)==PLUS||LA(2)==MINUS||LA(2)==STRING_LITERAL||LA(2)==QUESTION||LA(2)==INT||LA(2)==REAL||LA(2)==BINSTR||LA(2)==HEXSTR||LA(2)==LITERAL_case||LA(2)==LITERAL_when||LA(2)==LITERAL_then||LA(2)==LITERAL_else||LA(2)==LITERAL_end||LA(2)==LITERAL_hour||LA(2)==LITERAL_left||LA(2)==LITERAL_minute||LA(2)==LITERAL_month||LA(2)==LITERAL_right||LA(2)==LITERAL_second||LA(2)==LITERAL_year||LA(2)==LITERAL_user||LA(2)==LITERAL_current_user||LA(2)==LITERAL_session_user||LA(2)==LITERAL_system_user||LA(2)==LITERAL_current_date||LA(2)==LITERAL_current_time||LA(2)==LITERAL_current_timestamp||LA(2)==LITERAL_sql_tsi_frac_second||LA(2)==LITERAL_sql_tsi_second||LA(2)==LITERAL_sql_tsi_minute||LA(2)==LITERAL_sql_tsi_hour||LA(2)==LITERAL_sql_tsi_day||LA(2)==LITERAL_sql_tsi_week||LA(2)==LITERAL_sql_tsi_month||LA(2)==LITERAL_sql_tsi_quarter||LA(2)==LITERAL_sql_tsi_year||LA(2)==LITERAL_cast||LA(2)==LITERAL_true||LA(2)==LITERAL_false||LA(2)==LITERAL_avg||LA(2)==LITERAL_min||LA(2)==LITERAL_max||LA(2)==LITERAL_sum||LA(2)==LITERAL_count||LA(2)==LT||LA(2)==LE||LA(2)==GT||LA(2)==GE||LA(2)==NE||LA(2)==SLASH||LA(2)==LITERAL_cross||LA(2)==LITERAL_join||LA(2)==LITERAL_natural||LA(2)==LITERAL_union||LA(2)==LITERAL_inner||LA(2)==LITERAL_intersect||LA(2)==LITERAL_except||LA(2)==ID)) {
3608        }
3609        else {
3610            throw new NoViableAltException(LT(1), getFilename());
3611        }
3612        
3613        }
3614        if ( inputState.guessing==0 ) {
3615            t = new TypeTime(precision, tz);
3616        }
3617        return t;
3618    }
3619    
3620    public final Type typeTimestamp() throws RecognitionException, TokenStreamException {
3621        Type t;
3622        
3623        
3624            t = null;
3625            int precision = 0;
3626            boolean tz = false;
3627        
3628        
3629        match(LITERAL_timestamp);
3630        {
3631        switch ( LA(1)) {
3632        case LPAREN:
3633        {
3634            match(LPAREN);
3635            precision=integer();
3636            match(RPAREN);
3637            break;
3638        }
3639        case EOF:
3640        case LITERAL_unique:
3641        case RPAREN:
3642        case LITERAL_constraint:
3643        case LITERAL_primary:
3644        case LITERAL_check:
3645        case LITERAL_first:
3646        case LITERAL_after:
3647        case LITERAL_default:
3648        case LITERAL_with:
3649        case COMMA:
3650        case LITERAL_references:
3651        case LITERAL_not:
3652        {
3653            break;
3654        }
3655        default:
3656        {
3657            throw new NoViableAltException(LT(1), getFilename());
3658        }
3659        }
3660        }
3661        {
3662        if ((LA(1)==LITERAL_with) && (LA(2)==LITERAL_time)) {
3663            match(LITERAL_with);
3664            match(LITERAL_time);
3665            match(LITERAL_zone);
3666            if ( inputState.guessing==0 ) {
3667                tz = true;
3668            }
3669        }
3670        else if ((LA(1)==EOF||LA(1)==LITERAL_unique||LA(1)==RPAREN||LA(1)==LITERAL_constraint||LA(1)==LITERAL_primary||LA(1)==LITERAL_check||LA(1)==LITERAL_first||LA(1)==LITERAL_after||LA(1)==LITERAL_default||LA(1)==LITERAL_with||LA(1)==COMMA||LA(1)==LITERAL_references||LA(1)==LITERAL_not) && (LA(2)==EOF||LA(2)==LITERAL_create||LA(2)==LITERAL_unique||LA(2)==LITERAL_on||LA(2)==LPAREN||LA(2)==RPAREN||LA(2)==LITERAL_constraint||LA(2)==LITERAL_primary||LA(2)==LITERAL_foreign||LA(2)==LITERAL_check||LA(2)==LITERAL_first||LA(2)==LITERAL_after||LA(2)==LITERAL_default||LA(2)==LITERAL_as||LA(2)==LITERAL_with||LA(2)==COMMA||LA(2)==LITERAL_where||LA(2)==EQ||LA(2)==LITERAL_from||LA(2)==LITERAL_grant||LA(2)==LITERAL_insert||LA(2)==LITERAL_references||LA(2)==LITERAL_not||LA(2)==LITERAL_null||LA(2)==LITERAL_key||LA(2)==LITERAL_identity||LA(2)==LITERAL_full||LA(2)==LITERAL_initially||LA(2)==LITERAL_deferrable||LA(2)==LITERAL_char||LA(2)==LITERAL_date||LA(2)==LITERAL_time||LA(2)==LITERAL_timestamp||LA(2)==LITERAL_interval||LA(2)==LITERAL_for||LA(2)==LITERAL_order||LA(2)==STAR||LA(2)==LITERAL_having||LA(2)==LITERAL_using||LA(2)==LITERAL_group||LA(2)==CONCAT||LA(2)==LITERAL_or||LA(2)==LITERAL_and||LA(2)==LITERAL_is||LA(2)==LITERAL_like||LA(2)==LITERAL_between||LA(2)==LITERAL_in||LA(2)==LITERAL_exists||LA(2)==LITERAL_escape||LA(2)==120||LA(2)==PLUS||LA(2)==MINUS||LA(2)==STRING_LITERAL||LA(2)==QUESTION||LA(2)==INT||LA(2)==REAL||LA(2)==BINSTR||LA(2)==HEXSTR||LA(2)==LITERAL_case||LA(2)==LITERAL_when||LA(2)==LITERAL_then||LA(2)==LITERAL_else||LA(2)==LITERAL_end||LA(2)==LITERAL_hour||LA(2)==LITERAL_left||LA(2)==LITERAL_minute||LA(2)==LITERAL_month||LA(2)==LITERAL_right||LA(2)==LITERAL_second||LA(2)==LITERAL_year||LA(2)==LITERAL_user||LA(2)==LITERAL_current_user||LA(2)==LITERAL_session_user||LA(2)==LITERAL_system_user||LA(2)==LITERAL_current_date||LA(2)==LITERAL_current_time||LA(2)==LITERAL_current_timestamp||LA(2)==LITERAL_sql_tsi_frac_second||LA(2)==LITERAL_sql_tsi_second||LA(2)==LITERAL_sql_tsi_minute||LA(2)==LITERAL_sql_tsi_hour||LA(2)==LITERAL_sql_tsi_day||LA(2)==LITERAL_sql_tsi_week||LA(2)==LITERAL_sql_tsi_month||LA(2)==LITERAL_sql_tsi_quarter||LA(2)==LITERAL_sql_tsi_year||LA(2)==LITERAL_cast||LA(2)==LITERAL_true||LA(2)==LITERAL_false||LA(2)==LITERAL_avg||LA(2)==LITERAL_min||LA(2)==LITERAL_max||LA(2)==LITERAL_sum||LA(2)==LITERAL_count||LA(2)==LT||LA(2)==LE||LA(2)==GT||LA(2)==GE||LA(2)==NE||LA(2)==SLASH||LA(2)==LITERAL_cross||LA(2)==LITERAL_join||LA(2)==LITERAL_natural||LA(2)==LITERAL_union||LA(2)==LITERAL_inner||LA(2)==LITERAL_intersect||LA(2)==LITERAL_except||LA(2)==ID)) {
3671        }
3672        else {
3673            throw new NoViableAltException(LT(1), getFilename());
3674        }
3675        
3676        }
3677        if ( inputState.guessing==0 ) {
3678            t = new TypeTimestamp(precision, tz);
3679        }
3680        return t;
3681    }
3682    
3683    public final Type typeInterval() throws RecognitionException, TokenStreamException {
3684        Type t;
3685        
3686        
3687            t = null;
3688        
3689        
3690        match(LITERAL_interval);
3691        t=intervalQualifier();
3692        return t;
3693    }
3694    
3695    public final int integer() throws RecognitionException, TokenStreamException {
3696        int val;
3697        
3698        Token t = null;
3699        val = 0;
3700        
3701        t = LT(1);
3702        match(INT);
3703        if ( inputState.guessing==0 ) {
3704            val = Integer.parseInt(t.getText());
3705        }
3706        return val;
3707    }
3708    
3709    public final TypeInterval intervalQualifier() throws RecognitionException, TokenStreamException {
3710        TypeInterval type;
3711        
3712        
3713            type = null;
3714        
3715        
3716        boolean synPredMatched296 = false;
3717        if (((LA(1)==LITERAL_hour||LA(1)==LITERAL_minute||LA(1)==LITERAL_year||LA(1)==LITERAL_day) && (LA(2)==LPAREN||LA(2)==LITERAL_to))) {
3718            int _m296 = mark();
3719            synPredMatched296 = true;
3720            inputState.guessing++;
3721            try {
3722                {
3723                {
3724                switch ( LA(1)) {
3725                case LITERAL_year:
3726                {
3727                    match(LITERAL_year);
3728                    break;
3729                }
3730                case LITERAL_day:
3731                {
3732                    match(LITERAL_day);
3733                    break;
3734                }
3735                case LITERAL_hour:
3736                {
3737                    match(LITERAL_hour);
3738                    break;
3739                }
3740                case LITERAL_minute:
3741                {
3742                    match(LITERAL_minute);
3743                    break;
3744                }
3745                default:
3746                {
3747                    throw new NoViableAltException(LT(1), getFilename());
3748                }
3749                }
3750                }
3751                {
3752                switch ( LA(1)) {
3753                case LPAREN:
3754                {
3755                    match(LPAREN);
3756                    integer();
3757                    match(RPAREN);
3758                    break;
3759                }
3760                case LITERAL_to:
3761                {
3762                    break;
3763                }
3764                default:
3765                {
3766                    throw new NoViableAltException(LT(1), getFilename());
3767                }
3768                }
3769                }
3770                match(LITERAL_to);
3771                }
3772            }
3773            catch (RecognitionException pe) {
3774                synPredMatched296 = false;
3775            }
3776            rewind(_m296);
3777            inputState.guessing--;
3778        }
3779        if ( synPredMatched296 ) {
3780            type=intervalRange();
3781        }
3782        else if ((LA(1)==LITERAL_hour||LA(1)==LITERAL_minute||LA(1)==LITERAL_month||LA(1)==LITERAL_second||LA(1)==LITERAL_year||LA(1)==LITERAL_day) && (LA(2)==EOF||LA(2)==LITERAL_create||LA(2)==LITERAL_unique||LA(2)==LITERAL_on||LA(2)==LPAREN||LA(2)==RPAREN||LA(2)==LITERAL_constraint||LA(2)==LITERAL_primary||LA(2)==LITERAL_check||LA(2)==LITERAL_first||LA(2)==LITERAL_after||LA(2)==LITERAL_default||LA(2)==LITERAL_as||LA(2)==LITERAL_with||LA(2)==COMMA||LA(2)==LITERAL_where||LA(2)==EQ||LA(2)==LITERAL_from||LA(2)==LITERAL_grant||LA(2)==LITERAL_references||LA(2)==LITERAL_not||LA(2)==LITERAL_full||LA(2)==LITERAL_initially||LA(2)==LITERAL_deferrable||LA(2)==LITERAL_for||LA(2)==LITERAL_order||LA(2)==STAR||LA(2)==LITERAL_having||LA(2)==LITERAL_using||LA(2)==LITERAL_group||LA(2)==CONCAT||LA(2)==LITERAL_or||LA(2)==LITERAL_and||LA(2)==LITERAL_is||LA(2)==LITERAL_like||LA(2)==LITERAL_between||LA(2)==LITERAL_in||LA(2)==LITERAL_escape||LA(2)==120||LA(2)==PLUS||LA(2)==MINUS||LA(2)==LITERAL_when||LA(2)==LITERAL_then||LA(2)==LITERAL_else||LA(2)==LITERAL_end||LA(2)==LITERAL_left||LA(2)==LITERAL_right||LA(2)==LT||LA(2)==LE||LA(2)==GT||LA(2)==GE||LA(2)==NE||LA(2)==SLASH||LA(2)==LITERAL_cross||LA(2)==LITERAL_join||LA(2)==LITERAL_natural||LA(2)==LITERAL_union||LA(2)==LITERAL_inner||LA(2)==LITERAL_intersect||LA(2)==LITERAL_except||LA(2)==ID)) {
3783            type=intervalSingleField();
3784        }
3785        else {
3786            throw new NoViableAltException(LT(1), getFilename());
3787        }
3788        
3789        return type;
3790    }
3791    
3792    public final Vector JavaDoc orderBy() throws RecognitionException, TokenStreamException {
3793        Vector JavaDoc v;
3794        
3795        
3796            v = new Vector JavaDoc();
3797            OrderElement e;
3798        
3799        
3800        match(LITERAL_order);
3801        match(LITERAL_by);
3802        e=orderElement();
3803        if ( inputState.guessing==0 ) {
3804            v.addElement(e);
3805        }
3806        {
3807        _loop183:
3808        do {
3809            if ((LA(1)==COMMA)) {
3810                match(COMMA);
3811                e=orderElement();
3812                if ( inputState.guessing==0 ) {
3813                    v.addElement(e);
3814                }
3815            }
3816            else {
3817                break _loop183;
3818            }
3819            
3820        } while (true);
3821        }
3822        return v;
3823    }
3824    
3825    public final OrderElement orderElement() throws RecognitionException, TokenStreamException {
3826        OrderElement e;
3827        
3828        
3829            e = null;
3830            int i;
3831            String JavaDoc id = null;
3832        
3833        
3834        {
3835        switch ( LA(1)) {
3836        case ID:
3837        {
3838            id=sqlId();
3839            if ( inputState.guessing==0 ) {
3840                e = new OrderElement(id);
3841            }
3842            break;
3843        }
3844        case INT:
3845        {
3846            i=integer();
3847            if ( inputState.guessing==0 ) {
3848                e = new OrderElement(i);
3849            }
3850            break;
3851        }
3852        default:
3853        {
3854            throw new NoViableAltException(LT(1), getFilename());
3855        }
3856        }
3857        }
3858        {
3859        switch ( LA(1)) {
3860        case LITERAL_asc:
3861        {
3862            match(LITERAL_asc);
3863            if ( inputState.guessing==0 ) {
3864                e.setAscending(true);
3865            }
3866            break;
3867        }
3868        case LITERAL_desc:
3869        {
3870            match(LITERAL_desc);
3871            if ( inputState.guessing==0 ) {
3872                e.setAscending(false);
3873            }
3874            break;
3875        }
3876        case EOF:
3877        case COMMA:
3878        {
3879            break;
3880        }
3881        default:
3882        {
3883            throw new NoViableAltException(LT(1), getFilename());
3884        }
3885        }
3886        }
3887        return e;
3888    }
3889    
3890    public final SelectExpression querySpecification() throws RecognitionException, TokenStreamException {
3891        SelectExpression s;
3892        
3893        
3894            s = null;
3895            Vector JavaDoc items = null;
3896            Vector JavaDoc from = null;
3897            Expression where = null;
3898            Vector JavaDoc group = null;
3899            Expression having = null;
3900        
3901        
3902        match(LITERAL_select);
3903        if ( inputState.guessing==0 ) {
3904            s = new SelectExpression();
3905        }
3906        {
3907        switch ( LA(1)) {
3908        case LITERAL_all:
3909        {
3910            match(LITERAL_all);
3911            if ( inputState.guessing==0 ) {
3912                s.setDistinct(false);
3913            }
3914            break;
3915        }
3916        case LITERAL_distinct:
3917        {
3918            match(LITERAL_distinct);
3919            if ( inputState.guessing==0 ) {
3920                s.setDistinct(true);
3921            }
3922            break;
3923        }
3924        case LITERAL_unique:
3925        case LPAREN:
3926        case LITERAL_default:
3927        case LITERAL_insert:
3928        case LITERAL_not:
3929        case LITERAL_null:
3930        case LITERAL_char:
3931        case LITERAL_date:
3932        case LITERAL_time:
3933        case LITERAL_timestamp:
3934        case LITERAL_interval:
3935        case STAR:
3936        case LITERAL_exists:
3937        case PLUS:
3938        case MINUS:
3939        case STRING_LITERAL:
3940        case QUESTION:
3941        case INT:
3942        case REAL:
3943        case BINSTR:
3944        case HEXSTR:
3945        case LITERAL_case:
3946        case LITERAL_hour:
3947        case LITERAL_left:
3948        case LITERAL_minute:
3949        case LITERAL_month:
3950        case LITERAL_right:
3951        case LITERAL_second:
3952        case LITERAL_year:
3953        case LITERAL_user:
3954        case LITERAL_current_user:
3955        case LITERAL_session_user:
3956        case LITERAL_system_user:
3957        case LITERAL_current_date:
3958        case LITERAL_current_time:
3959        case LITERAL_current_timestamp:
3960        case LITERAL_sql_tsi_frac_second:
3961        case LITERAL_sql_tsi_second:
3962        case LITERAL_sql_tsi_minute:
3963        case LITERAL_sql_tsi_hour:
3964        case LITERAL_sql_tsi_day:
3965        case LITERAL_sql_tsi_week:
3966        case LITERAL_sql_tsi_month:
3967        case LITERAL_sql_tsi_quarter:
3968        case LITERAL_sql_tsi_year:
3969        case LITERAL_cast:
3970        case LITERAL_true:
3971        case LITERAL_false:
3972        case LITERAL_avg:
3973        case LITERAL_min:
3974        case LITERAL_max:
3975        case LITERAL_sum:
3976        case LITERAL_count:
3977        case ID:
3978        {
3979            break;
3980        }
3981        default:
3982        {
3983            throw new NoViableAltException(LT(1), getFilename());
3984        }
3985        }
3986        }
3987        {
3988        switch ( LA(1)) {
3989        case LITERAL_unique:
3990        case LPAREN:
3991        case LITERAL_default:
3992        case LITERAL_insert:
3993        case LITERAL_not:
3994        case LITERAL_null:
3995        case LITERAL_char:
3996        case LITERAL_date:
3997        case LITERAL_time:
3998        case LITERAL_timestamp:
3999        case LITERAL_interval:
4000        case LITERAL_exists:
4001        case PLUS:
4002        case MINUS:
4003        case STRING_LITERAL:
4004        case QUESTION:
4005        case INT:
4006        case REAL:
4007        case BINSTR:
4008        case HEXSTR:
4009        case LITERAL_case:
4010        case LITERAL_hour:
4011        case LITERAL_left:
4012        case LITERAL_minute:
4013        case LITERAL_month:
4014        case LITERAL_right:
4015        case LITERAL_second:
4016        case LITERAL_year:
4017        case LITERAL_user:
4018        case LITERAL_current_user:
4019        case LITERAL_session_user:
4020        case LITERAL_system_user:
4021        case LITERAL_current_date:
4022        case LITERAL_current_time:
4023        case LITERAL_current_timestamp:
4024        case LITERAL_sql_tsi_frac_second:
4025        case LITERAL_sql_tsi_second:
4026        case LITERAL_sql_tsi_minute:
4027        case LITERAL_sql_tsi_hour:
4028        case LITERAL_sql_tsi_day:
4029        case LITERAL_sql_tsi_week:
4030        case LITERAL_sql_tsi_month:
4031        case LITERAL_sql_tsi_quarter:
4032        case LITERAL_sql_tsi_year:
4033        case LITERAL_cast:
4034        case LITERAL_true:
4035        case LITERAL_false:
4036        case LITERAL_avg:
4037        case LITERAL_min:
4038        case LITERAL_max:
4039        case LITERAL_sum:
4040        case LITERAL_count:
4041        case ID:
4042        {
4043            items=selectItems();
4044            if ( inputState.guessing==0 ) {
4045                s.setItems(items);
4046            }
4047            break;
4048        }
4049        case STAR:
4050        {
4051            match(STAR);
4052            break;
4053        }
4054        default:
4055        {
4056            throw new NoViableAltException(LT(1), getFilename());
4057        }
4058        }
4059        }
4060        from=selectFrom();
4061        if ( inputState.guessing==0 ) {
4062            s.setFrom(from);
4063        }
4064        where=whereExpression();
4065        if ( inputState.guessing==0 ) {
4066            s.setWhere(where);
4067        }
4068        group=selectGroupBy();
4069        if ( inputState.guessing==0 ) {
4070            s.setGroupBy(group);
4071        }
4072        having=selectHaving();
4073        if ( inputState.guessing==0 ) {
4074            s.setHaving(having);
4075        }
4076        return s;
4077    }
4078    
4079    public final Vector JavaDoc selectItems() throws RecognitionException, TokenStreamException {
4080        Vector JavaDoc items;
4081        
4082        
4083            items = new Vector JavaDoc();
4084            SelectItem item = null;
4085        
4086        
4087        item=selectItem();
4088        if ( inputState.guessing==0 ) {
4089            
4090                        items.addElement(item);
4091                    
4092        }
4093        {
4094        _loop320:
4095        do {
4096            if ((LA(1)==COMMA) && (LA(2)==LITERAL_unique||LA(2)==LPAREN||LA(2)==LITERAL_default||LA(2)==LITERAL_insert||LA(2)==LITERAL_not||LA(2)==LITERAL_null||LA(2)==LITERAL_char||LA(2)==LITERAL_date||LA(2)==LITERAL_time||LA(2)==LITERAL_timestamp||LA(2)==LITERAL_interval||LA(2)==LITERAL_exists||LA(2)==PLUS||LA(2)==MINUS||LA(2)==STRING_LITERAL||LA(2)==QUESTION||LA(2)==INT||LA(2)==REAL||LA(2)==BINSTR||LA(2)==HEXSTR||LA(2)==LITERAL_case||LA(2)==LITERAL_hour||LA(2)==LITERAL_left||LA(2)==LITERAL_minute||LA(2)==LITERAL_month||LA(2)==LITERAL_right||LA(2)==LITERAL_second||LA(2)==LITERAL_year||LA(2)==LITERAL_user||LA(2)==LITERAL_current_user||LA(2)==LITERAL_session_user||LA(2)==LITERAL_system_user||LA(2)==LITERAL_current_date||LA(2)==LITERAL_current_time||LA(2)==LITERAL_current_timestamp||LA(2)==LITERAL_sql_tsi_frac_second||LA(2)==LITERAL_sql_tsi_second||LA(2)==LITERAL_sql_tsi_minute||LA(2)==LITERAL_sql_tsi_hour||LA(2)==LITERAL_sql_tsi_day||LA(2)==LITERAL_sql_tsi_week||LA(2)==LITERAL_sql_tsi_month||LA(2)==LITERAL_sql_tsi_quarter||LA(2)==LITERAL_sql_tsi_year||LA(2)==LITERAL_cast||LA(2)==LITERAL_true||LA(2)==LITERAL_false||LA(2)==LITERAL_avg||LA(2)==LITERAL_min||LA(2)==LITERAL_max||LA(2)==LITERAL_sum||LA(2)==LITERAL_count||LA(2)==ID)) {
4097                match(COMMA);
4098                item=selectItem();
4099                if ( inputState.guessing==0 ) {
4100                    items.addElement(item);
4101                }
4102            }
4103            else {
4104                break _loop320;
4105            }
4106            
4107        } while (true);
4108        }
4109        return items;
4110    }
4111    
4112    public final Vector JavaDoc selectFrom() throws RecognitionException, TokenStreamException {
4113        Vector JavaDoc from;
4114        
4115        
4116            from = null;
4117            Expression item = null;
4118        
4119        
4120        {
4121        if ((LA(1)==LITERAL_from) && (LA(2)==LPAREN||LA(2)==ID)) {
4122            match(LITERAL_from);
4123            if ( inputState.guessing==0 ) {
4124                from = new Vector JavaDoc();
4125            }
4126            item=tableReference();
4127            if ( inputState.guessing==0 ) {
4128                from.addElement(item);
4129            }
4130            {
4131            _loop195:
4132            do {
4133                if ((LA(1)==COMMA) && (LA(2)==LPAREN||LA(2)==ID)) {
4134                    match(COMMA);
4135                    item=tableReference();
4136                    if ( inputState.guessing==0 ) {
4137                        from.addElement(item);
4138                    }
4139                }
4140                else {
4141                    break _loop195;
4142                }
4143                
4144            } while (true);
4145            }
4146        }
4147        else if ((LA(1)==EOF||LA(1)==LITERAL_create||LA(1)==LITERAL_unique||LA(1)==LITERAL_on||LA(1)==RPAREN||LA(1)==LITERAL_constraint||LA(1)==LITERAL_primary||LA(1)==LITERAL_check||LA(1)==LITERAL_first||LA(1)==LITERAL_after||LA(1)==LITERAL_default||LA(1)==LITERAL_as||LA(1)==LITERAL_with||LA(1)==COMMA||LA(1)==LITERAL_where||LA(1)==LITERAL_from||LA(1)==LITERAL_grant||LA(1)==LITERAL_references||LA(1)==LITERAL_not||LA(1)==LITERAL_full||LA(1)==LITERAL_initially||LA(1)==LITERAL_deferrable||LA(1)==LITERAL_for||LA(1)==LITERAL_order||LA(1)==LITERAL_having||LA(1)==LITERAL_using||LA(1)==LITERAL_group||LA(1)==CONCAT||LA(1)==LITERAL_or||LA(1)==LITERAL_and||LA(1)==LITERAL_when||LA(1)==LITERAL_then||LA(1)==LITERAL_else||LA(1)==LITERAL_end||LA(1)==LITERAL_left||LA(1)==LITERAL_right||LA(1)==LITERAL_cross||LA(1)==LITERAL_join||LA(1)==LITERAL_natural||LA(1)==LITERAL_union||LA(1)==LITERAL_inner||LA(1)==LITERAL_intersect||LA(1)==LITERAL_except||LA(1)==ID) && (LA(2)==EOF||LA(2)==LITERAL_create||LA(2)==LITERAL_unique||LA(2)==LITERAL_index||LA(2)==LITERAL_temporary||LA(2)==LITERAL_table||LA(2)==LITERAL_view||LA(2)==LITERAL_on||LA(2)==LPAREN||LA(2)==RPAREN||LA(2)==LITERAL_constraint||LA(2)==LITERAL_primary||LA(2)==LITERAL_foreign||LA(2)==LITERAL_check||LA(2)==LITERAL_first||LA(2)==LITERAL_after||LA(2)==LITERAL_default||LA(2)==LITERAL_as||LA(2)==LITERAL_with||LA(2)==LITERAL_cascaded||LA(2)==LITERAL_update||LA(2)==COMMA||LA(2)==LITERAL_where||LA(2)==EQ||LA(2)==LITERAL_delete||LA(2)==LITERAL_from||LA(2)==LITERAL_global||LA(2)==LITERAL_local||LA(2)==LITERAL_grant||LA(2)==LITERAL_all||LA(2)==LITERAL_select||LA(2)==LITERAL_insert||LA(2)==LITERAL_references||LA(2)==LITERAL_usage||LA(2)==LITERAL_not||LA(2)==LITERAL_null||LA(2)==LITERAL_key||LA(2)==LITERAL_identity||LA(2)==LITERAL_full||LA(2)==LITERAL_initially||LA(2)==LITERAL_deferred||LA(2)==LITERAL_immediate||LA(2)==LITERAL_deferrable||LA(2)==LITERAL_bit||LA(2)==LITERAL_varbinary||LA(2)==LITERAL_binary||LA(2)==LITERAL_blob||LA(2)==LITERAL_clob||LA(2)==LITERAL_character||LA(2)==LITERAL_char||LA(2)==LITERAL_varchar||LA(2)==LITERAL_int||LA(2)==LITERAL_integer||LA(2)==LITERAL_smallint||LA(2)==LITERAL_tinyint||LA(2)==LITERAL_bigint||LA(2)==LITERAL_dec||LA(2)==LITERAL_decimal||LA(2)==LITERAL_numeric||LA(2)==LITERAL_real||LA(2)==LITERAL_double||LA(2)==LITERAL_float||LA(2)==LITERAL_boolean||LA(2)==LITERAL_date||LA(2)==LITERAL_time||LA(2)==LITERAL_timestamp||LA(2)==LITERAL_interval||LA(2)==LITERAL_for||LA(2)==LITERAL_read||LA(2)==LITERAL_order||LA(2)==LITERAL_by||LA(2)==STAR||LA(2)==LITERAL_having||LA(2)==LITERAL_corresponding||LA(2)==LITERAL_values||LA(2)==LITERAL_using||LA(2)==LITERAL_group||LA(2)==CONCAT||LA(2)==LITERAL_or||LA(2)==LITERAL_and||LA(2)==LITERAL_is||LA(2)==LITERAL_like||LA(2)==LITERAL_between||LA(2)==LITERAL_in||LA(2)==LITERAL_exists||LA(2)==LITERAL_escape||LA(2)==120||LA(2)==PLUS||LA(2)==MINUS||LA(2)==STRING_LITERAL||LA(2)==QUESTION||LA(2)==INT||LA(2)==REAL||LA(2)==BINSTR||LA(2)==HEXSTR||LA(2)==LITERAL_case||LA(2)==LITERAL_when||LA(2)==LITERAL_then||LA(2)==LITERAL_else||LA(2)==LITERAL_end||LA(2)==LITERAL_hour||LA(2)==LITERAL_left||LA(2)==LITERAL_minute||LA(2)==LITERAL_month||LA(2)==LITERAL_right||LA(2)==LITERAL_second||LA(2)==LITERAL_year||LA(2)==LITERAL_user||LA(2)==LITERAL_current_user||LA(2)==LITERAL_session_user||LA(2)==LITERAL_system_user||LA(2)==LITERAL_current_date||LA(2)==LITERAL_current_time||LA(2)==LITERAL_current_timestamp||LA(2)==LITERAL_sql_tsi_frac_second||LA(2)==LITERAL_sql_tsi_second||LA(2)==LITERAL_sql_tsi_minute||LA(2)==LITERAL_sql_tsi_hour||LA(2)==LITERAL_sql_tsi_day||LA(2)==LITERAL_sql_tsi_week||LA(2)==LITERAL_sql_tsi_month||LA(2)==LITERAL_sql_tsi_quarter||LA(2)==LITERAL_sql_tsi_year||LA(2)==LITERAL_cast||LA(2)==LITERAL_true||LA(2)==LITERAL_false||LA(2)==LITERAL_avg||LA(2)==LITERAL_min||LA(2)==LITERAL_max||LA(2)==LITERAL_sum||LA(2)==LITERAL_count||LA(2)==LT||LA(2)==LE||LA(2)==GT||LA(2)==GE||LA(2)==NE||LA(2)==SLASH||LA(2)==LITERAL_cross||LA(2)==LITERAL_join||LA(2)==LITERAL_natural||LA(2)==LITERAL_union||LA(2)==LITERAL_inner||LA(2)==LITERAL_outer||LA(2)==LITERAL_intersect||LA(2)==LITERAL_except||LA(2)==ID)) {
4148        }
4149        else {
4150            throw new NoViableAltException(LT(1), getFilename());
4151        }
4152        
4153        }
4154        return from;
4155    }
4156    
4157    public final Vector JavaDoc selectGroupBy() throws RecognitionException, TokenStreamException {
4158        Vector JavaDoc v;
4159        
4160        
4161            v = null;
4162        
4163        
4164        {
4165        if ((LA(1)==LITERAL_group) && (LA(2)==LITERAL_by)) {
4166            match(LITERAL_group);
4167            match(LITERAL_by);
4168            v=idList();
4169        }
4170        else if ((LA(1)==EOF||LA(1)==LITERAL_create||LA(1)==LITERAL_unique||LA(1)==LITERAL_on||LA(1)==RPAREN||LA(1)==LITERAL_constraint||LA(1)==LITERAL_primary||LA(1)==LITERAL_check||LA(1)==LITERAL_first||LA(1)==LITERAL_after||LA(1)==LITERAL_default||LA(1)==LITERAL_as||LA(1)==LITERAL_with||LA(1)==COMMA||LA(1)==LITERAL_where||LA(1)==LITERAL_from||LA(1)==LITERAL_grant||LA(1)==LITERAL_references||LA(1)==LITERAL_not||LA(1)==LITERAL_full||LA(1)==LITERAL_initially||LA(1)==LITERAL_deferrable||LA(1)==LITERAL_for||LA(1)==LITERAL_order||LA(1)==LITERAL_having||LA(1)==LITERAL_using||LA(1)==LITERAL_group||LA(1)==CONCAT||LA(1)==LITERAL_or||LA(1)==LITERAL_and||LA(1)==LITERAL_when||LA(1)==LITERAL_then||LA(1)==LITERAL_else||LA(1)==LITERAL_end||LA(1)==LITERAL_left||LA(1)==LITERAL_right||LA(1)==LITERAL_cross||LA(1)==LITERAL_join||LA(1)==LITERAL_natural||LA(1)==LITERAL_union||LA(1)==LITERAL_inner||LA(1)==LITERAL_intersect||LA(1)==LITERAL_except||LA(1)==ID) && (LA(2)==EOF||LA(2)==LITERAL_create||LA(2)==LITERAL_unique||LA(2)==LITERAL_index||LA(2)==LITERAL_temporary||LA(2)==LITERAL_table||LA(2)==LITERAL_view||LA(2)==LITERAL_on||LA(2)==LPAREN||LA(2)==RPAREN||LA(2)==LITERAL_constraint||LA(2)==LITERAL_primary||LA(2)==LITERAL_foreign||LA(2)==LITERAL_check||LA(2)==LITERAL_first||LA(2)==LITERAL_after||LA(2)==LITERAL_default||LA(2)==LITERAL_as||LA(2)==LITERAL_with||LA(2)==LITERAL_cascaded||LA(2)==LITERAL_update||LA(2)==COMMA||LA(2)==LITERAL_where||LA(2)==EQ||LA(2)==LITERAL_delete||LA(2)==LITERAL_from||LA(2)==LITERAL_global||LA(2)==LITERAL_local||LA(2)==LITERAL_grant||LA(2)==LITERAL_all||LA(2)==LITERAL_select||LA(2)==LITERAL_insert||LA(2)==LITERAL_references||LA(2)==LITERAL_usage||LA(2)==LITERAL_not||LA(2)==LITERAL_null||LA(2)==LITERAL_key||LA(2)==LITERAL_identity||LA(2)==LITERAL_full||LA(2)==LITERAL_initially||LA(2)==LITERAL_deferred||LA(2)==LITERAL_immediate||LA(2)==LITERAL_deferrable||LA(2)==LITERAL_bit||LA(2)==LITERAL_varbinary||LA(2)==LITERAL_binary||LA(2)==LITERAL_blob||LA(2)==LITERAL_clob||LA(2)==LITERAL_character||LA(2)==LITERAL_char||LA(2)==LITERAL_varchar||LA(2)==LITERAL_int||LA(2)==LITERAL_integer||LA(2)==LITERAL_smallint||LA(2)==LITERAL_tinyint||LA(2)==LITERAL_bigint||LA(2)==LITERAL_dec||LA(2)==LITERAL_decimal||LA(2)==LITERAL_numeric||LA(2)==LITERAL_real||LA(2)==LITERAL_double||LA(2)==LITERAL_float||LA(2)==LITERAL_boolean||LA(2)==LITERAL_date||LA(2)==LITERAL_time||LA(2)==LITERAL_timestamp||LA(2)==LITERAL_interval||LA(2)==LITERAL_for||LA(2)==LITERAL_read||LA(2)==LITERAL_order||LA(2)==LITERAL_by||LA(2)==STAR||LA(2)==LITERAL_having||LA(2)==LITERAL_corresponding||LA(2)==LITERAL_values||LA(2)==LITERAL_using||LA(2)==LITERAL_group||LA(2)==CONCAT||LA(2)==LITERAL_or||LA(2)==LITERAL_and||LA(2)==LITERAL_is||LA(2)==LITERAL_like||LA(2)==LITERAL_between||LA(2)==LITERAL_in||LA(2)==LITERAL_exists||LA(2)==LITERAL_escape||LA(2)==120||LA(2)==PLUS||LA(2)==MINUS||LA(2)==STRING_LITERAL||LA(2)==QUESTION||LA(2)==INT||LA(2)==REAL||LA(2)==BINSTR||LA(2)==HEXSTR||LA(2)==LITERAL_case||LA(2)==LITERAL_when||LA(2)==LITERAL_then||LA(2)==LITERAL_else||LA(2)==LITERAL_end||LA(2)==LITERAL_hour||LA(2)==LITERAL_left||LA(2)==LITERAL_minute||LA(2)==LITERAL_month||LA(2)==LITERAL_right||LA(2)==LITERAL_second||LA(2)==LITERAL_year||LA(2)==LITERAL_user||LA(2)==LITERAL_current_user||LA(2)==LITERAL_session_user||LA(2)==LITERAL_system_user||LA(2)==LITERAL_current_date||LA(2)==LITERAL_current_time||LA(2)==LITERAL_current_timestamp||LA(2)==LITERAL_sql_tsi_frac_second||LA(2)==LITERAL_sql_tsi_second||LA(2)==LITERAL_sql_tsi_minute||LA(2)==LITERAL_sql_tsi_hour||LA(2)==LITERAL_sql_tsi_day||LA(2)==LITERAL_sql_tsi_week||LA(2)==LITERAL_sql_tsi_month||LA(2)==LITERAL_sql_tsi_quarter||LA(2)==LITERAL_sql_tsi_year||LA(2)==LITERAL_cast||LA(2)==LITERAL_true||LA(2)==LITERAL_false||LA(2)==LITERAL_avg||LA(2)==LITERAL_min||LA(2)==LITERAL_max||LA(2)==LITERAL_sum||LA(2)==LITERAL_count||LA(2)==LT||LA(2)==LE||LA(2)==GT||LA(2)==GE||LA(2)==NE||LA(2)==SLASH||LA(2)==LITERAL_cross||LA(2)==LITERAL_join||LA(2)==LITERAL_natural||LA(2)==LITERAL_union||LA(2)==LITERAL_inner||LA(2)==LITERAL_outer||LA(2)==LITERAL_intersect||LA(2)==LITERAL_except||LA(2)==ID)) {
4171        }
4172        else {
4173            throw new NoViableAltException(LT(1), getFilename());
4174        }
4175        
4176        }
4177        return v;
4178    }
4179    
4180    public final Expression selectHaving() throws RecognitionException, TokenStreamException {
4181        Expression e;
4182        
4183        
4184            e = null;
4185        
4186        
4187        {
4188        if ((LA(1)==LITERAL_having) && (LA(2)==LITERAL_unique||LA(2)==LPAREN||LA(2)==LITERAL_default||LA(2)==LITERAL_insert||LA(2)==LITERAL_not||LA(2)==LITERAL_null||LA(2)==LITERAL_char||LA(2)==LITERAL_date||LA(2)==LITERAL_time||LA(2)==LITERAL_timestamp||LA(2)==LITERAL_interval||LA(2)==LITERAL_exists||LA(2)==PLUS||LA(2)==MINUS||LA(2)==STRING_LITERAL||LA(2)==QUESTION||LA(2)==INT||LA(2)==REAL||LA(2)==BINSTR||LA(2)==HEXSTR||LA(2)==LITERAL_case||LA(2)==LITERAL_hour||LA(2)==LITERAL_left||LA(2)==LITERAL_minute||LA(2)==LITERAL_month||LA(2)==LITERAL_right||LA(2)==LITERAL_second||LA(2)==LITERAL_year||LA(2)==LITERAL_user||LA(2)==LITERAL_current_user||LA(2)==LITERAL_session_user||LA(2)==LITERAL_system_user||LA(2)==LITERAL_current_date||LA(2)==LITERAL_current_time||LA(2)==LITERAL_current_timestamp||LA(2)==LITERAL_sql_tsi_frac_second||LA(2)==LITERAL_sql_tsi_second||LA(2)==LITERAL_sql_tsi_minute||LA(2)==LITERAL_sql_tsi_hour||LA(2)==LITERAL_sql_tsi_day||LA(2)==LITERAL_sql_tsi_week||LA(2)==LITERAL_sql_tsi_month||LA(2)==LITERAL_sql_tsi_quarter||LA(2)==LITERAL_sql_tsi_year||LA(2)==LITERAL_cast||LA(2)==LITERAL_true||LA(2)==LITERAL_false||LA(2)==LITERAL_avg||LA(2)==LITERAL_min||LA(2)==LITERAL_max||LA(2)==LITERAL_sum||LA(2)==LITERAL_count||LA(2)==ID)) {
4189            match(LITERAL_having);
4190            e=expression();
4191        }
4192        else if ((LA(1)==EOF||LA(1)==LITERAL_create||LA(1)==LITERAL_unique||LA(1)==LITERAL_on||LA(1)==RPAREN||LA(1)==LITERAL_constraint||LA(1)==LITERAL_primary||LA(1)==LITERAL_check||LA(1)==LITERAL_first||LA(1)==LITERAL_after||LA(1)==LITERAL_default||LA(1)==LITERAL_as||LA(1)==LITERAL_with||LA(1)==COMMA||LA(1)==LITERAL_where||LA(1)==LITERAL_from||LA(1)==LITERAL_grant||LA(1)==LITERAL_references||LA(1)==LITERAL_not||LA(1)==LITERAL_full||LA(1)==LITERAL_initially||LA(1)==LITERAL_deferrable||LA(1)==LITERAL_for||LA(1)==LITERAL_order||LA(1)==LITERAL_having||LA(1)==LITERAL_using||LA(1)==LITERAL_group||LA(1)==CONCAT||LA(1)==LITERAL_or||LA(1)==LITERAL_and||LA(1)==LITERAL_when||LA(1)==LITERAL_then||LA(1)==LITERAL_else||LA(1)==LITERAL_end||LA(1)==LITERAL_left||LA(1)==LITERAL_right||LA(1)==LITERAL_cross||LA(1)==LITERAL_join||LA(1)==LITERAL_natural||LA(1)==LITERAL_union||LA(1)==LITERAL_inner||LA(1)==LITERAL_intersect||LA(1)==LITERAL_except||LA(1)==ID) && (LA(2)==EOF||LA(2)==LITERAL_create||LA(2)==LITERAL_unique||LA(2)==LITERAL_index||LA(2)==LITERAL_temporary||LA(2)==LITERAL_table||LA(2)==LITERAL_view||LA(2)==LITERAL_on||LA(2)==LPAREN||LA(2)==RPAREN||LA(2)==LITERAL_constraint||LA(2)==LITERAL_primary||LA(2)==LITERAL_foreign||LA(2)==LITERAL_check||LA(2)==LITERAL_first||LA(2)==LITERAL_after||LA(2)==LITERAL_default||LA(2)==LITERAL_as||LA(2)==LITERAL_with||LA(2)==LITERAL_cascaded||LA(2)==LITERAL_update||LA(2)==COMMA||LA(2)==LITERAL_where||LA(2)==EQ||LA(2)==LITERAL_delete||LA(2)==LITERAL_from||LA(2)==LITERAL_global||LA(2)==LITERAL_local||LA(2)==LITERAL_grant||LA(2)==LITERAL_all||LA(2)==LITERAL_select||LA(2)==LITERAL_insert||LA(2)==LITERAL_references||LA(2)==LITERAL_usage||LA(2)==LITERAL_not||LA(2)==LITERAL_null||LA(2)==LITERAL_key||LA(2)==LITERAL_identity||LA(2)==LITERAL_full||LA(2)==LITERAL_initially||LA(2)==LITERAL_deferred||LA(2)==LITERAL_immediate||LA(2)==LITERAL_deferrable||LA(2)==LITERAL_bit||LA(2)==LITERAL_varbinary||LA(2)==LITERAL_binary||LA(2)==LITERAL_blob||LA(2)==LITERAL_clob||LA(2)==LITERAL_character||LA(2)==LITERAL_char||LA(2)==LITERAL_varchar||LA(2)==LITERAL_int||LA(2)==LITERAL_integer||LA(2)==LITERAL_smallint||LA(2)==LITERAL_tinyint||LA(2)==LITERAL_bigint||LA(2)==LITERAL_dec||LA(2)==LITERAL_decimal||LA(2)==LITERAL_numeric||LA(2)==LITERAL_real||LA(2)==LITERAL_double||LA(2)==LITERAL_float||LA(2)==LITERAL_boolean||LA(2)==LITERAL_date||LA(2)==LITERAL_time||LA(2)==LITERAL_timestamp||LA(2)==LITERAL_interval||LA(2)==LITERAL_for||LA(2)==LITERAL_read||LA(2)==LITERAL_order||LA(2)==LITERAL_by||LA(2)==STAR||LA(2)==LITERAL_having||LA(2)==LITERAL_corresponding||LA(2)==LITERAL_values||LA(2)==LITERAL_using||LA(2)==LITERAL_group||LA(2)==CONCAT||LA(2)==LITERAL_or||LA(2)==LITERAL_and||LA(2)==LITERAL_is||LA(2)==LITERAL_like||LA(2)==LITERAL_between||LA(2)==LITERAL_in||LA(2)==LITERAL_exists||LA(2)==LITERAL_escape||LA(2)==120||LA(2)==PLUS||LA(2)==MINUS||LA(2)==STRING_LITERAL||LA(2)==QUESTION||LA(2)==INT||LA(2)==REAL||LA(2)==BINSTR||LA(2)==HEXSTR||LA(2)==LITERAL_case||LA(2)==LITERAL_when||LA(2)==LITERAL_then||LA(2)==LITERAL_else||LA(2)==LITERAL_end||LA(2)==LITERAL_hour||LA(2)==LITERAL_left||LA(2)==LITERAL_minute||LA(2)==LITERAL_month||LA(2)==LITERAL_right||LA(2)==LITERAL_second||LA(2)==LITERAL_year||LA(2)==LITERAL_user||LA(2)==LITERAL_current_user||LA(2)==LITERAL_session_user||LA(2)==LITERAL_system_user||LA(2)==LITERAL_current_date||LA(2)==LITERAL_current_time||LA(2)==LITERAL_current_timestamp||LA(2)==LITERAL_sql_tsi_frac_second||LA(2)==LITERAL_sql_tsi_second||LA(2)==LITERAL_sql_tsi_minute||LA(2)==LITERAL_sql_tsi_hour||LA(2)==LITERAL_sql_tsi_day||LA(2)==LITERAL_sql_tsi_week||LA(2)==LITERAL_sql_tsi_month||LA(2)==LITERAL_sql_tsi_quarter||LA(2)==LITERAL_sql_tsi_year||LA(2)==LITERAL_cast||LA(2)==LITERAL_true||LA(2)==LITERAL_false||LA(2)==LITERAL_avg||LA(2)==LITERAL_min||LA(2)==LITERAL_max||LA(2)==LITERAL_sum||LA(2)==LITERAL_count||LA(2)==LT||LA(2)==LE||LA(2)==GT||LA(2)==GE||LA(2)==NE||LA(2)==SLASH||LA(2)==LITERAL_cross||LA(2)==LITERAL_join||LA(2)==LITERAL_natural||LA(2)==LITERAL_union||LA(2)==LITERAL_inner||LA(2)==LITERAL_outer||LA(2)==LITERAL_intersect||LA(2)==LITERAL_except||LA(2)==ID)) {
4193        }
4194        else {
4195            throw new NoViableAltException(LT(1), getFilename());
4196        }
4197        
4198        }
4199        return e;
4200    }
4201    
4202    public final TableExpression tableReference() throws RecognitionException, TokenStreamException {
4203        TableExpression item;
4204        
4205        
4206            item = null;
4207        
4208        
4209        item=joinedTable();
4210        return item;
4211    }
4212    
4213    public final TableExpression nonJoinQueryExpression() throws RecognitionException, TokenStreamException {
4214        TableExpression item;
4215        
4216        
4217            item = null;
4218        
4219        
4220        switch ( LA(1)) {
4221        case LPAREN:
4222        {
4223            match(LPAREN);
4224            item=queryExpression();
4225            match(RPAREN);
4226            break;
4227        }
4228        case LITERAL_table:
4229        case LITERAL_select:
4230        case LITERAL_values:
4231        {
4232            item=simpleTable();
4233            break;
4234        }
4235        default:
4236        {
4237            throw new NoViableAltException(LT(1), getFilename());
4238        }
4239        }
4240        return item;
4241    }
4242    
4243    public final TableExpression simpleTable() throws RecognitionException, TokenStreamException {
4244        TableExpression item;
4245        
4246        
4247            item = null;
4248            String JavaDoc id = null;
4249        
4250        
4251        switch ( LA(1)) {
4252        case LITERAL_select:
4253        {
4254            item=querySpecification();
4255            break;
4256        }
4257        case LITERAL_table:
4258        {
4259            match(LITERAL_table);
4260            id=sqlId();
4261            if ( inputState.guessing==0 ) {
4262                
4263                               item = new SelectFromTable(qConn.resolveName(id));
4264                            
4265            }
4266            break;
4267        }
4268        case LITERAL_values:
4269        {
4270            item=tableValueConstructor();
4271            break;
4272        }
4273        default:
4274        {
4275            throw new NoViableAltException(LT(1), getFilename());
4276        }
4277        }
4278        return item;
4279    }
4280    
4281    public final TableExpression queryExpressionHead() throws RecognitionException, TokenStreamException {
4282        TableExpression item;
4283        
4284        
4285            item = null;
4286        
4287        
4288        if ((LA(1)==LITERAL_table||LA(1)==LPAREN||LA(1)==LITERAL_select||LA(1)==LITERAL_values) && (LA(2)==LITERAL_unique||LA(2)==LITERAL_table||LA(2)==LPAREN||LA(2)==LITERAL_default||LA(2)==LITERAL_all||LA(2)==LITERAL_select||LA(2)==LITERAL_insert||LA(2)==LITERAL_not||LA(2)==LITERAL_null||LA(2)==LITERAL_char||LA(2)==LITERAL_date||LA(2)==LITERAL_time||LA(2)==LITERAL_timestamp||LA(2)==LITERAL_interval||LA(2)==LITERAL_distinct||LA(2)==STAR||LA(2)==LITERAL_values||LA(2)==LITERAL_exists||LA(2)==PLUS||LA(2)==MINUS||LA(2)==STRING_LITERAL||LA(2)==QUESTION||LA(2)==INT||LA(2)==REAL||LA(2)==BINSTR||LA(2)==HEXSTR||LA(2)==LITERAL_case||LA(2)==LITERAL_hour||LA(2)==LITERAL_left||LA(2)==LITERAL_minute||LA(2)==LITERAL_month||LA(2)==LITERAL_right||LA(2)==LITERAL_second||LA(2)==LITERAL_year||LA(2)==LITERAL_user||LA(2)==LITERAL_current_user||LA(2)==LITERAL_session_user||LA(2)==LITERAL_system_user||LA(2)==LITERAL_current_date||LA(2)==LITERAL_current_time||LA(2)==LITERAL_current_timestamp||LA(2)==LITERAL_sql_tsi_frac_second||LA(2)==LITERAL_sql_tsi_second||LA(2)==LITERAL_sql_tsi_minute||LA(2)==LITERAL_sql_tsi_hour||LA(2)==LITERAL_sql_tsi_day||LA(2)==LITERAL_sql_tsi_week||LA(2)==LITERAL_sql_tsi_month||LA(2)==LITERAL_sql_tsi_quarter||LA(2)==LITERAL_sql_tsi_year||LA(2)==LITERAL_cast||LA(2)==LITERAL_true||LA(2)==LITERAL_false||LA(2)==LITERAL_avg||LA(2)==LITERAL_min||LA(2)==LITERAL_max||LA(2)==LITERAL_sum||LA(2)==LITERAL_count||LA(2)==ID)) {
4289            item=nonJoinQueryExpression();
4290        }
4291        else if ((LA(1)==LPAREN||LA(1)==ID) && (LA(2)==EOF||LA(2)==LITERAL_create||LA(2)==LITERAL_unique||LA(2)==LITERAL_table||LA(2)==LITERAL_on||LA(2)==LPAREN||LA(2)==RPAREN||LA(2)==LITERAL_constraint||LA(2)==LITERAL_primary||LA(2)==LITERAL_check||LA(2)==LITERAL_first||LA(2)==LITERAL_after||LA(2)==LITERAL_default||LA(2)==LITERAL_as||LA(2)==LITERAL_with||LA(2)==COMMA||LA(2)==LITERAL_where||LA(2)==LITERAL_from||LA(2)==LITERAL_grant||LA(2)==LITERAL_select||LA(2)==LITERAL_references||LA(2)==LITERAL_not||LA(2)==LITERAL_full||LA(2)==LITERAL_initially||LA(2)==LITERAL_deferrable||LA(2)==LITERAL_for||LA(2)==LITERAL_order||LA(2)==LITERAL_having||LA(2)==LITERAL_values||LA(2)==LITERAL_using||LA(2)==LITERAL_group||LA(2)==CONCAT||LA(2)==LITERAL_or||LA(2)==LITERAL_and||LA(2)==LITERAL_when||LA(2)==LITERAL_then||LA(2)==LITERAL_else||LA(2)==LITERAL_end||LA(2)==LITERAL_left||LA(2)==LITERAL_right||LA(2)==LITERAL_cross||LA(2)==LITERAL_join||LA(2)==LITERAL_natural||LA(2)==LITERAL_union||LA(2)==LITERAL_inner||LA(2)==LITERAL_intersect||LA(2)==LITERAL_except||LA(2)==ID)) {
4292            item=joinedTable();
4293        }
4294        else {
4295            throw new NoViableAltException(LT(1), getFilename());
4296        }
4297        
4298        return item;
4299    }
4300    
4301    public final TableExpression joinedTable() throws RecognitionException, TokenStreamException {
4302        TableExpression item;
4303        
4304        
4305            item = null;
4306            JoinedTable jt = null;
4307            int type = -1;
4308            TableExpression s1 = null;
4309            TableExpression s2 = null;
4310        
4311        
4312        if ((LA(1)==LPAREN||LA(1)==ID) && (LA(2)==EOF||LA(2)==LITERAL_create||LA(2)==LITERAL_unique||LA(2)==LITERAL_table||LA(2)==LITERAL_on||LA(2)==LPAREN||LA(2)==RPAREN||LA(2)==LITERAL_constraint||LA(2)==LITERAL_primary||LA(2)==LITERAL_check||LA(2)==LITERAL_first||LA(2)==LITERAL_after||LA(2)==LITERAL_default||LA(2)==LITERAL_as||LA(2)==LITERAL_with||LA(2)==COMMA||LA(2)==LITERAL_where||LA(2)==LITERAL_from||LA(2)==LITERAL_grant||LA(2)==LITERAL_select||LA(2)==LITERAL_references||LA(2)==LITERAL_not||LA(2)==LITERAL_full||LA(2)==LITERAL_initially||LA(2)==LITERAL_deferrable||LA(2)==LITERAL_for||LA(2)==LITERAL_order||LA(2)==LITERAL_having||LA(2)==LITERAL_values||LA(2)==LITERAL_using||LA(2)==LITERAL_group||LA(2)==CONCAT||LA(2)==LITERAL_or||LA(2)==LITERAL_and||LA(2)==LITERAL_when||LA(2)==LITERAL_then||LA(2)==LITERAL_else||LA(2)==LITERAL_end||LA(2)==LITERAL_left||LA(2)==LITERAL_right||LA(2)==LITERAL_cross||LA(2)==LITERAL_join||LA(2)==LITERAL_natural||LA(2)==LITERAL_union||LA(2)==LITERAL_inner||LA(2)==LITERAL_intersect||LA(2)==LITERAL_except||LA(2)==ID)) {
4313            item=tableReferencePrimary();
4314            {
4315            _loop219:
4316            do {
4317                if ((LA(1)==LITERAL_full||LA(1)==LITERAL_left||LA(1)==LITERAL_right||LA(1)==LITERAL_cross||LA(1)==LITERAL_join||LA(1)==LITERAL_natural||LA(1)==LITERAL_union||LA(1)==LITERAL_inner) && (LA(2)==LPAREN||LA(2)==LITERAL_full||LA(2)==LITERAL_left||LA(2)==LITERAL_right||LA(2)==LITERAL_join||LA(2)==LITERAL_inner||LA(2)==LITERAL_outer||LA(2)==ID)) {
4318                    type=joinSpec();
4319                    s2=tableReference();
4320                    if ( inputState.guessing==0 ) {
4321                        
4322                                           item = jt = new JoinedTable(type, item, s2);
4323                                
4324                    }
4325                    joinModifiers(jt);
4326                    if ( inputState.guessing==0 ) {
4327                        
4328                                           jt.checkSyntax();
4329                                
4330                    }
4331                }
4332                else {
4333                    break _loop219;
4334                }
4335                
4336            } while (true);
4337            }
4338        }
4339        else if ((LA(1)==LPAREN) && (LA(2)==LPAREN||LA(2)==ID)) {
4340            match(LPAREN);
4341            item=joinedTable();
4342            match(RPAREN);
4343        }
4344        else {
4345            throw new NoViableAltException(LT(1), getFilename());
4346        }
4347        
4348        return item;
4349    }
4350    
4351    public final int combine() throws RecognitionException, TokenStreamException {
4352        int type;
4353        
4354        
4355            type = 0;
4356        
4357        
4358        {
4359        switch ( LA(1)) {
4360        case LITERAL_union:
4361        {
4362            match(LITERAL_union);
4363            if ( inputState.guessing==0 ) {
4364                type = Op.UNION;
4365            }
4366            break;
4367        }
4368        case LITERAL_intersect:
4369        {
4370            match(LITERAL_intersect);
4371            if ( inputState.guessing==0 ) {
4372                type = Op.INTERSECT;
4373            }
4374            break;
4375        }
4376        case LITERAL_except:
4377        {
4378            match(LITERAL_except);
4379            if ( inputState.guessing==0 ) {
4380                type = Op.EXCEPT;
4381            }
4382            break;
4383        }
4384        default:
4385        {
4386            throw new NoViableAltException(LT(1), getFilename());
4387        }
4388        }
4389        }
4390        return type;
4391    }
4392    
4393    public final VectorExpression tableValueConstructor() throws RecognitionException, TokenStreamException {
4394        VectorExpression e;
4395        
4396        
4397            e = null;
4398            VectorExpression f = null;
4399        
4400        
4401        match(LITERAL_values);
4402        f=vectorExpression();
4403        if ( inputState.guessing==0 ) {
4404            
4405                            e = new VectorExpression();
4406                            e.addElement(f);
4407                        
4408        }
4409        {
4410        _loop329:
4411        do {
4412            if ((LA(1)==COMMA) && (LA(2)==LPAREN)) {
4413                match(COMMA);
4414                f=vectorExpression();
4415                if ( inputState.guessing==0 ) {
4416                    
4417                                    e.addElement(f);
4418                                
4419                }
4420            }
4421            else {
4422                break _loop329;
4423            }
4424            
4425        } while (true);
4426        }
4427        return e;
4428    }
4429    
4430    public final TableExpression tableReferencePrimary() throws RecognitionException, TokenStreamException {
4431        TableExpression item;
4432        
4433        
4434            item = null;
4435            Vector JavaDoc columns = null;
4436            String JavaDoc id = null;
4437            String JavaDoc id2 = null;
4438        
4439        
4440        {
4441        switch ( LA(1)) {
4442        case ID:
4443        {
4444            id=sqlId();
4445            if ( inputState.guessing==0 ) {
4446                
4447                            id = qConn.resolveName(id);
4448                            item = new SelectFromTable(id);
4449                        
4450            }
4451            break;
4452        }
4453        case LPAREN:
4454        {
4455            match(LPAREN);
4456            item=queryExpression();
4457            match(RPAREN);
4458            break;
4459        }
4460        default:
4461        {
4462            throw new NoViableAltException(LT(1), getFilename());
4463        }
4464        }
4465        }
4466        {
4467        if ((LA(1)==LITERAL_as||LA(1)==ID) && (LA(2)==EOF||LA(2)==LITERAL_create||LA(2)==LITERAL_unique||LA(2)==LITERAL_on||LA(2)==LPAREN||LA(2)==RPAREN||LA(2)==LITERAL_constraint||LA(2)==LITERAL_primary||LA(2)==LITERAL_check||LA(2)==LITERAL_first||LA(2)==LITERAL_after||LA(2)==LITERAL_default||LA(2)==LITERAL_as||LA(2)==LITERAL_with||LA(2)==COMMA||LA(2)==LITERAL_where||LA(2)==LITERAL_from||LA(2)==LITERAL_grant||LA(2)==LITERAL_references||LA(2)==LITERAL_not||LA(2)==LITERAL_full||LA(2)==LITERAL_initially||LA(2)==LITERAL_deferrable||LA(2)==LITERAL_for||LA(2)==LITERAL_order||LA(2)==LITERAL_having||LA(2)==LITERAL_using||LA(2)==LITERAL_group||LA(2)==CONCAT||LA(2)==LITERAL_or||LA(2)==LITERAL_and||LA(2)==LITERAL_when||LA(2)==LITERAL_then||LA(2)==LITERAL_else||LA(2)==LITERAL_end||LA(2)==LITERAL_left||LA(2)==LITERAL_right||LA(2)==LITERAL_cross||LA(2)==LITERAL_join||LA(2)==LITERAL_natural||LA(2)==LITERAL_union||LA(2)==LITERAL_inner||LA(2)==LITERAL_intersect||LA(2)==LITERAL_except||LA(2)==ID)) {
4468            {
4469            switch ( LA(1)) {
4470            case LITERAL_as:
4471            {
4472                match(LITERAL_as);
4473                break;
4474            }
4475            case ID:
4476            {
4477                break;
4478            }
4479            default:
4480            {
4481                throw new NoViableAltException(LT(1), getFilename());
4482            }
4483            }
4484            }
4485            id2=sqlId();
4486            {
4487            switch ( LA(1)) {
4488            case LPAREN:
4489            {
4490                match(LPAREN);
4491                columns=idList();
4492                match(RPAREN);
4493                break;
4494            }
4495            case EOF:
4496            case LITERAL_create:
4497            case LITERAL_unique:
4498            case LITERAL_on:
4499            case RPAREN:
4500            case LITERAL_constraint:
4501            case LITERAL_primary:
4502            case LITERAL_check:
4503            case LITERAL_first:
4504            case LITERAL_after:
4505            case LITERAL_default:
4506            case LITERAL_as:
4507            case LITERAL_with:
4508            case COMMA:
4509            case LITERAL_where:
4510            case LITERAL_from:
4511            case LITERAL_grant:
4512            case LITERAL_references:
4513            case LITERAL_not:
4514            case LITERAL_full:
4515            case LITERAL_initially:
4516            case LITERAL_deferrable:
4517            case LITERAL_for:
4518            case LITERAL_order:
4519            case LITERAL_having:
4520            case LITERAL_using:
4521            case LITERAL_group:
4522            case CONCAT:
4523            case LITERAL_or:
4524            case LITERAL_and:
4525            case LITERAL_when:
4526            case LITERAL_then:
4527            case LITERAL_else:
4528            case LITERAL_end:
4529            case LITERAL_left:
4530            case LITERAL_right:
4531            case LITERAL_cross:
4532            case LITERAL_join:
4533            case LITERAL_natural:
4534            case LITERAL_union:
4535            case LITERAL_inner:
4536            case LITERAL_intersect:
4537            case LITERAL_except:
4538            case ID:
4539            {
4540                break;
4541            }
4542            default:
4543            {
4544                throw new NoViableAltException(LT(1), getFilename());
4545            }
4546            }
4547            }
4548            if ( inputState.guessing==0 ) {
4549                
4550                            item = new SelectFromItem(item, id2, columns);
4551                        
4552            }
4553        }
4554        else if ((LA(1)==EOF||LA(1)==LITERAL_create||LA(1)==LITERAL_unique||LA(1)==LITERAL_on||LA(1)==RPAREN||LA(1)==LITERAL_constraint||LA(1)==LITERAL_primary||LA(1)==LITERAL_check||LA(1)==LITERAL_first||LA(1)==LITERAL_after||LA(1)==LITERAL_default||LA(1)==LITERAL_as||LA(1)==LITERAL_with||LA(1)==COMMA||LA(1)==LITERAL_where||LA(1)==LITERAL_from||LA(1)==LITERAL_grant||LA(1)==LITERAL_references||LA(1)==LITERAL_not||LA(1)==LITERAL_full||LA(1)==LITERAL_initially||LA(1)==LITERAL_deferrable||LA(1)==LITERAL_for||LA(1)==LITERAL_order||LA(1)==LITERAL_having||LA(1)==LITERAL_using||LA(1)==LITERAL_group||LA(1)==CONCAT||LA(1)==LITERAL_or||LA(1)==LITERAL_and||LA(1)==LITERAL_when||LA(1)==LITERAL_then||LA(1)==LITERAL_else||LA(1)==LITERAL_end||LA(1)==LITERAL_left||LA(1)==LITERAL_right||LA(1)==LITERAL_cross||LA(1)==LITERAL_join||LA(1)==LITERAL_natural||LA(1)==LITERAL_union||LA(1)==LITERAL_inner||LA(1)==LITERAL_intersect||LA(1)==LITERAL_except||LA(1)==ID) && (LA(2)==EOF||LA(2)==LITERAL_create||LA(2)==LITERAL_unique||LA(2)==LITERAL_index||LA(2)==LITERAL_temporary||LA(2)==LITERAL_table||LA(2)==LITERAL_view||LA(2)==LITERAL_on||LA(2)==LPAREN||LA(2)==RPAREN||LA(2)==LITERAL_constraint||LA(2)==LITERAL_primary||LA(2)==LITERAL_foreign||LA(2)==LITERAL_check||LA(2)==LITERAL_first||LA(2)==LITERAL_after||LA(2)==LITERAL_default||LA(2)==LITERAL_as||LA(2)==LITERAL_with||LA(2)==LITERAL_cascaded||LA(2)==LITERAL_update||LA(2)==COMMA||LA(2)==LITERAL_where||LA(2)==EQ||LA(2)==LITERAL_delete||LA(2)==LITERAL_from||LA(2)==LITERAL_global||LA(2)==LITERAL_local||LA(2)==LITERAL_grant||LA(2)==LITERAL_all||LA(2)==LITERAL_select||LA(2)==LITERAL_insert||LA(2)==LITERAL_references||LA(2)==LITERAL_usage||LA(2)==LITERAL_not||LA(2)==LITERAL_null||LA(2)==LITERAL_key||LA(2)==LITERAL_identity||LA(2)==LITERAL_full||LA(2)==LITERAL_initially||LA(2)==LITERAL_deferred||LA(2)==LITERAL_immediate||LA(2)==LITERAL_deferrable||LA(2)==LITERAL_bit||LA(2)==LITERAL_varbinary||LA(2)==LITERAL_binary||LA(2)==LITERAL_blob||LA(2)==LITERAL_clob||LA(2)==LITERAL_character||LA(2)==LITERAL_char||LA(2)==LITERAL_varchar||LA(2)==LITERAL_int||LA(2)==LITERAL_integer||LA(2)==LITERAL_smallint||LA(2)==LITERAL_tinyint||LA(2)==LITERAL_bigint||LA(2)==LITERAL_dec||LA(2)==LITERAL_decimal||LA(2)==LITERAL_numeric||LA(2)==LITERAL_real||LA(2)==LITERAL_double||LA(2)==LITERAL_float||LA(2)==LITERAL_boolean||LA(2)==LITERAL_date||LA(2)==LITERAL_time||LA(2)==LITERAL_timestamp||LA(2)==LITERAL_interval||LA(2)==LITERAL_for||LA(2)==LITERAL_read||LA(2)==LITERAL_order||LA(2)==LITERAL_by||LA(2)==STAR||LA(2)==LITERAL_having||LA(2)==LITERAL_corresponding||LA(2)==LITERAL_values||LA(2)==LITERAL_using||LA(2)==LITERAL_group||LA(2)==CONCAT||LA(2)==LITERAL_or||LA(2)==LITERAL_and||LA(2)==LITERAL_is||LA(2)==LITERAL_like||LA(2)==LITERAL_between||LA(2)==LITERAL_in||LA(2)==LITERAL_exists||LA(2)==LITERAL_escape||LA(2)==120||LA(2)==PLUS||LA(2)==MINUS||LA(2)==STRING_LITERAL||LA(2)==QUESTION||LA(2)==INT||LA(2)==REAL||LA(2)==BINSTR||LA(2)==HEXSTR||LA(2)==LITERAL_case||LA(2)==LITERAL_when||LA(2)==LITERAL_then||LA(2)==LITERAL_else||LA(2)==LITERAL_end||LA(2)==LITERAL_hour||LA(2)==LITERAL_left||LA(2)==LITERAL_minute||LA(2)==LITERAL_month||LA(2)==LITERAL_right||LA(2)==LITERAL_second||LA(2)==LITERAL_year||LA(2)==LITERAL_user||LA(2)==LITERAL_current_user||LA(2)==LITERAL_session_user||LA(2)==LITERAL_system_user||LA(2)==LITERAL_current_date||LA(2)==LITERAL_current_time||LA(2)==LITERAL_current_timestamp||LA(2)==LITERAL_sql_tsi_frac_second||LA(2)==LITERAL_sql_tsi_second||LA(2)==LITERAL_sql_tsi_minute||LA(2)==LITERAL_sql_tsi_hour||LA(2)==LITERAL_sql_tsi_day||LA(2)==LITERAL_sql_tsi_week||LA(2)==LITERAL_sql_tsi_month||LA(2)==LITERAL_sql_tsi_quarter||LA(2)==LITERAL_sql_tsi_year||LA(2)==LITERAL_cast||LA(2)==LITERAL_true||LA(2)==LITERAL_false||LA(2)==LITERAL_avg||LA(2)==LITERAL_min||LA(2)==LITERAL_max||LA(2)==LITERAL_sum||LA(2)==LITERAL_count||LA(2)==LT||LA(2)==LE||LA(2)==GT||LA(2)==GE||LA(2)==NE||LA(2)==SLASH||LA(2)==LITERAL_cross||LA(2)==LITERAL_join||LA(2)==LITERAL_natural||LA(2)==LITERAL_union||LA(2)==LITERAL_inner||LA(2)==LITERAL_outer||LA(2)==LITERAL_intersect||LA(2)==LITERAL_except||LA(2)==ID)) {
4555        }
4556        else {
4557            throw new NoViableAltException(LT(1), getFilename());
4558        }
4559        
4560        }
4561        return item;
4562    }
4563    
4564    public final int joinSpec() throws RecognitionException, TokenStreamException {
4565        int type;
4566        
4567        
4568            type = 0;
4569            int t = 0;
4570        
4571        
4572        switch ( LA(1)) {
4573        case LITERAL_cross:
4574        {
4575            match(LITERAL_cross);
4576            match(LITERAL_join);
4577            if ( inputState.guessing==0 ) {
4578                type = Op.CROSS;
4579            }
4580            break;
4581        }
4582        case LITERAL_full:
4583        case LITERAL_left:
4584        case LITERAL_right:
4585        case LITERAL_join:
4586        case LITERAL_natural:
4587        case LITERAL_inner:
4588        {
4589            {
4590            switch ( LA(1)) {
4591            case LITERAL_natural:
4592            {
4593                match(LITERAL_natural);
4594                if ( inputState.guessing==0 ) {
4595                    t = Op.NATURAL;
4596                }
4597                break;
4598            }
4599            case LITERAL_full:
4600            case LITERAL_left:
4601            case LITERAL_right:
4602            case LITERAL_join:
4603            case LITERAL_inner:
4604            {
4605                break;
4606            }
4607            default:
4608            {
4609                throw new NoViableAltException(LT(1), getFilename());
4610            }
4611            }
4612            }
4613            type=joinType();
4614            match(LITERAL_join);
4615            if ( inputState.guessing==0 ) {
4616                type |= t;
4617            }
4618            break;
4619        }
4620        case LITERAL_union:
4621        {
4622            match(LITERAL_union);
4623            match(LITERAL_join);
4624            if ( inputState.guessing==0 ) {
4625                type = Op.UNION;
4626            }
4627            break;
4628        }
4629        default:
4630        {
4631            throw new NoViableAltException(LT(1), getFilename());
4632        }
4633        }
4634        return type;
4635    }
4636    
4637    public final void joinModifiers(
4638        JoinedTable jt
4639    ) throws RecognitionException, TokenStreamException {
4640        
4641        
4642            Vector JavaDoc names = null;
4643            Expression predicate = null;
4644        
4645        
4646        boolean synPredMatched222 = false;
4647        if (((LA(1)==LITERAL_using) && (LA(2)==LPAREN))) {
4648            int _m222 = mark();
4649            synPredMatched222 = true;
4650            inputState.guessing++;
4651            try {
4652                {
4653                match(LITERAL_using);
4654                }
4655            }
4656            catch (RecognitionException pe) {
4657                synPredMatched222 = false;
4658            }
4659            rewind(_m222);
4660            inputState.guessing--;
4661        }
4662        if ( synPredMatched222 ) {
4663            {
4664            match(LITERAL_using);
4665            match(LPAREN);
4666            names=idList();
4667            match(RPAREN);
4668            if ( inputState.guessing==0 ) {
4669                
4670                                jt.setUsingList(names);
4671                            
4672            }
4673            }
4674        }
4675        else {
4676            boolean synPredMatched225 = false;
4677            if (((LA(1)==LITERAL_on) && (LA(2)==LITERAL_unique||LA(2)==LPAREN||LA(2)==LITERAL_default||LA(2)==LITERAL_insert||LA(2)==LITERAL_not||LA(2)==LITERAL_null||LA(2)==LITERAL_char||LA(2)==LITERAL_date||LA(2)==LITERAL_time||LA(2)==LITERAL_timestamp||LA(2)==LITERAL_interval||LA(2)==LITERAL_exists||LA(2)==PLUS||LA(2)==MINUS||LA(2)==STRING_LITERAL||LA(2)==QUESTION||LA(2)==INT||LA(2)==REAL||LA(2)==BINSTR||LA(2)==HEXSTR||LA(2)==LITERAL_case||LA(2)==LITERAL_hour||LA(2)==LITERAL_left||LA(2)==LITERAL_minute||LA(2)==LITERAL_month||LA(2)==LITERAL_right||LA(2)==LITERAL_second||LA(2)==LITERAL_year||LA(2)==LITERAL_user||LA(2)==LITERAL_current_user||LA(2)==LITERAL_session_user||LA(2)==LITERAL_system_user||LA(2)==LITERAL_current_date||LA(2)==LITERAL_current_time||LA(2)==LITERAL_current_timestamp||LA(2)==LITERAL_sql_tsi_frac_second||LA(2)==LITERAL_sql_tsi_second||LA(2)==LITERAL_sql_tsi_minute||LA(2)==LITERAL_sql_tsi_hour||LA(2)==LITERAL_sql_tsi_day||LA(2)==LITERAL_sql_tsi_week||LA(2)==LITERAL_sql_tsi_month||LA(2)==LITERAL_sql_tsi_quarter||LA(2)==LITERAL_sql_tsi_year||LA(2)==LITERAL_cast||LA(2)==LITERAL_true||LA(2)==LITERAL_false||LA(2)==LITERAL_avg||LA(2)==LITERAL_min||LA(2)==LITERAL_max||LA(2)==LITERAL_sum||LA(2)==LITERAL_count||LA(2)==ID))) {
4678                int _m225 = mark();
4679                synPredMatched225 = true;
4680                inputState.guessing++;
4681                try {
4682                    {
4683                    match(LITERAL_on);
4684                    }
4685                }
4686                catch (RecognitionException pe) {
4687                    synPredMatched225 = false;
4688                }
4689                rewind(_m225);
4690                inputState.guessing--;
4691            }
4692            if ( synPredMatched225 ) {
4693                {
4694                match(LITERAL_on);
4695                predicate=expression();
4696                if ( inputState.guessing==0 ) {
4697                    
4698                                    jt.setOnExpression(predicate);
4699                                
4700                }
4701                }
4702            }
4703            else if ((LA(1)==EOF||LA(1)==LITERAL_create||LA(1)==LITERAL_unique||LA(1)==LITERAL_on||LA(1)==RPAREN||LA(1)==LITERAL_constraint||LA(1)==LITERAL_primary||LA(1)==LITERAL_check||LA(1)==LITERAL_first||LA(1)==LITERAL_after||LA(1)==LITERAL_default||LA(1)==LITERAL_as||LA(1)==LITERAL_with||LA(1)==COMMA||LA(1)==LITERAL_where||LA(1)==LITERAL_from||LA(1)==LITERAL_grant||LA(1)==LITERAL_references||LA(1)==LITERAL_not||LA(1)==LITERAL_full||LA(1)==LITERAL_initially||LA(1)==LITERAL_deferrable||LA(1)==LITERAL_for||LA(1)==LITERAL_order||LA(1)==LITERAL_having||LA(1)==LITERAL_using||LA(1)==LITERAL_group||LA(1)==CONCAT||LA(1)==LITERAL_or||LA(1)==LITERAL_and||LA(1)==LITERAL_when||LA(1)==LITERAL_then||LA(1)==LITERAL_else||LA(1)==LITERAL_end||LA(1)==LITERAL_left||LA(1)==LITERAL_right||LA(1)==LITERAL_cross||LA(1)==LITERAL_join||LA(1)==LITERAL_natural||LA(1)==LITERAL_union||LA(1)==LITERAL_inner||LA(1)==LITERAL_intersect||LA(1)==LITERAL_except||LA(1)==ID) && (LA(2)==EOF||LA(2)==LITERAL_create||LA(2)==LITERAL_unique||LA(2)==LITERAL_index||LA(2)==LITERAL_temporary||LA(2)==LITERAL_table||LA(2)==LITERAL_view||LA(2)==LITERAL_on||LA(2)==LPAREN||LA(2)==RPAREN||LA(2)==LITERAL_constraint||LA(2)==LITERAL_primary||LA(2)==LITERAL_foreign||LA(2)==LITERAL_check||LA(2)==LITERAL_first||LA(2)==LITERAL_after||LA(2)==LITERAL_default||LA(2)==LITERAL_as||LA(2)==LITERAL_with||LA(2)==LITERAL_cascaded||LA(2)==LITERAL_update||LA(2)==COMMA||LA(2)==LITERAL_where||LA(2)==EQ||LA(2)==LITERAL_delete||LA(2)==LITERAL_from||LA(2)==LITERAL_global||LA(2)==LITERAL_local||LA(2)==LITERAL_grant||LA(2)==LITERAL_all||LA(2)==LITERAL_select||LA(2)==LITERAL_insert||LA(2)==LITERAL_references||LA(2)==LITERAL_usage||LA(2)==LITERAL_not||LA(2)==LITERAL_null||LA(2)==LITERAL_key||LA(2)==LITERAL_identity||LA(2)==LITERAL_full||LA(2)==LITERAL_initially||LA(2)==LITERAL_deferred||LA(2)==LITERAL_immediate||LA(2)==LITERAL_deferrable||LA(2)==LITERAL_bit||LA(2)==LITERAL_varbinary||LA(2)==LITERAL_binary||LA(2)==LITERAL_blob||LA(2)==LITERAL_clob||LA(2)==LITERAL_character||LA(2)==LITERAL_char||LA(2)==LITERAL_varchar||LA(2)==LITERAL_int||LA(2)==LITERAL_integer||LA(2)==LITERAL_smallint||LA(2)==LITERAL_tinyint||LA(2)==LITERAL_bigint||LA(2)==LITERAL_dec||LA(2)==LITERAL_decimal||LA(2)==LITERAL_numeric||LA(2)==LITERAL_real||LA(2)==LITERAL_double||LA(2)==LITERAL_float||LA(2)==LITERAL_boolean||LA(2)==LITERAL_date||LA(2)==LITERAL_time||LA(2)==LITERAL_timestamp||LA(2)==LITERAL_interval||LA(2)==LITERAL_for||LA(2)==LITERAL_read||LA(2)==LITERAL_order||LA(2)==LITERAL_by||LA(2)==STAR||LA(2)==LITERAL_having||LA(2)==LITERAL_corresponding||LA(2)==LITERAL_values||LA(2)==LITERAL_using||LA(2)==LITERAL_group||LA(2)==CONCAT||LA(2)==LITERAL_or||LA(2)==LITERAL_and||LA(2)==LITERAL_is||LA(2)==LITERAL_like||LA(2)==LITERAL_between||LA(2)==LITERAL_in||LA(2)==LITERAL_exists||LA(2)==LITERAL_escape||LA(2)==120||LA(2)==PLUS||LA(2)==MINUS||LA(2)==STRING_LITERAL||LA(2)==QUESTION||LA(2)==INT||LA(2)==REAL||LA(2)==BINSTR||LA(2)==HEXSTR||LA(2)==LITERAL_case||LA(2)==LITERAL_when||LA(2)==LITERAL_then||LA(2)==LITERAL_else||LA(2)==LITERAL_end||LA(2)==LITERAL_hour||LA(2)==LITERAL_left||LA(2)==LITERAL_minute||LA(2)==LITERAL_month||LA(2)==LITERAL_right||LA(2)==LITERAL_second||LA(2)==LITERAL_year||LA(2)==LITERAL_user||LA(2)==LITERAL_current_user||LA(2)==LITERAL_session_user||LA(2)==LITERAL_system_user||LA(2)==LITERAL_current_date||LA(2)==LITERAL_current_time||LA(2)==LITERAL_current_timestamp||LA(2)==LITERAL_sql_tsi_frac_second||LA(2)==LITERAL_sql_tsi_second||LA(2)==LITERAL_sql_tsi_minute||LA(2)==LITERAL_sql_tsi_hour||LA(2)==LITERAL_sql_tsi_day||LA(2)==LITERAL_sql_tsi_week||LA(2)==LITERAL_sql_tsi_month||LA(2)==LITERAL_sql_tsi_quarter||LA(2)==LITERAL_sql_tsi_year||LA(2)==LITERAL_cast||LA(2)==LITERAL_true||LA(2)==LITERAL_false||LA(2)==LITERAL_avg||LA(2)==LITERAL_min||LA(2)==LITERAL_max||LA(2)==LITERAL_sum||LA(2)==LITERAL_count||LA(2)==LT||LA(2)==LE||LA(2)==GT||LA(2)==GE||LA(2)==NE||LA(2)==SLASH||LA(2)==LITERAL_cross||LA(2)==LITERAL_join||LA(2)==LITERAL_natural||LA(2)==LITERAL_union||LA(2)==LITERAL_inner||LA(2)==LITERAL_outer||LA(2)==LITERAL_intersect||LA(2)==LITERAL_except||LA(2)==ID)) {
4704            }
4705            else {
4706                throw new NoViableAltException(LT(1), getFilename());
4707            }
4708            }
4709        }
4710        
4711    public final VectorExpression vectorExpression() throws RecognitionException, TokenStreamException {
4712        VectorExpression e;
4713        
4714        
4715            e = new VectorExpression();
4716            Expression f = null;
4717        
4718        
4719        match(LPAREN);
4720        {
4721        switch ( LA(1)) {
4722        case LITERAL_unique:
4723        case LPAREN:
4724        case LITERAL_default:
4725        case LITERAL_insert:
4726        case LITERAL_not:
4727        case LITERAL_null:
4728        case LITERAL_char:
4729        case LITERAL_date:
4730        case LITERAL_time:
4731        case LITERAL_timestamp:
4732        case LITERAL_interval:
4733        case LITERAL_exists:
4734        case PLUS:
4735        case MINUS:
4736        case STRING_LITERAL:
4737        case QUESTION:
4738        case INT:
4739        case REAL:
4740        case BINSTR:
4741        case HEXSTR:
4742        case LITERAL_case:
4743        case LITERAL_hour:
4744        case LITERAL_left:
4745        case LITERAL_minute:
4746        case LITERAL_month:
4747        case LITERAL_right:
4748        case LITERAL_second:
4749        case LITERAL_year:
4750        case LITERAL_user:
4751        case LITERAL_current_user:
4752        case LITERAL_session_user:
4753        case LITERAL_system_user:
4754        case LITERAL_current_date:
4755        case LITERAL_current_time:
4756        case LITERAL_current_timestamp:
4757        case LITERAL_sql_tsi_frac_second:
4758        case LITERAL_sql_tsi_second:
4759        case LITERAL_sql_tsi_minute:
4760        case LITERAL_sql_tsi_hour:
4761        case LITERAL_sql_tsi_day:
4762        case LITERAL_sql_tsi_week:
4763        case LITERAL_sql_tsi_month:
4764        case LITERAL_sql_tsi_quarter:
4765        case LITERAL_sql_tsi_year:
4766        case LITERAL_cast:
4767        case LITERAL_true:
4768        case LITERAL_false:
4769        case LITERAL_avg:
4770        case LITERAL_min:
4771        case LITERAL_max:
4772        case LITERAL_sum:
4773        case LITERAL_count:
4774        case ID:
4775        {
4776            f=scalarExpression();
4777            if ( inputState.guessing==0 ) {
4778                
4779                                e.addElement(f);
4780                            
4781            }
4782            {
4783            _loop233:
4784            do {
4785                if ((LA(1)==COMMA||LA(1)==LITERAL_from||LA(1)==LITERAL_for)) {
4786                    {
4787                    switch ( LA(1)) {
4788                    case COMMA:
4789                    {
4790                        match(COMMA);
4791                        break;
4792                    }
4793                    case LITERAL_from:
4794                    {
4795                        match(LITERAL_from);
4796                        break;
4797                    }
4798                    case LITERAL_for:
4799                    {
4800                        match(LITERAL_for);
4801                        break;
4802                    }
4803                    default:
4804                    {
4805                        throw new NoViableAltException(LT(1), getFilename());
4806                    }
4807                    }
4808                    }
4809                    f=scalarExpression();
4810                    if ( inputState.guessing==0 ) {
4811                        
4812                                        e.addElement(f);
4813                                    
4814                    }
4815                }
4816                else {
4817                    break _loop233;
4818                }
4819                
4820            } while (true);
4821            }
4822            break;
4823        }
4824        case RPAREN:
4825        {
4826            break;
4827        }
4828        default:
4829        {
4830            throw new NoViableAltException(LT(1), getFilename());
4831        }
4832        }
4833        }
4834        match(RPAREN);
4835        return e;
4836    }
4837    
4838    public final Expression scalarExpression() throws RecognitionException, TokenStreamException {
4839        Expression e;
4840        
4841        
4842            e = null;
4843            Expression f = null;
4844        
4845        
4846        e=orExpression();
4847        {
4848        _loop237:
4849        do {
4850            if ((LA(1)==CONCAT) && (LA(2)==LITERAL_unique||LA(2)==LPAREN||LA(2)==LITERAL_default||LA(2)==LITERAL_insert||LA(2)==LITERAL_not||LA(2)==LITERAL_null||LA(2)==LITERAL_char||LA(2)==LITERAL_date||LA(2)==LITERAL_time||LA(2)==LITERAL_timestamp||LA(2)==LITERAL_interval||LA(2)==LITERAL_exists||LA(2)==PLUS||LA(2)==MINUS||LA(2)==STRING_LITERAL||LA(2)==QUESTION||LA(2)==INT||LA(2)==REAL||LA(2)==BINSTR||LA(2)==HEXSTR||LA(2)==LITERAL_case||LA(2)==LITERAL_hour||LA(2)==LITERAL_left||LA(2)==LITERAL_minute||LA(2)==LITERAL_month||LA(2)==LITERAL_right||LA(2)==LITERAL_second||LA(2)==LITERAL_year||LA(2)==LITERAL_user||LA(2)==LITERAL_current_user||LA(2)==LITERAL_session_user||LA(2)==LITERAL_system_user||LA(2)==LITERAL_current_date||LA(2)==LITERAL_current_time||LA(2)==LITERAL_current_timestamp||LA(2)==LITERAL_sql_tsi_frac_second||LA(2)==LITERAL_sql_tsi_second||LA(2)==LITERAL_sql_tsi_minute||LA(2)==LITERAL_sql_tsi_hour||LA(2)==LITERAL_sql_tsi_day||LA(2)==LITERAL_sql_tsi_week||LA(2)==LITERAL_sql_tsi_month||LA(2)==LITERAL_sql_tsi_quarter||LA(2)==LITERAL_sql_tsi_year||LA(2)==LITERAL_cast||LA(2)==LITERAL_true||LA(2)==LITERAL_false||LA(2)==LITERAL_avg||LA(2)==LITERAL_min||LA(2)==LITERAL_max||LA(2)==LITERAL_sum||LA(2)==LITERAL_count||LA(2)==ID)) {
4851                match(CONCAT);
4852                f=orExpression();
4853                if ( inputState.guessing==0 ) {
4854                    
4855                                    e = new BinaryExpression(Op.CONCAT, e, f);
4856                                
4857                }
4858            }
4859            else {
4860                break _loop237;
4861            }
4862            
4863        } while (true);
4864        }
4865        return e;
4866    }
4867    
4868    public final Expression orExpression() throws RecognitionException, TokenStreamException {
4869        Expression e;
4870        
4871        
4872            e = null;
4873            Expression f = null;
4874        
4875        
4876        e=andExpression();
4877        {
4878        _loop240:
4879        do {
4880            if ((LA(1)==LITERAL_or) && (LA(2)==LITERAL_unique||LA(2)==LPAREN||LA(2)==LITERAL_default||LA(2)==LITERAL_insert||LA(2)==LITERAL_not||LA(2)==LITERAL_null||LA(2)==LITERAL_char||LA(2)==LITERAL_date||LA(2)==LITERAL_time||LA(2)==LITERAL_timestamp||LA(2)==LITERAL_interval||LA(2)==LITERAL_exists||LA(2)==PLUS||LA(2)==MINUS||LA(2)==STRING_LITERAL||LA(2)==QUESTION||LA(2)==INT||LA(2)==REAL||LA(2)==BINSTR||LA(2)==HEXSTR||LA(2)==LITERAL_case||LA(2)==LITERAL_hour||LA(2)==LITERAL_left||LA(2)==LITERAL_minute||LA(2)==LITERAL_month||LA(2)==LITERAL_right||LA(2)==LITERAL_second||LA(2)==LITERAL_year||LA(2)==LITERAL_user||LA(2)==LITERAL_current_user||LA(2)==LITERAL_session_user||LA(2)==LITERAL_system_user||LA(2)==LITERAL_current_date||LA(2)==LITERAL_current_time||LA(2)==LITERAL_current_timestamp||LA(2)==LITERAL_sql_tsi_frac_second||LA(2)==LITERAL_sql_tsi_second||LA(2)==LITERAL_sql_tsi_minute||LA(2)==LITERAL_sql_tsi_hour||LA(2)==LITERAL_sql_tsi_day||LA(2)==LITERAL_sql_tsi_week||LA(2)==LITERAL_sql_tsi_month||LA(2)==LITERAL_sql_tsi_quarter||LA(2)==LITERAL_sql_tsi_year||LA(2)==LITERAL_cast||LA(2)==LITERAL_true||LA(2)==LITERAL_false||LA(2)==LITERAL_avg||LA(2)==LITERAL_min||LA(2)==LITERAL_max||LA(2)==LITERAL_sum||LA(2)==LITERAL_count||LA(2)==ID)) {
4881                match(LITERAL_or);
4882                f=andExpression();
4883                if ( inputState.guessing==0 ) {
4884                    
4885                                    e = new BinaryExpression(Op.OR, e, f);
4886                                
4887                }
4888            }
4889            else {
4890                break _loop240;
4891            }
4892            
4893        } while (true);
4894        }
4895        return e;
4896    }
4897    
4898    public final Expression andExpression() throws RecognitionException, TokenStreamException {
4899        Expression e;
4900        
4901        
4902            e = null;
4903            Expression f = null;
4904        
4905        
4906        e=notExpression();
4907        {
4908        _loop243:
4909        do {
4910            if ((LA(1)==LITERAL_and) && (LA(2)==LITERAL_unique||LA(2)==LPAREN||LA(2)==LITERAL_default||LA(2)==LITERAL_insert||LA(2)==LITERAL_not||LA(2)==LITERAL_null||LA(2)==LITERAL_char||LA(2)==LITERAL_date||LA(2)==LITERAL_time||LA(2)==LITERAL_timestamp||LA(2)==LITERAL_interval||LA(2)==LITERAL_exists||LA(2)==PLUS||LA(2)==MINUS||LA(2)==STRING_LITERAL||LA(2)==QUESTION||LA(2)==INT||LA(2)==REAL||LA(2)==BINSTR||LA(2)==HEXSTR||LA(2)==LITERAL_case||LA(2)==LITERAL_hour||LA(2)==LITERAL_left||LA(2)==LITERAL_minute||LA(2)==LITERAL_month||LA(2)==LITERAL_right||LA(2)==LITERAL_second||LA(2)==LITERAL_year||LA(2)==LITERAL_user||LA(2)==LITERAL_current_user||LA(2)==LITERAL_session_user||LA(2)==LITERAL_system_user||LA(2)==LITERAL_current_date||LA(2)==LITERAL_current_time||LA(2)==LITERAL_current_timestamp||LA(2)==LITERAL_sql_tsi_frac_second||LA(2)==LITERAL_sql_tsi_second||LA(2)==LITERAL_sql_tsi_minute||LA(2)==LITERAL_sql_tsi_hour||LA(2)==LITERAL_sql_tsi_day||LA(2)==LITERAL_sql_tsi_week||LA(2)==LITERAL_sql_tsi_month||LA(2)==LITERAL_sql_tsi_quarter||LA(2)==LITERAL_sql_tsi_year||LA(2)==LITERAL_cast||LA(2)==LITERAL_true||LA(2)==LITERAL_false||LA(2)==LITERAL_avg||LA(2)==LITERAL_min||LA(2)==LITERAL_max||LA(2)==LITERAL_sum||LA(2)==LITERAL_count||LA(2)==ID)) {
4911                match(LITERAL_and);
4912                f=notExpression();
4913                if ( inputState.guessing==0 ) {
4914                    
4915                                    e = new BinaryExpression(Op.AND, e, f);
4916                                
4917                }
4918            }
4919            else {
4920                break _loop243;
4921            }
4922            
4923        } while (true);
4924        }
4925        return e;
4926    }
4927    
4928    public final Expression notExpression() throws RecognitionException, TokenStreamException {
4929        Expression e;
4930        
4931        
4932            e = null;
4933            boolean not = false;
4934        
4935        
4936        not=isOrNot();
4937        e=compareExpression();
4938        if ( inputState.guessing==0 ) {
4939            
4940                        if (not) e.invert();
4941                    
4942        }
4943        return e;
4944    }
4945    
4946    public final boolean isOrNot() throws RecognitionException, TokenStreamException {
4947        boolean not;
4948        
4949        
4950            not = false;
4951        
4952        
4953        {
4954        switch ( LA(1)) {
4955        case LITERAL_not:
4956        {
4957            match(LITERAL_not);
4958            if ( inputState.guessing==0 ) {
4959                not = true;
4960            }
4961            break;
4962        }
4963        case LITERAL_unique:
4964        case LPAREN:
4965        case LITERAL_default:
4966        case LITERAL_insert:
4967        case LITERAL_null:
4968        case LITERAL_char:
4969        case LITERAL_date:
4970        case LITERAL_time:
4971        case LITERAL_timestamp:
4972        case LITERAL_interval:
4973        case LITERAL_like:
4974        case LITERAL_between:
4975        case LITERAL_in:
4976        case LITERAL_exists:
4977        case PLUS:
4978        case MINUS:
4979        case STRING_LITERAL:
4980        case QUESTION:
4981        case INT:
4982        case REAL:
4983        case BINSTR:
4984        case HEXSTR:
4985        case LITERAL_case:
4986        case LITERAL_hour:
4987        case LITERAL_left:
4988        case LITERAL_minute:
4989        case LITERAL_month:
4990        case LITERAL_right:
4991        case LITERAL_second:
4992        case LITERAL_year:
4993        case LITERAL_user:
4994        case LITERAL_current_user:
4995        case LITERAL_session_user:
4996        case LITERAL_system_user:
4997        case LITERAL_current_date:
4998        case LITERAL_current_time:
4999        case LITERAL_current_timestamp:
5000        case LITERAL_sql_tsi_frac_second:
5001        case LITERAL_sql_tsi_second:
5002        case LITERAL_sql_tsi_minute:
5003        case LITERAL_sql_tsi_hour:
5004        case LITERAL_sql_tsi_day:
5005        case LITERAL_sql_tsi_week:
5006        case LITERAL_sql_tsi_month:
5007        case LITERAL_sql_tsi_quarter:
5008        case LITERAL_sql_tsi_year:
5009        case LITERAL_cast:
5010        case LITERAL_true:
5011        case LITERAL_false:
5012        case LITERAL_avg:
5013        case LITERAL_min:
5014        case LITERAL_max:
5015        case LITERAL_sum:
5016        case LITERAL_count:
5017        case LITERAL_unknown:
5018        case ID:
5019        {
5020            break;
5021        }
5022        default:
5023        {
5024            throw new NoViableAltException(LT(1), getFilename());
5025        }
5026        }
5027        }
5028        return not;
5029    }
5030    
5031    public final Expression compareExpression() throws RecognitionException, TokenStreamException {
5032        Expression e;
5033        
5034        
5035            e = null;
5036            Expression f = null;
5037            Expression g = null;
5038            Expression q = null;
5039            boolean not = false;
5040            int op = 0;
5041            int quant = 0;
5042        
5043        
5044        switch ( LA(1)) {
5045        case LPAREN:
5046        case LITERAL_default:
5047        case LITERAL_insert:
5048        case LITERAL_null:
5049        case LITERAL_char:
5050        case LITERAL_date:
5051        case LITERAL_time:
5052        case LITERAL_timestamp:
5053        case LITERAL_interval:
5054        case PLUS:
5055        case MINUS:
5056        case STRING_LITERAL:
5057        case QUESTION:
5058        case INT:
5059        case REAL:
5060        case BINSTR:
5061        case HEXSTR:
5062        case LITERAL_case:
5063        case LITERAL_hour:
5064        case LITERAL_left:
5065        case LITERAL_minute:
5066        case LITERAL_month:
5067        case LITERAL_right:
5068        case LITERAL_second:
5069        case LITERAL_year:
5070        case LITERAL_user:
5071        case LITERAL_current_user:
5072        case LITERAL_session_user:
5073        case LITERAL_system_user:
5074        case LITERAL_current_date:
5075        case LITERAL_current_time:
5076        case LITERAL_current_timestamp:
5077        case LITERAL_sql_tsi_frac_second:
5078        case LITERAL_sql_tsi_second:
5079        case LITERAL_sql_tsi_minute:
5080        case LITERAL_sql_tsi_hour:
5081        case LITERAL_sql_tsi_day:
5082        case LITERAL_sql_tsi_week:
5083        case LITERAL_sql_tsi_month:
5084        case LITERAL_sql_tsi_quarter:
5085        case LITERAL_sql_tsi_year:
5086        case LITERAL_cast:
5087        case LITERAL_true:
5088        case LITERAL_false:
5089        case LITERAL_avg:
5090        case LITERAL_min:
5091        case LITERAL_max:
5092        case LITERAL_sum:
5093        case LITERAL_count:
5094        case ID:
5095        {
5096            e=simpleExpression();
5097            {
5098            switch ( LA(1)) {
5099            case LITERAL_is:
5100            {
5101                match(LITERAL_is);
5102                not=isOrNot();
5103                op=truthConst();
5104                if ( inputState.guessing==0 ) {
5105                    
5106                                    e = new UnaryExpression(op, e);
5107                                    if (not) e.invert();
5108                                
5109                }
5110                break;
5111            }
5112            case EQ:
5113            case LT:
5114            case LE:
5115            case GT:
5116            case GE:
5117            case NE:
5118            {
5119                op=relOp();
5120                {
5121                switch ( LA(1)) {
5122                case LPAREN:
5123                case LITERAL_default:
5124                case LITERAL_insert:
5125                case LITERAL_null:
5126                case LITERAL_char:
5127                case LITERAL_date:
5128                case LITERAL_time:
5129                case LITERAL_timestamp:
5130                case LITERAL_interval:
5131                case PLUS:
5132                case MINUS:
5133                case STRING_LITERAL:
5134                case QUESTION:
5135                case INT:
5136                case REAL:
5137                case BINSTR:
5138                case HEXSTR:
5139                case LITERAL_case:
5140                case LITERAL_hour:
5141                case LITERAL_left:
5142                case LITERAL_minute:
5143                case LITERAL_month:
5144                case LITERAL_right:
5145                case LITERAL_second:
5146                case LITERAL_year:
5147                case LITERAL_user:
5148                case LITERAL_current_user:
5149                case LITERAL_session_user:
5150                case LITERAL_system_user:
5151                case LITERAL_current_date:
5152                case LITERAL_current_time:
5153                case LITERAL_current_timestamp:
5154                case LITERAL_sql_tsi_frac_second:
5155                case LITERAL_sql_tsi_second:
5156                case LITERAL_sql_tsi_minute:
5157                case LITERAL_sql_tsi_hour:
5158                case LITERAL_sql_tsi_day:
5159                case LITERAL_sql_tsi_week:
5160                case LITERAL_sql_tsi_month:
5161                case LITERAL_sql_tsi_quarter:
5162                case LITERAL_sql_tsi_year:
5163                case LITERAL_cast:
5164                case LITERAL_true:
5165                case LITERAL_false:
5166                case LITERAL_avg:
5167                case LITERAL_min:
5168                case LITERAL_max:
5169                case LITERAL_sum:
5170                case LITERAL_count:
5171                case ID:
5172                {
5173                    f=simpleExpression();
5174                    if ( inputState.guessing==0 ) {
5175                        
5176                                            e = new BinaryExpression(op, e, f);
5177                                        
5178                    }
5179                    break;
5180                }
5181                case LITERAL_all:
5182                case LITERAL_any:
5183                case LITERAL_some:
5184                {
5185                    quant=quantifier();
5186                    q=queryExpression();
5187                    if ( inputState.guessing==0 ) {
5188                        
5189                                            e = new QuantifiedCompare(e, op,
5190                                                          quant, q);
5191                                        
5192                    }
5193                    break;
5194                }
5195                default:
5196                {
5197                    throw new NoViableAltException(LT(1), getFilename());
5198                }
5199                }
5200                }
5201                break;
5202            }
5203            default:
5204                boolean synPredMatched250 = false;
5205                if (((LA(1)==LITERAL_not||LA(1)==LITERAL_like||LA(1)==LITERAL_between||LA(1)==LITERAL_in) && (LA(2)==LITERAL_table||LA(2)==LPAREN||LA(2)==LITERAL_default||LA(2)==LITERAL_select||LA(2)==LITERAL_insert||LA(2)==LITERAL_null||LA(2)==LITERAL_char||LA(2)==LITERAL_date||LA(2)==LITERAL_time||LA(2)==LITERAL_timestamp||LA(2)==LITERAL_interval||LA(2)==LITERAL_values||LA(2)==LITERAL_like||LA(2)==LITERAL_between||LA(2)==LITERAL_in||LA(2)==PLUS||LA(2)==MINUS||LA(2)==STRING_LITERAL||LA(2)==QUESTION||LA(2)==INT||LA(2)==REAL||LA(2)==BINSTR||LA(2)==HEXSTR||LA(2)==LITERAL_case||LA(2)==LITERAL_hour||LA(2)==LITERAL_left||LA(2)==LITERAL_minute||LA(2)==LITERAL_month||LA(2)==LITERAL_right||LA(2)==LITERAL_second||LA(2)==LITERAL_year||LA(2)==LITERAL_user||LA(2)==LITERAL_current_user||LA(2)==LITERAL_session_user||LA(2)==LITERAL_system_user||LA(2)==LITERAL_current_date||LA(2)==LITERAL_current_time||LA(2)==LITERAL_current_timestamp||LA(2)==LITERAL_sql_tsi_frac_second||LA(2)==LITERAL_sql_tsi_second||LA(2)==LITERAL_sql_tsi_minute||LA(2)==LITERAL_sql_tsi_hour||LA(2)==LITERAL_sql_tsi_day||LA(2)==LITERAL_sql_tsi_week||LA(2)==LITERAL_sql_tsi_month||LA(2)==LITERAL_sql_tsi_quarter||LA(2)==LITERAL_sql_tsi_year||LA(2)==LITERAL_cast||LA(2)==LITERAL_true||LA(2)==LITERAL_false||LA(2)==LITERAL_avg||LA(2)==LITERAL_min||LA(2)==LITERAL_max||LA(2)==LITERAL_sum||LA(2)==LITERAL_count||LA(2)==ID))) {
5206                    int _m250 = mark();
5207                    synPredMatched250 = true;
5208                    inputState.guessing++;
5209                    try {
5210                        {
5211                        isOrNot();
5212                        {
5213                        switch ( LA(1)) {
5214                        case LITERAL_like:
5215                        {
5216                            match(LITERAL_like);
5217                            break;
5218                        }
5219                        case LITERAL_between:
5220                        {
5221                            match(LITERAL_between);
5222                            break;
5223                        }
5224                        case LITERAL_in:
5225                        {
5226                            match(LITERAL_in);
5227                            break;
5228                        }
5229                        default:
5230                        {
5231                            throw new NoViableAltException(LT(1), getFilename());
5232                        }
5233                        }
5234                        }
5235                        }
5236                    }
5237                    catch (RecognitionException pe) {
5238                        synPredMatched250 = false;
5239                    }
5240                    rewind(_m250);
5241                    inputState.guessing--;
5242                }
5243                if ( synPredMatched250 ) {
5244                    not=isOrNot();
5245                    {
5246                    switch ( LA(1)) {
5247                    case LITERAL_like:
5248                    {
5249                        match(LITERAL_like);
5250                        f=patternExpression();
5251                        if ( inputState.guessing==0 ) {
5252                            
5253                                                op = Op.LIKE;
5254                                                e = new BinaryExpression(op, e, f);
5255                                                if (not) e.invert();
5256                                            
5257                        }
5258                        break;
5259                    }
5260                    case LITERAL_between:
5261                    {
5262                        match(LITERAL_between);
5263                        f=simpleExpression();
5264                        match(LITERAL_and);
5265                        g=simpleExpression();
5266                        if ( inputState.guessing==0 ) {
5267                            
5268                                                op = Op.BETWEEN;
5269                                                e = new TernaryExpression(op, e, f, g);
5270                                                if (not) e.invert();
5271                                            
5272                        }
5273                        break;
5274                    }
5275                    case LITERAL_in:
5276                    {
5277                        match(LITERAL_in);
5278                        {
5279                        boolean synPredMatched254 = false;
5280                        if (((LA(1)==LPAREN) && (LA(2)==LITERAL_unique||LA(2)==LPAREN||LA(2)==RPAREN||LA(2)==LITERAL_default||LA(2)==LITERAL_insert||LA(2)==LITERAL_not||LA(2)==LITERAL_null||LA(2)==LITERAL_char||LA(2)==LITERAL_date||LA(2)==LITERAL_time||LA(2)==LITERAL_timestamp||LA(2)==LITERAL_interval||LA(2)==LITERAL_exists||LA(2)==PLUS||LA(2)==MINUS||LA(2)==STRING_LITERAL||LA(2)==QUESTION||LA(2)==INT||LA(2)==REAL||LA(2)==BINSTR||LA(2)==HEXSTR||LA(2)==LITERAL_case||LA(2)==LITERAL_hour||LA(2)==LITERAL_left||LA(2)==LITERAL_minute||LA(2)==LITERAL_month||LA(2)==LITERAL_right||LA(2)==LITERAL_second||LA(2)==LITERAL_year||LA(2)==LITERAL_user||LA(2)==LITERAL_current_user||LA(2)==LITERAL_session_user||LA(2)==LITERAL_system_user||LA(2)==LITERAL_current_date||LA(2)==LITERAL_current_time||LA(2)==LITERAL_current_timestamp||LA(2)==LITERAL_sql_tsi_frac_second||LA(2)==LITERAL_sql_tsi_second||LA(2)==LITERAL_sql_tsi_minute||LA(2)==LITERAL_sql_tsi_hour||LA(2)==LITERAL_sql_tsi_day||LA(2)==LITERAL_sql_tsi_week||LA(2)==LITERAL_sql_tsi_month||LA(2)==LITERAL_sql_tsi_quarter||LA(2)==LITERAL_sql_tsi_year||LA(2)==LITERAL_cast||LA(2)==LITERAL_true||LA(2)==LITERAL_false||LA(2)==LITERAL_avg||LA(2)==LITERAL_min||LA(2)==LITERAL_max||LA(2)==LITERAL_sum||LA(2)==LITERAL_count||LA(2)==ID))) {
5281                            int _m254 = mark();
5282                            synPredMatched254 = true;
5283                            inputState.guessing++;
5284                            try {
5285                                {
5286                                match(LPAREN);
5287                                unaryExpression();
5288                                }
5289                            }
5290                            catch (RecognitionException pe) {
5291                                synPredMatched254 = false;
5292                            }
5293                            rewind(_m254);
5294                            inputState.guessing--;
5295                        }
5296                        if ( synPredMatched254 ) {
5297                            q=vectorExpression();
5298                        }
5299                        else if ((LA(1)==LITERAL_table||LA(1)==LPAREN||LA(1)==LITERAL_select||LA(1)==LITERAL_values||LA(1)==ID) && (LA(2)==EOF||LA(2)==LITERAL_create||LA(2)==LITERAL_unique||LA(2)==LITERAL_table||LA(2)==LITERAL_on||LA(2)==LPAREN||LA(2)==RPAREN||LA(2)==LITERAL_constraint||LA(2)==LITERAL_primary||LA(2)==LITERAL_check||LA(2)==LITERAL_first||LA(2)==LITERAL_after||LA(2)==LITERAL_default||LA(2)==LITERAL_as||LA(2)==LITERAL_with||LA(2)==COMMA||LA(2)==LITERAL_where||LA(2)==LITERAL_from||LA(2)==LITERAL_grant||LA(2)==LITERAL_all||LA(2)==LITERAL_select||LA(2)==LITERAL_insert||LA(2)==LITERAL_references||LA(2)==LITERAL_not||LA(2)==LITERAL_null||LA(2)==LITERAL_full||LA(2)==LITERAL_initially||LA(2)==LITERAL_deferrable||LA(2)==LITERAL_char||LA(2)==LITERAL_date||LA(2)==LITERAL_time||LA(2)==LITERAL_timestamp||LA(2)==LITERAL_interval||LA(2)==LITERAL_for||LA(2)==LITERAL_order||LA(2)==LITERAL_distinct||LA(2)==STAR||LA(2)==LITERAL_having||LA(2)==LITERAL_values||LA(2)==LITERAL_using||LA(2)==LITERAL_group||LA(2)==CONCAT||LA(2)==LITERAL_or||LA(2)==LITERAL_and||LA(2)==LITERAL_exists||LA(2)==PLUS||LA(2)==MINUS||LA(2)==STRING_LITERAL||LA(2)==QUESTION||LA(2)==INT||LA(2)==REAL||LA(2)==BINSTR||LA(2)==HEXSTR||LA(2)==LITERAL_case||LA(2)==LITERAL_when||LA(2)==LITERAL_then||LA(2)==LITERAL_else||LA(2)==LITERAL_end||LA(2)==LITERAL_hour||LA(2)==LITERAL_left||LA(2)==LITERAL_minute||LA(2)==LITERAL_month||LA(2)==LITERAL_right||LA(2)==LITERAL_second||LA(2)==LITERAL_year||LA(2)==LITERAL_user||LA(2)==LITERAL_current_user||LA(2)==LITERAL_session_user||LA(2)==LITERAL_system_user||LA(2)==LITERAL_current_date||LA(2)==LITERAL_current_time||LA(2)==LITERAL_current_timestamp||LA(2)==LITERAL_sql_tsi_frac_second||LA(2)==LITERAL_sql_tsi_second||LA(2)==LITERAL_sql_tsi_minute||LA(2)==LITERAL_sql_tsi_hour||LA(2)==LITERAL_sql_tsi_day||LA(2)==LITERAL_sql_tsi_week||LA(2)==LITERAL_sql_tsi_month||LA(2)==LITERAL_sql_tsi_quarter||LA(2)==LITERAL_sql_tsi_year||LA(2)==LITERAL_cast||LA(2)==LITERAL_true||LA(2)==LITERAL_false||LA(2)==LITERAL_avg||LA(2)==LITERAL_min||LA(2)==LITERAL_max||LA(2)==LITERAL_sum||LA(2)==LITERAL_count||LA(2)==LITERAL_cross||LA(2)==LITERAL_join||LA(2)==LITERAL_natural||LA(2)==LITERAL_union||LA(2)==LITERAL_inner||LA(2)==LITERAL_intersect||LA(2)==LITERAL_except||LA(2)==ID)) {
5300                            q=queryExpression();
5301                        }
5302                        else {
5303                            throw new NoViableAltException(LT(1), getFilename());
5304                        }
5305                        
5306                        }
5307                        if ( inputState.guessing==0 ) {
5308                            
5309                                                e = new InExpression(e, q);
5310                                                if (not) e.invert();
5311                                            
5312                        }
5313                        break;
5314                    }
5315                    default:
5316                    {
5317                        throw new NoViableAltException(LT(1), getFilename());
5318                    }
5319                    }
5320                    }
5321                }
5322                else if ((LA(1)==EOF||LA(1)==LITERAL_create||LA(1)==LITERAL_unique||LA(1)==LITERAL_on||LA(1)==RPAREN||LA(1)==LITERAL_constraint||LA(1)==LITERAL_primary||LA(1)==LITERAL_check||LA(1)==LITERAL_first||LA(1)==LITERAL_after||LA(1)==LITERAL_default||LA(1)==LITERAL_as||LA(1)==LITERAL_with||LA(1)==COMMA||LA(1)==LITERAL_where||LA(1)==LITERAL_from||LA(1)==LITERAL_grant||LA(1)==LITERAL_references||LA(1)==LITERAL_not||LA(1)==LITERAL_full||LA(1)==LITERAL_initially||LA(1)==LITERAL_deferrable||LA(1)==LITERAL_for||LA(1)==LITERAL_order||LA(1)==LITERAL_having||LA(1)==LITERAL_using||LA(1)==LITERAL_group||LA(1)==CONCAT||LA(1)==LITERAL_or||LA(1)==LITERAL_and||LA(1)==LITERAL_when||LA(1)==LITERAL_then||LA(1)==LITERAL_else||LA(1)==LITERAL_end||LA(1)==LITERAL_left||LA(1)==LITERAL_right||LA(1)==LITERAL_cross||LA(1)==LITERAL_join||LA(1)==LITERAL_natural||LA(1)==LITERAL_union||LA(1)==LITERAL_inner||LA(1)==LITERAL_intersect||LA(1)==LITERAL_except||LA(1)==ID) && (LA(2)==EOF||LA(2)==LITERAL_create||LA(2)==LITERAL_unique||LA(2)==LITERAL_index||LA(2)==LITERAL_temporary||LA(2)==LITERAL_table||LA(2)==LITERAL_view||LA(2)==LITERAL_on||LA(2)==LPAREN||LA(2)==RPAREN||LA(2)==LITERAL_constraint||LA(2)==LITERAL_primary||LA(2)==LITERAL_foreign||LA(2)==LITERAL_check||LA(2)==LITERAL_first||LA(2)==LITERAL_after||LA(2)==LITERAL_default||LA(2)==LITERAL_as||LA(2)==LITERAL_with||LA(2)==LITERAL_cascaded||LA(2)==LITERAL_update||LA(2)==COMMA||LA(2)==LITERAL_where||LA(2)==EQ||LA(2)==LITERAL_delete||LA(2)==LITERAL_from||LA(2)==LITERAL_global||LA(2)==LITERAL_local||LA(2)==LITERAL_grant||LA(2)==LITERAL_all||LA(2)==LITERAL_select||LA(2)==LITERAL_insert||LA(2)==LITERAL_references||LA(2)==LITERAL_usage||LA(2)==LITERAL_not||LA(2)==LITERAL_null||LA(2)==LITERAL_key||LA(2)==LITERAL_identity||LA(2)==LITERAL_full||LA(2)==LITERAL_initially||LA(2)==LITERAL_deferred||LA(2)==LITERAL_immediate||LA(2)==LITERAL_deferrable||LA(2)==LITERAL_bit||LA(2)==LITERAL_varbinary||LA(2)==LITERAL_binary||LA(2)==LITERAL_blob||LA(2)==LITERAL_clob||LA(2)==LITERAL_character||LA(2)==LITERAL_char||LA(2)==LITERAL_varchar||LA(2)==LITERAL_int||LA(2)==LITERAL_integer||LA(2)==LITERAL_smallint||LA(2)==LITERAL_tinyint||LA(2)==LITERAL_bigint||LA(2)==LITERAL_dec||LA(2)==LITERAL_decimal||LA(2)==LITERAL_numeric||LA(2)==LITERAL_real||LA(2)==LITERAL_double||LA(2)==LITERAL_float||LA(2)==LITERAL_boolean||LA(2)==LITERAL_date||LA(2)==LITERAL_time||LA(2)==LITERAL_timestamp||LA(2)==LITERAL_interval||LA(2)==LITERAL_for||LA(2)==LITERAL_read||LA(2)==LITERAL_order||LA(2)==LITERAL_by||LA(2)==STAR||LA(2)==LITERAL_having||LA(2)==LITERAL_corresponding||LA(2)==LITERAL_values||LA(2)==LITERAL_using||LA(2)==LITERAL_group||LA(2)==CONCAT||LA(2)==LITERAL_or||LA(2)==LITERAL_and||LA(2)==LITERAL_is||LA(2)==LITERAL_like||LA(2)==LITERAL_between||LA(2)==LITERAL_in||LA(2)==LITERAL_exists||LA(2)==LITERAL_escape||LA(2)==120||LA(2)==PLUS||LA(2)==MINUS||LA(2)==STRING_LITERAL||LA(2)==QUESTION||LA(2)==INT||LA(2)==REAL||LA(2)==BINSTR||LA(2)==HEXSTR||LA(2)==LITERAL_case||LA(2)==LITERAL_when||LA(2)==LITERAL_then||LA(2)==LITERAL_else||LA(2)==LITERAL_end||LA(2)==LITERAL_hour||LA(2)==LITERAL_left||LA(2)==LITERAL_minute||LA(2)==LITERAL_month||LA(2)==LITERAL_right||LA(2)==LITERAL_second||LA(2)==LITERAL_year||LA(2)==LITERAL_user||LA(2)==LITERAL_current_user||LA(2)==LITERAL_session_user||LA(2)==LITERAL_system_user||LA(2)==LITERAL_current_date||LA(2)==LITERAL_current_time||LA(2)==LITERAL_current_timestamp||LA(2)==LITERAL_sql_tsi_frac_second||LA(2)==LITERAL_sql_tsi_second||LA(2)==LITERAL_sql_tsi_minute||LA(2)==LITERAL_sql_tsi_hour||LA(2)==LITERAL_sql_tsi_day||LA(2)==LITERAL_sql_tsi_week||LA(2)==LITERAL_sql_tsi_month||LA(2)==LITERAL_sql_tsi_quarter||LA(2)==LITERAL_sql_tsi_year||LA(2)==LITERAL_cast||LA(2)==LITERAL_true||LA(2)==LITERAL_false||LA(2)==LITERAL_avg||LA(2)==LITERAL_min||LA(2)==LITERAL_max||LA(2)==LITERAL_sum||LA(2)==LITERAL_count||LA(2)==LT||LA(2)==LE||LA(2)==GT||LA(2)==GE||LA(2)==NE||LA(2)==SLASH||LA(2)==LITERAL_cross||LA(2)==LITERAL_join||LA(2)==LITERAL_natural||LA(2)==LITERAL_union||LA(2)==LITERAL_inner||LA(2)==LITERAL_outer||LA(2)==LITERAL_intersect||LA(2)==LITERAL_except||LA(2)==ID)) {
5323                }
5324            else {
5325                throw new NoViableAltException(LT(1), getFilename());
5326            }
5327            }
5328            }
5329            break;
5330        }
5331        case LITERAL_exists:
5332        {
5333            match(LITERAL_exists);
5334            q=queryExpression();
5335            if ( inputState.guessing==0 ) {
5336                
5337                            e = new UnaryExpression(Op.EXISTS, q);
5338                        
5339            }
5340            break;
5341        }
5342        case LITERAL_unique:
5343        {
5344            match(LITERAL_unique);
5345            q=queryExpression();
5346            if ( inputState.guessing==0 ) {
5347                
5348                            e = new UnaryExpression(Op.UNIQUE, q);
5349                        
5350            }
5351            break;
5352        }
5353        default:
5354        {
5355            throw new NoViableAltException(LT(1), getFilename());
5356        }
5357        }
5358        return e;
5359    }
5360    
5361    public final Expression simpleExpression() throws RecognitionException, TokenStreamException {
5362        Expression e;
5363        
5364        
5365            e = null;
5366            Expression f = null;
5367            int op = 0;
5368        
5369        
5370        e=multExpression();
5371        {
5372        _loop261:
5373        do {
5374            if ((LA(1)==CONCAT||LA(1)==PLUS||LA(1)==MINUS) && (LA(2)==LPAREN||LA(2)==LITERAL_default||LA(2)==LITERAL_insert||LA(2)==LITERAL_null||LA(2)==LITERAL_char||LA(2)==LITERAL_date||LA(2)==LITERAL_time||LA(2)==LITERAL_timestamp||LA(2)==LITERAL_interval||LA(2)==PLUS||LA(2)==MINUS||LA(2)==STRING_LITERAL||LA(2)==QUESTION||LA(2)==INT||LA(2)==REAL||LA(2)==BINSTR||LA(2)==HEXSTR||LA(2)==LITERAL_case||LA(2)==LITERAL_hour||LA(2)==LITERAL_left||LA(2)==LITERAL_minute||LA(2)==LITERAL_month||LA(2)==LITERAL_right||LA(2)==LITERAL_second||LA(2)==LITERAL_year||LA(2)==LITERAL_user||LA(2)==LITERAL_current_user||LA(2)==LITERAL_session_user||LA(2)==LITERAL_system_user||LA(2)==LITERAL_current_date||LA(2)==LITERAL_current_time||LA(2)==LITERAL_current_timestamp||LA(2)==LITERAL_sql_tsi_frac_second||LA(2)==LITERAL_sql_tsi_second||LA(2)==LITERAL_sql_tsi_minute||LA(2)==LITERAL_sql_tsi_hour||LA(2)==LITERAL_sql_tsi_day||LA(2)==LITERAL_sql_tsi_week||LA(2)==LITERAL_sql_tsi_month||LA(2)==LITERAL_sql_tsi_quarter||LA(2)==LITERAL_sql_tsi_year||LA(2)==LITERAL_cast||LA(2)==LITERAL_true||LA(2)==LITERAL_false||LA(2)==LITERAL_avg||LA(2)==LITERAL_min||LA(2)==LITERAL_max||LA(2)==LITERAL_sum||LA(2)==LITERAL_count||LA(2)==ID)) {
5375                op=addOp();
5376                f=multExpression();
5377                if ( inputState.guessing==0 ) {
5378                        
5379                                    e = new BinaryExpression(op, e, f);
5380                                
5381                }
5382            }
5383            else {
5384                break _loop261;
5385            }
5386            
5387        } while (true);
5388        }
5389        return e;
5390    }
5391    
5392    public final int truthConst() throws RecognitionException, TokenStreamException {
5393        int t;
5394        
5395        
5396            t = 0;
5397        
5398        
5399        switch ( LA(1)) {
5400        case LITERAL_true:
5401        {
5402            match(LITERAL_true);
5403            if ( inputState.guessing==0 ) {
5404                t = Op.TRUE;
5405            }
5406            break;
5407        }
5408        case LITERAL_false:
5409        {
5410            match(LITERAL_false);
5411            if ( inputState.guessing==0 ) {
5412                t = Op.FALSE;
5413            }
5414            break;
5415        }
5416        case LITERAL_unknown:
5417        {
5418            match(LITERAL_unknown);
5419            if ( inputState.guessing==0 ) {
5420                t = Op.UNKNOWN;
5421            }
5422            break;
5423        }
5424        case LITERAL_null:
5425        {
5426            match(LITERAL_null);
5427            if ( inputState.guessing==0 ) {
5428                t = Op.NULL;
5429            }
5430            break;
5431        }
5432        default:
5433        {
5434            throw new NoViableAltException(LT(1), getFilename());
5435        }
5436        }
5437        return t;
5438    }
5439    
5440    public final int relOp() throws RecognitionException, TokenStreamException {
5441        int op;
5442        
5443        
5444            op = 0;
5445        
5446        
5447        switch ( LA(1)) {
5448        case LT:
5449        {
5450            match(LT);
5451            if ( inputState.guessing==0 ) {
5452                op = Op.LT;
5453            }
5454            break;
5455        }
5456        case LE:
5457        {
5458            match(LE);
5459            if ( inputState.guessing==0 ) {
5460                op = Op.LE;
5461            }
5462            break;
5463        }
5464        case GT:
5465        {
5466            match(GT);
5467            if ( inputState.guessing==0 ) {
5468                op = Op.GT;
5469            }
5470            break;
5471        }
5472        case GE:
5473        {
5474            match(GE);
5475            if ( inputState.guessing==0 ) {
5476                op = Op.GE;
5477            }
5478            break;
5479        }
5480        case EQ:
5481        {
5482            match(EQ);
5483            if ( inputState.guessing==0 ) {
5484                op = Op.EQ;
5485            }
5486            break;
5487        }
5488        case NE:
5489        {
5490            match(NE);
5491            if ( inputState.guessing==0 ) {
5492                op = Op.NE;
5493            }
5494            break;
5495        }
5496        default:
5497        {
5498            throw new NoViableAltException(LT(1), getFilename());
5499        }
5500        }
5501        return op;
5502    }
5503    
5504    public final int quantifier() throws RecognitionException, TokenStreamException {
5505        int op;
5506        
5507        
5508            op = 0;
5509        
5510        
5511        switch ( LA(1)) {
5512        case LITERAL_any:
5513        {
5514            match(LITERAL_any);
5515            if ( inputState.guessing==0 ) {
5516                op = Op.ANY;
5517            }
5518            break;
5519        }
5520        case LITERAL_all:
5521        {
5522            match(LITERAL_all);
5523            if ( inputState.guessing==0 ) {
5524                op = Op.ALL;
5525            }
5526            break;
5527        }
5528        case LITERAL_some:
5529        {
5530            match(LITERAL_some);
5531            if ( inputState.guessing==0 ) {
5532                op = Op.ANY;
5533            }
5534            break;
5535        }
5536        default:
5537        {
5538            throw new NoViableAltException(LT(1), getFilename());
5539        }
5540        }
5541        return op;
5542    }
5543    
5544    public final Expression patternExpression() throws RecognitionException, TokenStreamException {
5545        Expression v;
5546        
5547        
5548            v = null;
5549            Expression pat = null;
5550            Expression esc = null;
5551        
5552        
5553        pat=primaryExpression();
5554        {
5555        switch ( LA(1)) {
5556        case LITERAL_escape:
5557        {
5558            match(LITERAL_escape);
5559            esc=primaryExpression();
5560            if ( inputState.guessing==0 ) {
5561                v = new BinaryExpression(Op.PATTERN, pat, esc);
5562            }
5563            break;
5564        }
5565        case EOF:
5566        case LITERAL_create:
5567        case LITERAL_unique:
5568        case LITERAL_on:
5569        case RPAREN:
5570        case LITERAL_constraint:
5571        case LITERAL_primary:
5572        case LITERAL_check:
5573        case LITERAL_first:
5574        case LITERAL_after:
5575        case LITERAL_default:
5576        case LITERAL_as:
5577        case LITERAL_with:
5578        case COMMA:
5579        case LITERAL_where:
5580        case LITERAL_from:
5581        case LITERAL_grant:
5582        case LITERAL_references:
5583        case LITERAL_not:
5584        case LITERAL_full:
5585        case LITERAL_initially:
5586        case LITERAL_deferrable:
5587        case LITERAL_for:
5588        case LITERAL_order:
5589        case LITERAL_having:
5590        case LITERAL_using:
5591        case LITERAL_group:
5592        case CONCAT:
5593        case LITERAL_or:
5594        case LITERAL_and:
5595        case LITERAL_when:
5596        case LITERAL_then:
5597        case LITERAL_else:
5598        case LITERAL_end:
5599        case LITERAL_left:
5600        case LITERAL_right:
5601        case LITERAL_cross:
5602        case LITERAL_join:
5603        case LITERAL_natural:
5604        case LITERAL_union:
5605        case LITERAL_inner:
5606        case LITERAL_intersect:
5607        case LITERAL_except:
5608        case ID:
5609        {
5610            if ( inputState.guessing==0 ) {
5611                v = new UnaryExpression(Op.PATTERN, pat);
5612            }
5613            break;
5614        }
5615        default:
5616        {
5617            throw new NoViableAltException(LT(1), getFilename());
5618        }
5619        }
5620        }
5621        return v;
5622    }
5623    
5624    public final Expression unaryExpression() throws RecognitionException, TokenStreamException {
5625        Expression e;
5626        
5627        
5628            e = null;
5629            int op = 0;
5630        
5631        
5632        {
5633        switch ( LA(1)) {
5634        case PLUS:
5635        {
5636            match(PLUS);
5637            if ( inputState.guessing==0 ) {
5638                op = Op.PLUS;
5639            }
5640            break;
5641        }
5642        case MINUS:
5643        {
5644            match(MINUS);
5645            if ( inputState.guessing==0 ) {
5646                op = Op.MINUS;
5647            }
5648            break;
5649        }
5650        case LPAREN:
5651        case LITERAL_default:
5652        case LITERAL_insert:
5653        case LITERAL_null:
5654        case LITERAL_char:
5655        case LITERAL_date:
5656        case LITERAL_time:
5657        case LITERAL_timestamp:
5658        case LITERAL_interval:
5659        case STRING_LITERAL:
5660        case QUESTION:
5661        case INT:
5662        case REAL:
5663        case BINSTR:
5664        case HEXSTR:
5665        case LITERAL_case:
5666        case LITERAL_hour:
5667        case LITERAL_left:
5668        case LITERAL_minute:
5669        case LITERAL_month:
5670        case LITERAL_right:
5671        case LITERAL_second:
5672        case LITERAL_year:
5673        case LITERAL_user:
5674        case LITERAL_current_user:
5675        case LITERAL_session_user:
5676        case LITERAL_system_user:
5677        case LITERAL_current_date:
5678        case LITERAL_current_time:
5679        case LITERAL_current_timestamp:
5680        case LITERAL_sql_tsi_frac_second:
5681        case LITERAL_sql_tsi_second:
5682        case LITERAL_sql_tsi_minute:
5683        case LITERAL_sql_tsi_hour:
5684        case LITERAL_sql_tsi_day:
5685        case LITERAL_sql_tsi_week:
5686        case LITERAL_sql_tsi_month:
5687        case LITERAL_sql_tsi_quarter:
5688        case LITERAL_sql_tsi_year:
5689        case LITERAL_cast:
5690        case LITERAL_true:
5691        case LITERAL_false:
5692        case LITERAL_avg:
5693        case LITERAL_min:
5694        case LITERAL_max:
5695        case LITERAL_sum:
5696        case LITERAL_count:
5697        case ID:
5698        {
5699            break;
5700        }
5701        default:
5702        {
5703            throw new NoViableAltException(LT(1), getFilename());
5704        }
5705        }
5706        }
5707        e=primaryExpression();
5708        if ( inputState.guessing==0 ) {
5709            
5710                            if (op != 0) e = new UnaryExpression(op, e);
5711                        
5712        }
5713        return e;
5714    }
5715    
5716    public final Expression primaryExpression() throws RecognitionException, TokenStreamException {
5717        Expression e;
5718        
5719        Token t1 = null;
5720        Token t4 = null;
5721        Token t5 = null;
5722        Token t6 = null;
5723        
5724            e = null;
5725            String JavaDoc id = null;
5726            VectorExpression args = null;
5727        
5728        
5729        switch ( LA(1)) {
5730        case LITERAL_null:
5731        {
5732            match(LITERAL_null);
5733            if ( inputState.guessing==0 ) {
5734                
5735                                e = new ValueExpression(new ValueNull());
5736                            
5737            }
5738            break;
5739        }
5740        case LITERAL_default:
5741        {
5742            match(LITERAL_default);
5743            if ( inputState.guessing==0 ) {
5744                
5745                                e = new ValueExpression(new ValueDefault());
5746                            
5747            }
5748            break;
5749        }
5750        case INT:
5751        {
5752            t1 = LT(1);
5753            match(INT);
5754            if ( inputState.guessing==0 ) {
5755                
5756                                try {
5757                                    ValueInteger x = new ValueInteger(
5758                                      Integer.parseInt(t1.getText()));
5759                                    e = new ValueExpression(x);
5760                                } catch (NumberFormatException JavaDoc ne1) {
5761                                    try {
5762                                        ValueLong x = new ValueLong(
5763                                     Long.parseLong(t1.getText()));
5764                                    e = new ValueExpression(x);
5765                                    } catch (NumberFormatException JavaDoc ne2) {
5766                                        try {
5767                                            ValueDouble x = new ValueDouble(
5768                                                            t1.getText());
5769                                        e = new ValueExpression(x);
5770                } catch (ValueException ve) {
5771                                        try {
5772                                          ValueScaledInteger x = new
5773                                          ValueScaledInteger(t1.getText());
5774                e = new ValueExpression(x);
5775                } catch (ValueException ve1) {
5776                throw new DbException(ve1);
5777                }
5778                }
5779                                    }
5780                                }
5781                            
5782            }
5783            break;
5784        }
5785        case REAL:
5786        {
5787            t4 = LT(1);
5788            match(REAL);
5789            if ( inputState.guessing==0 ) {
5790                
5791                                try {
5792                                    e = new ValueExpression(
5793                                    new ValueDouble(t4.getText()));
5794                } catch (ValueException ve) {
5795                                    throw new DbException(ve);
5796                }
5797                            
5798            }
5799            break;
5800        }
5801        case BINSTR:
5802        {
5803            t5 = LT(1);
5804            match(BINSTR);
5805            if ( inputState.guessing==0 ) {
5806                
5807                                e = new ValueExpression(
5808                                    new ValueOctets(t5.getText()));
5809                            
5810            }
5811            break;
5812        }
5813        case HEXSTR:
5814        {
5815            t6 = LT(1);
5816            match(HEXSTR);
5817            if ( inputState.guessing==0 ) {
5818                
5819                                e = new ValueExpression(
5820                                    new ValueOctets(t6.getText()));
5821                            
5822            }
5823            break;
5824        }
5825        case QUESTION:
5826        {
5827            match(QUESTION);
5828            if ( inputState.guessing==0 ) {
5829                
5830                                ParameterExpression pe = new ParameterExpression();
5831                                addParameter(pe);
5832                                e = pe;
5833                            
5834            }
5835            break;
5836        }
5837        case LPAREN:
5838        {
5839            match(LPAREN);
5840            {
5841            switch ( LA(1)) {
5842            case LITERAL_unique:
5843            case LPAREN:
5844            case LITERAL_default:
5845            case LITERAL_insert:
5846            case LITERAL_not:
5847            case LITERAL_null:
5848            case LITERAL_char:
5849            case LITERAL_date:
5850            case LITERAL_time:
5851            case LITERAL_timestamp:
5852            case LITERAL_interval:
5853            case LITERAL_exists:
5854            case PLUS:
5855            case MINUS:
5856            case STRING_LITERAL:
5857            case QUESTION:
5858            case INT:
5859            case REAL:
5860            case BINSTR:
5861            case HEXSTR:
5862            case LITERAL_case:
5863            case LITERAL_hour:
5864            case LITERAL_left:
5865            case LITERAL_minute:
5866            case LITERAL_month:
5867            case LITERAL_right:
5868            case LITERAL_second:
5869            case LITERAL_year:
5870            case LITERAL_user:
5871            case LITERAL_current_user:
5872            case LITERAL_session_user:
5873            case LITERAL_system_user:
5874            case LITERAL_current_date:
5875            case LITERAL_current_time:
5876            case LITERAL_current_timestamp:
5877            case LITERAL_sql_tsi_frac_second:
5878            case LITERAL_sql_tsi_second:
5879            case LITERAL_sql_tsi_minute:
5880            case LITERAL_sql_tsi_hour:
5881            case LITERAL_sql_tsi_day:
5882            case LITERAL_sql_tsi_week:
5883            case LITERAL_sql_tsi_month:
5884            case LITERAL_sql_tsi_quarter:
5885            case LITERAL_sql_tsi_year:
5886            case LITERAL_cast:
5887            case LITERAL_true:
5888            case LITERAL_false:
5889            case LITERAL_avg:
5890            case LITERAL_min:
5891            case LITERAL_max:
5892            case LITERAL_sum:
5893            case LITERAL_count:
5894            case ID:
5895            {
5896                e=expression();
5897                break;
5898            }
5899            case LITERAL_select:
5900            {
5901                e=querySpecification();
5902                break;
5903            }
5904            default:
5905            {
5906                throw new NoViableAltException(LT(1), getFilename());
5907            }
5908            }
5909            }
5910            match(RPAREN);
5911            break;
5912        }
5913        case STRING_LITERAL:
5914        {
5915            e=stringExpression();
5916            break;
5917        }
5918        case LITERAL_avg:
5919        case LITERAL_min:
5920        case LITERAL_max:
5921        case LITERAL_sum:
5922        case LITERAL_count:
5923        {
5924            e=aggregateExpression();
5925            break;
5926        }
5927        case LITERAL_date:
5928        case LITERAL_time:
5929        case LITERAL_timestamp:
5930        {
5931            e=dateTimeLiteral();
5932            break;
5933        }
5934        case LITERAL_interval:
5935        {
5936            e=intervalLiteral();
5937            break;
5938        }
5939        case LITERAL_true:
5940        case LITERAL_false:
5941        {
5942            e=booleanLiteral();
5943            break;
5944        }
5945        case LITERAL_user:
5946        case LITERAL_current_user:
5947        case LITERAL_session_user:
5948        case LITERAL_system_user:
5949        case LITERAL_current_date:
5950        case LITERAL_current_time:
5951        case LITERAL_current_timestamp:
5952        case LITERAL_sql_tsi_frac_second:
5953        case LITERAL_sql_tsi_second:
5954        case LITERAL_sql_tsi_minute:
5955        case LITERAL_sql_tsi_hour:
5956        case LITERAL_sql_tsi_day:
5957        case LITERAL_sql_tsi_week:
5958        case LITERAL_sql_tsi_month:
5959        case LITERAL_sql_tsi_quarter:
5960        case LITERAL_sql_tsi_year:
5961        {
5962            e=systemVariable();
5963            break;
5964        }
5965        case LITERAL_insert:
5966        case LITERAL_char:
5967        case LITERAL_hour:
5968        case LITERAL_left:
5969        case LITERAL_minute:
5970        case LITERAL_month:
5971        case LITERAL_right:
5972        case LITERAL_second:
5973        case LITERAL_year:
5974        case ID:
5975        {
5976            e=fnvarExpression();
5977            break;
5978        }
5979        case LITERAL_cast:
5980        {
5981            e=castExpression();
5982            break;
5983        }
5984        case LITERAL_case:
5985        {
5986            e=caseExpression();
5987            break;
5988        }
5989        default:
5990        {
5991            throw new NoViableAltException(LT(1), getFilename());
5992        }
5993        }
5994        return e;
5995    }
5996    
5997    public final Expression multExpression() throws RecognitionException, TokenStreamException {
5998        Expression e;
5999        
6000        
6001            e = null;
6002            Expression f = null;
6003            int op = 0;
6004        
6005        
6006        e=expExpression();
6007        {
6008        _loop264:
6009        do {
6010            if ((LA(1)==STAR||LA(1)==SLASH)) {
6011                op=mulOp();
6012                f=expExpression();
6013                if ( inputState.guessing==0 ) {
6014                    
6015                                    e = new BinaryExpression(op, e, f);
6016                                
6017                }
6018            }
6019            else {
6020                break _loop264;
6021            }
6022            
6023        } while (true);
6024        }
6025        return e;
6026    }
6027    
6028    public final int addOp() throws RecognitionException, TokenStreamException {
6029        int op;
6030        
6031        
6032            op = 0;
6033        
6034        
6035        switch ( LA(1)) {
6036        case PLUS:
6037        {
6038            match(PLUS);
6039            if ( inputState.guessing==0 ) {
6040                op = Op.PLUS;
6041            }
6042            break;
6043        }
6044        case MINUS:
6045        {
6046            match(MINUS);
6047            if ( inputState.guessing==0 ) {
6048                op = Op.MINUS;
6049            }
6050            break;
6051        }
6052        case CONCAT:
6053        {
6054            match(CONCAT);
6055            if ( inputState.guessing==0 ) {
6056                op = Op.CONCAT;
6057            }
6058            break;
6059        }
6060        default:
6061        {
6062            throw new NoViableAltException(LT(1), getFilename());
6063        }
6064        }
6065        return op;
6066    }
6067    
6068    public final Expression expExpression() throws RecognitionException, TokenStreamException {
6069        Expression e;
6070        
6071        
6072            e = null;
6073            Expression f = null;
6074        
6075        
6076        e=unaryExpression();
6077        {
6078        _loop267:
6079        do {
6080            if ((LA(1)==120)) {
6081                match(120);
6082                f=unaryExpression();
6083                if ( inputState.guessing==0 ) {
6084                    
6085                                    e = new BinaryExpression(Op.EXP, e, f);
6086                                
6087                }
6088            }
6089            else {
6090                break _loop267;
6091            }
6092            
6093        } while (true);
6094        }
6095        return e;
6096    }
6097    
6098    public final int mulOp() throws RecognitionException, TokenStreamException {
6099        int op;
6100        
6101        
6102            op = 0;
6103        
6104        
6105        switch ( LA(1)) {
6106        case STAR:
6107        {
6108            match(STAR);
6109            if ( inputState.guessing==0 ) {
6110                op = Op.TIMES;
6111            }
6112            break;
6113        }
6114        case SLASH:
6115        {
6116            match(SLASH);
6117            if ( inputState.guessing==0 ) {
6118                op = Op.DIVIDE;
6119            }
6120            break;
6121        }
6122        default:
6123        {
6124            throw new NoViableAltException(LT(1), getFilename());
6125        }
6126        }
6127        return op;
6128    }
6129    
6130    public final Expression patternString() throws RecognitionException, TokenStreamException {
6131        Expression e;
6132        
6133        Token t1 = null;
6134        
6135            e = null;
6136        
6137        
6138        switch ( LA(1)) {
6139        case STRING_LITERAL:
6140        {
6141            t1 = LT(1);
6142            match(STRING_LITERAL);
6143            if ( inputState.guessing==0 ) {
6144                e = new ValueExpression(
6145                                  new ValueString(t1.getText()));
6146            }
6147            break;
6148        }
6149        case QUESTION:
6150        {
6151            match(QUESTION);
6152            if ( inputState.guessing==0 ) {
6153                
6154                                ParameterExpression pe = new ParameterExpression();
6155                                addParameter(pe);
6156                                e = pe;
6157                            
6158            }
6159            break;
6160        }
6161        default:
6162        {
6163            throw new NoViableAltException(LT(1), getFilename());
6164        }
6165        }
6166        return e;
6167    }
6168    
6169    public final Expression stringExpression() throws RecognitionException, TokenStreamException {
6170        Expression e;
6171        
6172        Token t1 = null;
6173        Token t2 = null;
6174        
6175            e = null;
6176            StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
6177        
6178        
6179        t1 = LT(1);
6180        match(STRING_LITERAL);
6181        if ( inputState.guessing==0 ) {
6182                sb.append(t1.getText());
6183        }
6184        {
6185        _loop287:
6186        do {
6187            if ((LA(1)==STRING_LITERAL)) {
6188                t2 = LT(1);
6189                match(STRING_LITERAL);
6190                if ( inputState.guessing==0 ) {
6191                        sb.append(t2.getText());
6192                }
6193            }
6194            else {
6195                break _loop287;
6196            }
6197            
6198        } while (true);
6199        }
6200        if ( inputState.guessing==0 ) {
6201            
6202                    e = new ValueExpression(new ValueString(sb.toString()));
6203                
6204        }
6205        return e;
6206    }
6207    
6208    public final Expression aggregateExpression() throws RecognitionException, TokenStreamException {
6209        Expression e;
6210        
6211        
6212            e = null;
6213            int op = -1;
6214            boolean all = true;
6215            Expression v = null;
6216        
6217        
6218        {
6219        switch ( LA(1)) {
6220        case LITERAL_avg:
6221        {
6222            match(LITERAL_avg);
6223            if ( inputState.guessing==0 ) {
6224                op = AggregateExpression.AVG;
6225            }
6226            break;
6227        }
6228        case LITERAL_min:
6229        {
6230            match(LITERAL_min);
6231            if ( inputState.guessing==0 ) {
6232                op = AggregateExpression.MIN;
6233            }
6234            break;
6235        }
6236        case LITERAL_max:
6237        {
6238            match(LITERAL_max);
6239            if ( inputState.guessing==0 ) {
6240                op = AggregateExpression.MAX;
6241            }
6242            break;
6243        }
6244        case LITERAL_sum:
6245        {
6246            match(LITERAL_sum);
6247            if ( inputState.guessing==0 ) {
6248                op = AggregateExpression.SUM;
6249            }
6250            break;
6251        }
6252        case LITERAL_count:
6253        {
6254            match(LITERAL_count);
6255            if ( inputState.guessing==0 ) {
6256                op = AggregateExpression.COUNT;
6257            }
6258            break;
6259        }
6260        default:
6261        {
6262            throw new NoViableAltException(LT(1), getFilename());
6263        }
6264        }
6265        }
6266        match(LPAREN);
6267        {
6268        switch ( LA(1)) {
6269        case LITERAL_all:
6270        {
6271            match(LITERAL_all);
6272            if ( inputState.guessing==0 ) {
6273                all = true;
6274            }
6275            break;
6276        }
6277        case LITERAL_distinct:
6278        {
6279            match(LITERAL_distinct);
6280            if ( inputState.guessing==0 ) {
6281                all = false;
6282            }
6283            break;
6284        }
6285        case LITERAL_unique:
6286        case LPAREN:
6287        case LITERAL_default:
6288        case LITERAL_insert:
6289        case LITERAL_not:
6290        case LITERAL_null:
6291        case LITERAL_char:
6292        case LITERAL_date:
6293        case LITERAL_time:
6294        case LITERAL_timestamp:
6295        case LITERAL_interval:
6296        case STAR:
6297        case LITERAL_exists:
6298        case PLUS:
6299        case MINUS:
6300        case STRING_LITERAL:
6301        case QUESTION:
6302        case INT:
6303        case REAL:
6304        case BINSTR:
6305        case HEXSTR:
6306        case LITERAL_case:
6307        case LITERAL_hour:
6308        case LITERAL_left:
6309        case LITERAL_minute:
6310        case LITERAL_month:
6311        case LITERAL_right:
6312        case LITERAL_second:
6313        case LITERAL_year:
6314        case LITERAL_user:
6315        case LITERAL_current_user:
6316        case LITERAL_session_user:
6317        case LITERAL_system_user:
6318        case LITERAL_current_date:
6319        case LITERAL_current_time:
6320        case LITERAL_current_timestamp:
6321        case LITERAL_sql_tsi_frac_second:
6322        case LITERAL_sql_tsi_second:
6323        case LITERAL_sql_tsi_minute:
6324        case LITERAL_sql_tsi_hour:
6325        case LITERAL_sql_tsi_day:
6326        case LITERAL_sql_tsi_week:
6327        case LITERAL_sql_tsi_month:
6328        case LITERAL_sql_tsi_quarter:
6329        case LITERAL_sql_tsi_year:
6330        case LITERAL_cast:
6331        case LITERAL_true:
6332        case LITERAL_false:
6333        case LITERAL_avg:
6334        case LITERAL_min:
6335        case LITERAL_max:
6336        case LITERAL_sum:
6337        case LITERAL_count:
6338        case ID:
6339        {
6340            break;
6341        }
6342        default:
6343        {
6344            throw new NoViableAltException(LT(1), getFilename());
6345        }
6346        }
6347        }
6348        {
6349        switch ( LA(1)) {
6350        case STAR:
6351        {
6352            match(STAR);
6353            break;
6354        }
6355        case LITERAL_unique:
6356        case LPAREN:
6357        case LITERAL_default:
6358        case LITERAL_insert:
6359        case LITERAL_not:
6360        case LITERAL_null:
6361        case LITERAL_char:
6362        case LITERAL_date:
6363        case LITERAL_time:
6364        case LITERAL_timestamp:
6365        case LITERAL_interval:
6366        case LITERAL_exists:
6367        case PLUS:
6368        case MINUS:
6369        case STRING_LITERAL:
6370        case QUESTION:
6371        case INT:
6372        case REAL:
6373        case BINSTR:
6374        case HEXSTR:
6375        case LITERAL_case:
6376        case LITERAL_hour:
6377        case LITERAL_left:
6378        case LITERAL_minute:
6379        case LITERAL_month:
6380        case LITERAL_right:
6381        case LITERAL_second:
6382        case LITERAL_year:
6383        case LITERAL_user:
6384        case LITERAL_current_user:
6385        case LITERAL_session_user:
6386        case LITERAL_system_user:
6387        case LITERAL_current_date:
6388        case LITERAL_current_time:
6389        case LITERAL_current_timestamp:
6390        case LITERAL_sql_tsi_frac_second:
6391        case LITERAL_sql_tsi_second:
6392        case LITERAL_sql_tsi_minute:
6393        case LITERAL_sql_tsi_hour:
6394        case LITERAL_sql_tsi_day:
6395        case LITERAL_sql_tsi_week:
6396        case LITERAL_sql_tsi_month:
6397        case LITERAL_sql_tsi_quarter:
6398        case LITERAL_sql_tsi_year:
6399        case LITERAL_cast:
6400        case LITERAL_true:
6401        case LITERAL_false:
6402        case LITERAL_avg:
6403        case LITERAL_min:
6404        case LITERAL_max:
6405        case LITERAL_sum:
6406        case LITERAL_count:
6407        case ID:
6408        {
6409            v=expression();
6410            break;
6411        }
6412        default:
6413        {
6414            throw new NoViableAltException(LT(1), getFilename());
6415        }
6416        }
6417        }
6418        match(RPAREN);
6419        if ( inputState.guessing==0 ) {
6420            e = new AggregateExpression(op, all, v);
6421        }
6422        return e;
6423    }
6424    
6425    public final Expression dateTimeLiteral() throws RecognitionException, TokenStreamException {
6426        Expression e;
6427        
6428        Token d1 = null;
6429        Token d2 = null;
6430        Token d3 = null;
6431        
6432            e = null;
6433        
6434        
6435        switch ( LA(1)) {
6436        case LITERAL_date:
6437        {
6438            match(LITERAL_date);
6439            d1 = LT(1);
6440            match(STRING_LITERAL);
6441            if ( inputState.guessing==0 ) {
6442                    
6443                                ValueDate x = new ValueDate(d1.getText());
6444                                e = new ValueExpression(x);
6445                            
6446            }
6447            break;
6448        }
6449        case LITERAL_time:
6450        {
6451            match(LITERAL_time);
6452            d2 = LT(1);
6453            match(STRING_LITERAL);
6454            if ( inputState.guessing==0 ) {
6455                    
6456                                ValueTime x = new ValueTime(d2.getText());
6457                                e = new ValueExpression(x);
6458                            
6459            }
6460            break;
6461        }
6462        case LITERAL_timestamp:
6463        {
6464            match(LITERAL_timestamp);
6465            d3 = LT(1);
6466            match(STRING_LITERAL);
6467            if ( inputState.guessing==0 ) {
6468                    
6469                                ValueTimestamp x =
6470                                    new ValueTimestamp(d3.getText());
6471                                e = new ValueExpression(x);
6472                            
6473            }
6474            break;
6475        }
6476        default:
6477        {
6478            throw new NoViableAltException(LT(1), getFilename());
6479        }
6480        }
6481        return e;
6482    }
6483    
6484    public final Expression intervalLiteral() throws RecognitionException, TokenStreamException {
6485        Expression e;
6486        
6487        Token d1 = null;
6488        
6489            e = null;
6490            int sign = 1;
6491            TypeInterval type = null;
6492        
6493        
6494        match(LITERAL_interval);
6495        {
6496        switch ( LA(1)) {
6497        case PLUS:
6498        {
6499            match(PLUS);
6500            break;
6501        }
6502        case MINUS:
6503        {
6504            match(MINUS);
6505            if ( inputState.guessing==0 ) {
6506                sign = -1;
6507            }
6508            break;
6509        }
6510        case STRING_LITERAL:
6511        {
6512            break;
6513        }
6514        default:
6515        {
6516            throw new NoViableAltException(LT(1), getFilename());
6517        }
6518        }
6519        }
6520        d1 = LT(1);
6521        match(STRING_LITERAL);
6522        {
6523        switch ( LA(1)) {
6524        case LITERAL_hour:
6525        case LITERAL_minute:
6526        case LITERAL_month:
6527        case LITERAL_second:
6528        case LITERAL_year:
6529        case LITERAL_day:
6530        {
6531            type=intervalQualifier();
6532            break;
6533        }
6534        case EOF:
6535        case LITERAL_create:
6536        case LITERAL_unique:
6537        case LITERAL_on:
6538        case RPAREN:
6539        case LITERAL_constraint:
6540        case LITERAL_primary:
6541        case LITERAL_check:
6542        case LITERAL_first:
6543        case LITERAL_after:
6544        case LITERAL_default:
6545        case LITERAL_as:
6546        case LITERAL_with:
6547        case COMMA:
6548        case LITERAL_where:
6549        case EQ:
6550        case LITERAL_from:
6551        case LITERAL_grant:
6552        case LITERAL_references:
6553        case LITERAL_not:
6554        case LITERAL_full:
6555        case LITERAL_initially:
6556        case LITERAL_deferrable:
6557        case LITERAL_for:
6558        case LITERAL_order:
6559        case STAR:
6560        case LITERAL_having:
6561        case LITERAL_using:
6562        case LITERAL_group:
6563        case CONCAT:
6564        case LITERAL_or:
6565        case LITERAL_and:
6566        case LITERAL_is:
6567        case LITERAL_like:
6568        case LITERAL_between:
6569        case LITERAL_in:
6570        case LITERAL_escape:
6571        case 120:
6572        case PLUS:
6573        case MINUS:
6574        case LITERAL_when:
6575        case LITERAL_then:
6576        case LITERAL_else:
6577        case LITERAL_end:
6578        case LITERAL_left:
6579        case LITERAL_right:
6580        case LT:
6581        case LE:
6582        case GT:
6583        case GE:
6584        case NE:
6585        case SLASH:
6586        case LITERAL_cross:
6587        case LITERAL_join:
6588        case LITERAL_natural:
6589        case LITERAL_union:
6590        case LITERAL_inner:
6591        case LITERAL_intersect:
6592        case LITERAL_except:
6593        case ID:
6594        {
6595            break;
6596        }
6597        default:
6598        {
6599            throw new NoViableAltException(LT(1), getFilename());
6600        }
6601        }
6602        }
6603        if ( inputState.guessing==0 ) {
6604            
6605                            ValueInterval x =
6606                                new ValueInterval(d1.getText(),
6607                                          sign, type);
6608                            e = new ValueExpression(x);
6609                        
6610        }
6611        return e;
6612    }
6613    
6614    public final Expression booleanLiteral() throws RecognitionException, TokenStreamException {
6615        Expression e;
6616        
6617        
6618            e = null;
6619        
6620        
6621        switch ( LA(1)) {
6622        case LITERAL_true:
6623        {
6624            match(LITERAL_true);
6625            if ( inputState.guessing==0 ) {
6626                e = new ValueExpression(ValueBoolean.trueBoolean);
6627            }
6628            break;
6629        }
6630        case LITERAL_false:
6631        {
6632            match(LITERAL_false);
6633            if ( inputState.guessing==0 ) {
6634                e = new ValueExpression(ValueBoolean.falseBoolean);
6635            }
6636            break;
6637        }
6638        default:
6639        {
6640            throw new NoViableAltException(LT(1), getFilename());
6641        }
6642        }
6643        return e;
6644    }
6645    
6646    public final Expression systemVariable() throws RecognitionException, TokenStreamException {
6647        Expression e;
6648        
6649        
6650            e = null;
6651        
6652        
6653        switch ( LA(1)) {
6654        case LITERAL_user:
6655        case LITERAL_current_user:
6656        case LITERAL_session_user:
6657        {
6658            {
6659            switch ( LA(1)) {
6660            case LITERAL_user:
6661            {
6662                match(LITERAL_user);
6663                break;
6664            }
6665            case LITERAL_current_user:
6666            {
6667                match(LITERAL_current_user);
6668                break;
6669            }
6670            case LITERAL_session_user:
6671            {
6672                match(LITERAL_session_user);
6673                break;
6674            }
6675            default:
6676            {
6677                throw new NoViableAltException(LT(1), getFilename());
6678            }
6679            }
6680            }
6681            if ( inputState.guessing==0 ) {
6682                e = new ValueExpression(new ValueString(qConn.getAuth()));
6683            }
6684            break;
6685        }
6686        case LITERAL_system_user:
6687        {
6688            match(LITERAL_system_user);
6689            if ( inputState.guessing==0 ) {
6690                e = new ValueExpression(
6691                            new ValueString(System.getProperty("user.name")));
6692            }
6693            break;
6694        }
6695        case LITERAL_current_date:
6696        {
6697            match(LITERAL_current_date);
6698            if ( inputState.guessing==0 ) {
6699                e = new ValueExpression(
6700                            new ValueDate(System.currentTimeMillis()));
6701            }
6702            break;
6703        }
6704        case LITERAL_current_time:
6705        {
6706            match(LITERAL_current_time);
6707            if ( inputState.guessing==0 ) {
6708                e = new ValueExpression(
6709                            new ValueTime(System.currentTimeMillis()));
6710            }
6711            break;
6712        }
6713        case LITERAL_current_timestamp:
6714        {
6715            match(LITERAL_current_timestamp);
6716            if ( inputState.guessing==0 ) {
6717                e = new ValueExpression(
6718                            new ValueTimestamp(System.currentTimeMillis()));
6719            }
6720            break;
6721        }
6722        case LITERAL_sql_tsi_frac_second:
6723        {
6724            match(LITERAL_sql_tsi_frac_second);
6725            if ( inputState.guessing==0 ) {
6726                e = new ValueExpression(
6727                                new ValueInteger(FunctionExpression.TSI_FRAC_SECOND));
6728            }
6729            break;
6730        }
6731        case LITERAL_sql_tsi_second:
6732        {
6733            match(LITERAL_sql_tsi_second);
6734            if ( inputState.guessing==0 ) {
6735                e = new ValueExpression(
6736                                new ValueInteger(FunctionExpression.TSI_SECOND));
6737            }
6738            break;
6739        }
6740        case LITERAL_sql_tsi_minute:
6741        {
6742            match(LITERAL_sql_tsi_minute);
6743            if ( inputState.guessing==0 ) {
6744                e = new ValueExpression(
6745                                new ValueInteger(FunctionExpression.TSI_MINUTE));
6746            }
6747            break;
6748        }
6749        case LITERAL_sql_tsi_hour:
6750        {
6751            match(LITERAL_sql_tsi_hour);
6752            if ( inputState.guessing==0 ) {
6753                e = new ValueExpression(
6754                                new ValueInteger(FunctionExpression.TSI_HOUR));
6755            }
6756            break;
6757        }
6758        case LITERAL_sql_tsi_day:
6759        {
6760            match(LITERAL_sql_tsi_day);
6761            if ( inputState.guessing==0 ) {
6762                e = new ValueExpression(
6763                                new ValueInteger(FunctionExpression.TSI_DAY));
6764            }
6765            break;
6766        }
6767        case LITERAL_sql_tsi_week:
6768        {
6769            match(LITERAL_sql_tsi_week);
6770            if ( inputState.guessing==0 ) {
6771                e = new ValueExpression(
6772                                new ValueInteger(FunctionExpression.TSI_WEEK));
6773            }
6774            break;
6775        }
6776        case LITERAL_sql_tsi_month:
6777        {
6778            match(LITERAL_sql_tsi_month);
6779            if ( inputState.guessing==0 ) {
6780                e = new ValueExpression(
6781                                new ValueInteger(FunctionExpression.TSI_MONTH));
6782            }
6783            break;
6784        }
6785        case LITERAL_sql_tsi_quarter:
6786        {
6787            match(LITERAL_sql_tsi_quarter);
6788            if ( inputState.guessing==0 ) {
6789                e = new ValueExpression(
6790                                new ValueInteger(FunctionExpression.TSI_QUARTER));
6791            }
6792            break;
6793        }
6794        case LITERAL_sql_tsi_year:
6795        {
6796            match(LITERAL_sql_tsi_year);
6797            if ( inputState.guessing==0 ) {
6798                e = new ValueExpression(
6799                                new ValueInteger(FunctionExpression.TSI_YEAR));
6800            }
6801            break;
6802        }
6803        default:
6804        {
6805            throw new NoViableAltException(LT(1), getFilename());
6806        }
6807        }
6808        return e;
6809    }
6810    
6811    public final Expression fnvarExpression() throws RecognitionException, TokenStreamException {
6812        Expression e;
6813        
6814        
6815            e = null;
6816            String JavaDoc id = null;
6817            VectorExpression args = null;
6818        
6819        
6820        id=functionId();
6821        {
6822        switch ( LA(1)) {
6823        case LPAREN:
6824        {
6825            args=vectorExpression();
6826            break;
6827        }
6828        case EOF:
6829        case LITERAL_create:
6830        case LITERAL_unique:
6831        case LITERAL_on:
6832        case RPAREN:
6833        case LITERAL_constraint:
6834        case LITERAL_primary:
6835        case LITERAL_check:
6836        case LITERAL_first:
6837        case LITERAL_after:
6838        case LITERAL_default:
6839        case LITERAL_as:
6840        case LITERAL_with:
6841        case COMMA:
6842        case LITERAL_where:
6843        case EQ:
6844        case LITERAL_from:
6845        case LITERAL_grant:
6846        case LITERAL_references:
6847        case LITERAL_not:
6848        case LITERAL_full:
6849        case LITERAL_initially:
6850        case LITERAL_deferrable:
6851        case LITERAL_for:
6852        case LITERAL_order:
6853        case STAR:
6854        case LITERAL_having:
6855        case LITERAL_using:
6856        case LITERAL_group:
6857        case CONCAT:
6858        case LITERAL_or:
6859        case LITERAL_and:
6860        case LITERAL_is:
6861        case LITERAL_like:
6862        case LITERAL_between:
6863        case LITERAL_in:
6864        case LITERAL_escape:
6865        case 120:
6866        case PLUS:
6867        case MINUS:
6868        case LITERAL_when:
6869        case LITERAL_then:
6870        case LITERAL_else:
6871        case LITERAL_end:
6872        case LITERAL_left:
6873        case LITERAL_right:
6874        case LT:
6875        case LE:
6876        case GT:
6877        case GE:
6878        case NE:
6879        case SLASH:
6880        case LITERAL_cross:
6881        case LITERAL_join:
6882        case LITERAL_natural:
6883        case LITERAL_union:
6884        case LITERAL_inner:
6885        case LITERAL_intersect:
6886        case LITERAL_except:
6887        case ID:
6888        {
6889            break;
6890        }
6891        default:
6892        {
6893            throw new NoViableAltException(LT(1), getFilename());
6894        }
6895        }
6896        }
6897        if ( inputState.guessing==0 ) {
6898            
6899                        if (args == null) e = new NameExpression(id);
6900                    else e = new FunctionExpression(id, args);
6901                    
6902        }
6903        return e;
6904    }
6905    
6906    public final Expression castExpression() throws RecognitionException, TokenStreamException {
6907        Expression e;
6908        
6909        
6910            e = null;
6911            Expression f = null;
6912            Type type;
6913        
6914        
6915        match(LITERAL_cast);
6916        match(LPAREN);
6917        f=scalarExpression();
6918        match(LITERAL_as);
6919        type=type();
6920        match(RPAREN);
6921        if ( inputState.guessing==0 ) {
6922            
6923                            VectorExpression v = new VectorExpression();
6924                            v.addElement(f);
6925                            v.addElement(new ValueExpression(new ValueType(type)));
6926                            e = new FunctionExpression("cast", v);
6927                        
6928        }
6929        return e;
6930    }
6931    
6932    public final Expression caseExpression() throws RecognitionException, TokenStreamException {
6933        Expression e;
6934        
6935        
6936            e = null;
6937            VectorExpression c = null;
6938            Expression ex = null;
6939        
6940        
6941        match(LITERAL_case);
6942        if ( inputState.guessing==0 ) {
6943            c = new VectorExpression();
6944        }
6945        {
6946        _loop275:
6947        do {
6948            if ((LA(1)==LITERAL_when)) {
6949                match(LITERAL_when);
6950                ex=expression();
6951                if ( inputState.guessing==0 ) {
6952                    c.addElement(ex);
6953                }
6954                match(LITERAL_then);
6955                ex=expression();
6956                if ( inputState.guessing==0 ) {
6957                    c.addElement(ex);
6958                }
6959            }
6960            else {
6961                break _loop275;
6962            }
6963            
6964        } while (true);
6965        }
6966        {
6967        switch ( LA(1)) {
6968        case LITERAL_else:
6969        {
6970            match(LITERAL_else);
6971            ex=expression();
6972            if ( inputState.guessing==0 ) {
6973                c.addElement(ex);
6974            }
6975            break;
6976        }
6977        case LITERAL_end:
6978        {
6979            break;
6980        }
6981        default:
6982        {
6983            throw new NoViableAltException(LT(1), getFilename());
6984        }
6985        }
6986        }
6987        match(LITERAL_end);
6988        if ( inputState.guessing==0 ) {
6989            e = new FunctionExpression("case", c);
6990        }
6991        return e;
6992    }
6993    
6994    public final String JavaDoc functionId() throws RecognitionException, TokenStreamException {
6995        String JavaDoc id;
6996        
6997        
6998            id = null;
6999        
7000        
7001        switch ( LA(1)) {
7002        case ID:
7003        {
7004            id=sqlId();
7005            break;
7006        }
7007        case LITERAL_char:
7008        {
7009            match(LITERAL_char);
7010            if ( inputState.guessing==0 ) {
7011                id = "char";
7012            }
7013            break;
7014        }
7015        case LITERAL_hour:
7016        {
7017            match(LITERAL_hour);
7018            if ( inputState.guessing==0 ) {
7019                id = "hour";
7020            }
7021            break;
7022        }
7023        case LITERAL_insert:
7024        {
7025            match(LITERAL_insert);
7026            if ( inputState.guessing==0 ) {
7027                id = "insert";
7028            }
7029            break;
7030        }
7031        case LITERAL_left:
7032        {
7033            match(LITERAL_left);
7034            if ( inputState.guessing==0 ) {
7035                id = "left";
7036            }
7037            break;
7038        }
7039        case LITERAL_minute:
7040        {
7041            match(LITERAL_minute);
7042            if ( inputState.guessing==0 ) {
7043                id = "minute";
7044            }
7045            break;
7046        }
7047        case LITERAL_month:
7048        {
7049            match(LITERAL_month);
7050            if ( inputState.guessing==0 ) {
7051                id = "month";
7052            }
7053            break;
7054        }
7055        case LITERAL_right:
7056        {
7057            match(LITERAL_right);
7058            if ( inputState.guessing==0 ) {
7059                id = "right";
7060            }
7061            break;
7062        }
7063        case LITERAL_second:
7064        {
7065            match(LITERAL_second);
7066            if ( inputState.guessing==0 ) {
7067                id = "second";
7068            }
7069            break;
7070        }
7071        case LITERAL_year:
7072        {
7073            match(LITERAL_year);
7074            if ( inputState.guessing==0 ) {
7075                id = "year";
7076            }
7077            break;
7078        }
7079        default:
7080        {
7081            throw new NoViableAltException(LT(1), getFilename());
7082        }
7083        }
7084        return id;
7085    }
7086    
7087    public final TypeInterval intervalRange() throws RecognitionException, TokenStreamException {
7088        TypeInterval type;
7089        
7090        
7091            type = null;
7092            int start = 0;
7093            int startPrecision = 2;
7094            int end = 0;
7095            int secPrecision = 6;
7096        
7097        
7098        {
7099        switch ( LA(1)) {
7100        case LITERAL_year:
7101        {
7102            match(LITERAL_year);
7103            if ( inputState.guessing==0 ) {
7104                start = TypeInterval.YEAR;
7105            }
7106            break;
7107        }
7108        case LITERAL_day:
7109        {
7110            match(LITERAL_day);
7111            if ( inputState.guessing==0 ) {
7112                start = TypeInterval.DAY;
7113            }
7114            break;
7115        }
7116        case LITERAL_hour:
7117        {
7118            match(LITERAL_hour);
7119            if ( inputState.guessing==0 ) {
7120                start = TypeInterval.HOUR;
7121            }
7122            break;
7123        }
7124        case LITERAL_minute:
7125        {
7126            match(LITERAL_minute);
7127            if ( inputState.guessing==0 ) {
7128                start = TypeInterval.MINUTE;
7129            }
7130            break;
7131        }
7132        default:
7133        {
7134            throw new NoViableAltException(LT(1), getFilename());
7135        }
7136        }
7137        }
7138        {
7139        switch ( LA(1)) {
7140        case LPAREN:
7141        {
7142            match(LPAREN);
7143            startPrecision=integer();
7144            match(RPAREN);
7145            break;
7146        }
7147        case LITERAL_to:
7148        {
7149            break;
7150        }
7151        default:
7152        {
7153            throw new NoViableAltException(LT(1), getFilename());
7154        }
7155        }
7156        }
7157        match(LITERAL_to);
7158        {
7159        switch ( LA(1)) {
7160        case LITERAL_year:
7161        {
7162            match(LITERAL_year);
7163            if ( inputState.guessing==0 ) {
7164                end = TypeInterval.YEAR;
7165            }
7166            break;
7167        }
7168        case LITERAL_month:
7169        {
7170            match(LITERAL_month);
7171            if ( inputState.guessing==0 ) {
7172                end = TypeInterval.MONTH;
7173            }
7174            break;
7175        }
7176        case LITERAL_day:
7177        {
7178            match(LITERAL_day);
7179            if ( inputState.guessing==0 ) {
7180                end = TypeInterval.DAY;
7181            }
7182            break;
7183        }
7184        case LITERAL_hour:
7185        {
7186            match(LITERAL_hour);
7187            if ( inputState.guessing==0 ) {
7188                end = TypeInterval.HOUR;
7189            }
7190            break;
7191        }
7192        case LITERAL_minute:
7193        {
7194            match(LITERAL_minute);
7195            if ( inputState.guessing==0 ) {
7196                end = TypeInterval.MINUTE;
7197            }
7198            break;
7199        }
7200        case LITERAL_second:
7201        {
7202            match(LITERAL_second);
7203            if ( inputState.guessing==0 ) {
7204                end = TypeInterval.SECOND;
7205            }
7206            {
7207            switch ( LA(1)) {
7208            case LPAREN:
7209            {
7210                match(LPAREN);
7211                secPrecision=integer();
7212                match(RPAREN);
7213                break;
7214            }
7215            case EOF:
7216            case LITERAL_create:
7217            case LITERAL_unique:
7218            case LITERAL_on:
7219            case RPAREN:
7220            case LITERAL_constraint:
7221            case LITERAL_primary:
7222            case LITERAL_check:
7223            case LITERAL_first:
7224            case LITERAL_after:
7225            case LITERAL_default:
7226            case LITERAL_as:
7227            case LITERAL_with:
7228            case COMMA:
7229            case LITERAL_where:
7230            case EQ:
7231            case LITERAL_from:
7232            case LITERAL_grant:
7233            case LITERAL_references:
7234            case LITERAL_not:
7235            case LITERAL_full:
7236            case LITERAL_initially:
7237            case LITERAL_deferrable:
7238            case LITERAL_for:
7239            case LITERAL_order:
7240            case STAR:
7241            case LITERAL_having:
7242            case LITERAL_using:
7243            case LITERAL_group:
7244            case CONCAT:
7245            case LITERAL_or:
7246            case LITERAL_and:
7247            case LITERAL_is:
7248            case LITERAL_like:
7249            case LITERAL_between:
7250            case LITERAL_in:
7251            case LITERAL_escape:
7252            case 120:
7253            case PLUS:
7254            case MINUS:
7255            case LITERAL_when:
7256            case LITERAL_then:
7257            case LITERAL_else:
7258            case LITERAL_end:
7259            case LITERAL_left:
7260            case LITERAL_right:
7261            case LT:
7262            case LE:
7263            case GT:
7264            case GE:
7265            case NE:
7266            case SLASH:
7267            case LITERAL_cross:
7268            case LITERAL_join:
7269            case LITERAL_natural:
7270            case LITERAL_union:
7271            case LITERAL_inner:
7272            case LITERAL_intersect:
7273            case LITERAL_except:
7274            case ID:
7275            {
7276                break;
7277            }
7278            default:
7279            {
7280                throw new NoViableAltException(LT(1), getFilename());
7281            }
7282            }
7283            }
7284            break;
7285        }
7286        default:
7287        {
7288            throw new NoViableAltException(LT(1), getFilename());
7289        }
7290        }
7291        }
7292        if ( inputState.guessing==0 ) {
7293            type = new TypeInterval(start, startPrecision,
7294                                      end, secPrecision);
7295        }
7296        return type;
7297    }
7298    
7299    public final TypeInterval intervalSingleField() throws RecognitionException, TokenStreamException {
7300        TypeInterval type;
7301        
7302        
7303            type = null;
7304            int start = 0;
7305            int startPrecision = 2;
7306            int secPrecision = 6;
7307        
7308        
7309        switch ( LA(1)) {
7310        case LITERAL_hour:
7311        case LITERAL_minute:
7312        case LITERAL_month:
7313        case LITERAL_year:
7314        case LITERAL_day:
7315        {
7316            {
7317            switch ( LA(1)) {
7318            case LITERAL_year:
7319            {
7320                match(LITERAL_year);
7321                if ( inputState.guessing==0 ) {
7322                    start = TypeInterval.YEAR;
7323                }
7324                break;
7325            }
7326            case LITERAL_month:
7327            {
7328                match(LITERAL_month);
7329                if ( inputState.guessing==0 ) {
7330                    start = TypeInterval.MONTH;
7331                }
7332                break;
7333            }
7334            case LITERAL_day:
7335            {
7336                match(LITERAL_day);
7337                if ( inputState.guessing==0 ) {
7338                    start = TypeInterval.DAY;
7339                }
7340                break;
7341            }
7342            case LITERAL_hour:
7343            {
7344                match(LITERAL_hour);
7345                if ( inputState.guessing==0 ) {
7346                    start = TypeInterval.HOUR;
7347                }
7348                break;
7349            }
7350            case LITERAL_minute:
7351            {
7352                match(LITERAL_minute);
7353                if ( inputState.guessing==0 ) {
7354                    start = TypeInterval.MINUTE;
7355                }
7356                break;
7357            }
7358            default:
7359            {
7360                throw new NoViableAltException(LT(1), getFilename());
7361            }
7362            }
7363            }
7364            {
7365            switch ( LA(1)) {
7366            case LPAREN:
7367            {
7368                match(LPAREN);
7369                startPrecision=integer();
7370                match(RPAREN);
7371                break;
7372            }
7373            case EOF:
7374            case LITERAL_create:
7375            case LITERAL_unique:
7376            case LITERAL_on:
7377            case RPAREN:
7378            case LITERAL_constraint:
7379            case LITERAL_primary:
7380            case LITERAL_check:
7381            case LITERAL_first:
7382            case LITERAL_after:
7383            case LITERAL_default:
7384            case LITERAL_as:
7385            case LITERAL_with:
7386            case COMMA:
7387            case LITERAL_where:
7388            case EQ:
7389            case LITERAL_from:
7390            case LITERAL_grant:
7391            case LITERAL_references:
7392            case LITERAL_not:
7393            case LITERAL_full:
7394            case LITERAL_initially:
7395            case LITERAL_deferrable:
7396            case LITERAL_for:
7397            case LITERAL_order:
7398            case STAR:
7399            case LITERAL_having:
7400            case LITERAL_using:
7401            case LITERAL_group:
7402            case CONCAT:
7403            case LITERAL_or:
7404            case LITERAL_and:
7405            case LITERAL_is:
7406            case LITERAL_like:
7407            case LITERAL_between:
7408            case LITERAL_in:
7409            case LITERAL_escape:
7410            case 120:
7411            case PLUS:
7412            case MINUS:
7413            case LITERAL_when:
7414            case LITERAL_then:
7415            case LITERAL_else:
7416            case LITERAL_end:
7417            case LITERAL_left:
7418            case LITERAL_right:
7419            case LT:
7420            case LE:
7421            case GT:
7422            case GE:
7423            case NE:
7424            case SLASH:
7425            case LITERAL_cross:
7426            case LITERAL_join:
7427            case LITERAL_natural:
7428            case LITERAL_union:
7429            case LITERAL_inner:
7430            case LITERAL_intersect:
7431            case LITERAL_except:
7432            case ID:
7433            {
7434                break;
7435            }
7436            default:
7437            {
7438                throw new NoViableAltException(LT(1), getFilename());
7439            }
7440            }
7441            }
7442            if ( inputState.guessing==0 ) {
7443                type = new TypeInterval(start, startPrecision, 0);
7444            }
7445            break;
7446        }
7447        case LITERAL_second:
7448        {
7449            match(LITERAL_second);
7450            {
7451            switch ( LA(1)) {
7452            case LPAREN:
7453            {
7454                match(LPAREN);
7455                startPrecision=integer();
7456                {
7457                switch ( LA(1)) {
7458                case COMMA:
7459                {
7460                    match(COMMA);
7461                    secPrecision=integer();
7462                    break;
7463                }
7464                case RPAREN:
7465                {
7466                    break;
7467                }
7468                default:
7469                {
7470                    throw new NoViableAltException(LT(1), getFilename());
7471                }
7472                }
7473                }
7474                match(RPAREN);
7475                break;
7476            }
7477            case EOF:
7478            case LITERAL_create:
7479            case LITERAL_unique:
7480            case LITERAL_on:
7481            case RPAREN:
7482            case LITERAL_constraint:
7483            case LITERAL_primary:
7484            case LITERAL_check:
7485            case LITERAL_first:
7486            case LITERAL_after:
7487            case LITERAL_default:
7488            case LITERAL_as:
7489            case LITERAL_with:
7490            case COMMA:
7491            case LITERAL_where:
7492            case EQ:
7493            case LITERAL_from:
7494            case LITERAL_grant:
7495            case LITERAL_references:
7496            case LITERAL_not:
7497            case LITERAL_full:
7498            case LITERAL_initially:
7499            case LITERAL_deferrable:
7500            case LITERAL_for:
7501            case LITERAL_order:
7502            case STAR:
7503            case LITERAL_having:
7504            case LITERAL_using:
7505            case LITERAL_group:
7506            case CONCAT:
7507            case LITERAL_or:
7508            case LITERAL_and:
7509            case LITERAL_is:
7510            case LITERAL_like:
7511            case LITERAL_between:
7512            case LITERAL_in:
7513            case LITERAL_escape:
7514            case 120:
7515            case PLUS:
7516            case MINUS:
7517            case LITERAL_when:
7518            case LITERAL_then:
7519            case LITERAL_else:
7520            case LITERAL_end:
7521            case LITERAL_left:
7522            case LITERAL_right:
7523            case LT:
7524            case LE:
7525            case GT:
7526            case GE:
7527            case NE:
7528            case SLASH:
7529            case LITERAL_cross:
7530            case LITERAL_join:
7531            case LITERAL_natural:
7532            case LITERAL_union:
7533            case LITERAL_inner:
7534            case LITERAL_intersect:
7535            case LITERAL_except:
7536            case ID:
7537            {
7538                break;
7539            }
7540            default:
7541            {
7542                throw new NoViableAltException(LT(1), getFilename());
7543            }
7544            }
7545            }
7546            if ( inputState.guessing==0 ) {
7547                type = new TypeInterval(TypeInterval.SECOND,
7548                                          startPrecision,
7549                                          TypeInterval.NANO,
7550                                          secPrecision);
7551            }
7552            break;
7553        }
7554        default:
7555        {
7556            throw new NoViableAltException(LT(1), getFilename());
7557        }
7558        }
7559        return type;
7560    }
7561    
7562    public final SelectItem selectItem() throws RecognitionException, TokenStreamException {
7563        SelectItem item;
7564        
7565        
7566            item = null;
7567            Expression e = null;
7568            String JavaDoc id = null;
7569        
7570        
7571        e=expression();
7572        if ( inputState.guessing==0 ) {
7573            
7574                            item = new SelectItem(e);
7575                        
7576        }
7577        {
7578        if ((LA(1)==LITERAL_as||LA(1)==ID) && (LA(2)==EOF||LA(2)==LITERAL_create||LA(2)==LITERAL_unique||LA(2)==LITERAL_on||LA(2)==RPAREN||LA(2)==LITERAL_constraint||LA(2)==LITERAL_primary||LA(2)==LITERAL_check||LA(2)==LITERAL_first||LA(2)==LITERAL_after||LA(2)==LITERAL_default||LA(2)==LITERAL_as||LA(2)==LITERAL_with||LA(2)==COMMA||LA(2)==LITERAL_where||LA(2)==LITERAL_from||LA(2)==LITERAL_grant||LA(2)==LITERAL_references||LA(2)==LITERAL_not||LA(2)==LITERAL_full||LA(2)==LITERAL_initially||LA(2)==LITERAL_deferrable||LA(2)==LITERAL_for||LA(2)==LITERAL_order||LA(2)==LITERAL_having||LA(2)==LITERAL_using||LA(2)==LITERAL_group||LA(2)==CONCAT||LA(2)==LITERAL_or||LA(2)==LITERAL_and||LA(2)==LITERAL_when||LA(2)==LITERAL_then||LA(2)==LITERAL_else||LA(2)==LITERAL_end||LA(2)==LITERAL_left||LA(2)==LITERAL_right||LA(2)==LITERAL_cross||LA(2)==LITERAL_join||LA(2)==LITERAL_natural||LA(2)==LITERAL_union||LA(2)==LITERAL_inner||LA(2)==LITERAL_intersect||LA(2)==LITERAL_except||LA(2)==ID)) {
7579            {
7580            switch ( LA(1)) {
7581            case LITERAL_as:
7582            {
7583                match(LITERAL_as);
7584                break;
7585            }
7586            case ID:
7587            {
7588                break;
7589            }
7590            default:
7591            {
7592                throw new NoViableAltException(LT(1), getFilename());
7593            }
7594            }
7595            }
7596            id=sqlId();
7597            if ( inputState.guessing==0 ) {
7598                item.setAs(id);
7599            }
7600        }
7601        else if ((LA(1)==EOF||LA(1)==LITERAL_create||LA(1)==LITERAL_unique||LA(1)==LITERAL_on||LA(1)==RPAREN||LA(1)==LITERAL_constraint||LA(1)==LITERAL_primary||LA(1)==LITERAL_check||LA(1)==LITERAL_first||LA(1)==LITERAL_after||LA(1)==LITERAL_default||LA(1)==LITERAL_as||LA(1)==LITERAL_with||LA(1)==COMMA||LA(1)==LITERAL_where||LA(1)==LITERAL_from||LA(1)==LITERAL_grant||LA(1)==LITERAL_references||LA(1)==LITERAL_not||LA(1)==LITERAL_full||LA(1)==LITERAL_initially||LA(1)==LITERAL_deferrable||LA(1)==LITERAL_for||LA(1)==LITERAL_order||LA(1)==LITERAL_having||LA(1)==LITERAL_using||LA(1)==LITERAL_group||LA(1)==CONCAT||LA(1)==LITERAL_or||LA(1)==LITERAL_and||LA(1)==LITERAL_when||LA(1)==LITERAL_then||LA(1)==LITERAL_else||LA(1)==LITERAL_end||LA(1)==LITERAL_left||LA(1)==LITERAL_right||LA(1)==LITERAL_cross||LA(1)==LITERAL_join||LA(1)==LITERAL_natural||LA(1)==LITERAL_union||LA(1)==LITERAL_inner||LA(1)==LITERAL_intersect||LA(1)==LITERAL_except||LA(1)==ID) && (LA(2)==EOF||LA(2)==LITERAL_create||LA(2)==LITERAL_unique||LA(2)==LITERAL_index||LA(2)==LITERAL_temporary||LA(2)==LITERAL_table||LA(2)==LITERAL_view||LA(2)==LITERAL_on||LA(2)==LPAREN||LA(2)==RPAREN||LA(2)==LITERAL_constraint||LA(2)==LITERAL_primary||LA(2)==LITERAL_foreign||LA(2)==LITERAL_check||LA(2)==LITERAL_first||LA(2)==LITERAL_after||LA(2)==LITERAL_default||LA(2)==LITERAL_as||LA(2)==LITERAL_with||LA(2)==LITERAL_cascaded||LA(2)==LITERAL_update||LA(2)==COMMA||LA(2)==LITERAL_where||LA(2)==EQ||LA(2)==LITERAL_delete||LA(2)==LITERAL_from||LA(2)==LITERAL_global||LA(2)==LITERAL_local||LA(2)==LITERAL_grant||LA(2)==LITERAL_all||LA(2)==LITERAL_select||LA(2)==LITERAL_insert||LA(2)==LITERAL_references||LA(2)==LITERAL_usage||LA(2)==LITERAL_not||LA(2)==LITERAL_null||LA(2)==LITERAL_key||LA(2)==LITERAL_identity||LA(2)==LITERAL_full||LA(2)==LITERAL_initially||LA(2)==LITERAL_deferred||LA(2)==LITERAL_immediate||LA(2)==LITERAL_deferrable||LA(2)==LITERAL_bit||LA(2)==LITERAL_varbinary||LA(2)==LITERAL_binary||LA(2)==LITERAL_blob||LA(2)==LITERAL_clob||LA(2)==LITERAL_character||LA(2)==LITERAL_char||LA(2)==LITERAL_varchar||LA(2)==LITERAL_int||LA(2)==LITERAL_integer||LA(2)==LITERAL_smallint||LA(2)==LITERAL_tinyint||LA(2)==LITERAL_bigint||LA(2)==LITERAL_dec||LA(2)==LITERAL_decimal||LA(2)==LITERAL_numeric||LA(2)==LITERAL_real||LA(2)==LITERAL_double||LA(2)==LITERAL_float||LA(2)==LITERAL_boolean||LA(2)==LITERAL_date||LA(2)==LITERAL_time||LA(2)==LITERAL_timestamp||LA(2)==LITERAL_interval||LA(2)==LITERAL_for||LA(2)==LITERAL_read||LA(2)==LITERAL_order||LA(2)==LITERAL_by||LA(2)==STAR||LA(2)==LITERAL_having||LA(2)==LITERAL_corresponding||LA(2)==LITERAL_values||LA(2)==LITERAL_using||LA(2)==LITERAL_group||LA(2)==CONCAT||LA(2)==LITERAL_or||LA(2)==LITERAL_and||LA(2)==LITERAL_is||LA(2)==LITERAL_like||LA(2)==LITERAL_between||LA(2)==LITERAL_in||LA(2)==LITERAL_exists||LA(2)==LITERAL_escape||LA(2)==120||LA(2)==PLUS||LA(2)==MINUS||LA(2)==STRING_LITERAL||LA(2)==QUESTION||LA(2)==INT||LA(2)==REAL||LA(2)==BINSTR||LA(2)==HEXSTR||LA(2)==LITERAL_case||LA(2)==LITERAL_when||LA(2)==LITERAL_then||LA(2)==LITERAL_else||LA(2)==LITERAL_end||LA(2)==LITERAL_hour||LA(2)==LITERAL_left||LA(2)==LITERAL_minute||LA(2)==LITERAL_month||LA(2)==LITERAL_right||LA(2)==LITERAL_second||LA(2)==LITERAL_year||LA(2)==LITERAL_user||LA(2)==LITERAL_current_user||LA(2)==LITERAL_session_user||LA(2)==LITERAL_system_user||LA(2)==LITERAL_current_date||LA(2)==LITERAL_current_time||LA(2)==LITERAL_current_timestamp||LA(2)==LITERAL_sql_tsi_frac_second||LA(2)==LITERAL_sql_tsi_second||LA(2)==LITERAL_sql_tsi_minute||LA(2)==LITERAL_sql_tsi_hour||LA(2)==LITERAL_sql_tsi_day||LA(2)==LITERAL_sql_tsi_week||LA(2)==LITERAL_sql_tsi_month||LA(2)==LITERAL_sql_tsi_quarter||LA(2)==LITERAL_sql_tsi_year||LA(2)==LITERAL_cast||LA(2)==LITERAL_true||LA(2)==LITERAL_false||LA(2)==LITERAL_avg||LA(2)==LITERAL_min||LA(2)==LITERAL_max||LA(2)==LITERAL_sum||LA(2)==LITERAL_count||LA(2)==LT||LA(2)==LE||LA(2)==GT||LA(2)==GE||LA(2)==NE||LA(2)==SLASH||LA(2)==LITERAL_cross||LA(2)==LITERAL_join||LA(2)==LITERAL_natural||LA(2)==LITERAL_union||LA(2)==LITERAL_inner||LA(2)==LITERAL_outer||LA(2)==LITERAL_intersect||LA(2)==LITERAL_except||LA(2)==ID)) {
7602        }
7603        else {
7604            throw new NoViableAltException(LT(1), getFilename());
7605        }
7606        
7607        }
7608        return item;
7609    }
7610    
7611    public final int joinType() throws RecognitionException, TokenStreamException {
7612        int type;
7613        
7614        
7615            type = Op.INNER;
7616        
7617        
7618        switch ( LA(1)) {
7619        case LITERAL_inner:
7620        {
7621            match(LITERAL_inner);
7622            if ( inputState.guessing==0 ) {
7623                type = Op.INNER;
7624            }
7625            break;
7626        }
7627        case LITERAL_full:
7628        case LITERAL_left:
7629        case LITERAL_right:
7630        {
7631            {
7632            switch ( LA(1)) {
7633            case LITERAL_left:
7634            {
7635                match(LITERAL_left);
7636                if ( inputState.guessing==0 ) {
7637                    type = Op.LEFT;
7638                }
7639                break;
7640            }
7641            case LITERAL_right:
7642            {
7643                match(LITERAL_right);
7644                if ( inputState.guessing==0 ) {
7645                    type = Op.RIGHT;
7646                }
7647                break;
7648            }
7649            case LITERAL_full:
7650            {
7651                match(LITERAL_full);
7652                if ( inputState.guessing==0 ) {
7653                    type = Op.FULL;
7654                }
7655                break;
7656            }
7657            default:
7658            {
7659                throw new NoViableAltException(LT(1), getFilename());
7660            }
7661            }
7662            }
7663            {
7664            switch ( LA(1)) {
7665            case LITERAL_outer:
7666            {
7667                match(LITERAL_outer);
7668                break;
7669            }
7670            case LITERAL_join:
7671            {
7672                break;
7673            }
7674            default:
7675            {
7676                throw new NoViableAltException(LT(1), getFilename());
7677            }
7678            }
7679            }
7680            break;
7681        }
7682        case LITERAL_join:
7683        {
7684            break;
7685        }
7686        default:
7687        {
7688            throw new NoViableAltException(LT(1), getFilename());
7689        }
7690        }
7691        return type;
7692    }
7693    
7694    
7695    public static final String JavaDoc[] _tokenNames = {
7696        "<0>",
7697        "EOF",
7698        "<2>",
7699        "NULL_TREE_LOOKAHEAD",
7700        "\"create\"",
7701        "\"unique\"",
7702        "\"index\"",
7703        "\"schema\"",
7704        "\"temporary\"",
7705        "\"table\"",
7706        "\"view\"",
7707        "\"drop\"",
7708        "\"commit\"",
7709        "\"work\"",
7710        "\"rollback\"",
7711        "\"transaction\"",
7712        "\"on\"",
7713        "'('",
7714        "')'",
7715        "\"alter\"",
7716        "\"add\"",
7717        "\"constraint\"",
7718        "\"primary\"",
7719        "\"foreign\"",
7720        "\"check\"",
7721        "\"rename\"",
7722        "\"column\"",
7723        "\"first\"",
7724        "\"after\"",
7725        "\"restrict\"",
7726        "\"cascade\"",
7727        "\"set\"",
7728        "\"default\"",
7729        "\"to\"",
7730        "\"as\"",
7731        "\"with\"",
7732        "\"cascaded\"",
7733        "\"option\"",
7734        "\"update\"",
7735        "COMMA",
7736        "\"where\"",
7737        "EQ",
7738        "\"delete\"",
7739        "\"from\"",
7740        "\"authorization\"",
7741        "\"global\"",
7742        "\"local\"",
7743        "\"grant\"",
7744        "\"public\"",
7745        "\"all\"",
7746        "\"privileges\"",
7747        "\"select\"",
7748        "\"insert\"",
7749        "\"references\"",
7750        "\"usage\"",
7751        "\"not\"",
7752        "\"null\"",
7753        "\"key\"",
7754        "\"identity\"",
7755        "\"match\"",
7756        "\"full\"",
7757        "\"partial\"",
7758        "\"no\"",
7759        "\"action\"",
7760        "\"initially\"",
7761        "\"deferred\"",
7762        "\"immediate\"",
7763        "\"deferrable\"",
7764        "\"bit\"",
7765        "\"varying\"",
7766        "\"varbinary\"",
7767        "\"binary\"",
7768        "\"blob\"",
7769        "\"large\"",
7770        "\"object\"",
7771        "\"clob\"",
7772        "\"character\"",
7773        "\"char\"",
7774        "\"varchar\"",
7775        "\"int\"",
7776        "\"integer\"",
7777        "\"smallint\"",
7778        "\"tinyint\"",
7779        "\"bigint\"",
7780        "\"dec\"",
7781        "\"decimal\"",
7782        "\"numeric\"",
7783        "\"real\"",
7784        "\"double\"",
7785        "\"precision\"",
7786        "\"float\"",
7787        "\"boolean\"",
7788        "\"date\"",
7789        "\"time\"",
7790        "\"zone\"",
7791        "\"timestamp\"",
7792        "\"interval\"",
7793        "\"for\"",
7794        "\"read\"",
7795        "\"only\"",
7796        "\"order\"",
7797        "\"by\"",
7798        "\"asc\"",
7799        "\"desc\"",
7800        "\"distinct\"",
7801        "STAR",
7802        "\"having\"",
7803        "\"corresponding\"",
7804        "\"values\"",
7805        "\"using\"",
7806        "\"group\"",
7807        "CONCAT",
7808        "\"or\"",
7809        "\"and\"",
7810        "\"is\"",
7811        "\"like\"",
7812        "\"between\"",
7813        "\"in\"",
7814        "\"exists\"",
7815        "\"escape\"",
7816        "\"**\"",
7817        "PLUS",
7818        "MINUS",
7819        "STRING_LITERAL",
7820        "QUESTION",
7821        "INT",
7822        "REAL",
7823        "BINSTR",
7824        "HEXSTR",
7825        "\"case\"",
7826        "\"when\"",
7827        "\"then\"",
7828        "\"else\"",
7829        "\"end\"",
7830        "\"hour\"",
7831        "\"left\"",
7832        "\"minute\"",
7833        "\"month\"",
7834        "\"right\"",
7835        "\"second\"",
7836        "\"year\"",
7837        "\"user\"",
7838        "\"current_user\"",
7839        "\"session_user\"",
7840        "\"system_user\"",
7841        "\"current_date\"",
7842        "\"current_time\"",
7843        "\"current_timestamp\"",
7844        "\"sql_tsi_frac_second\"",
7845        "\"sql_tsi_second\"",
7846        "\"sql_tsi_minute\"",
7847        "\"sql_tsi_hour\"",
7848        "\"sql_tsi_day\"",
7849        "\"sql_tsi_week\"",
7850        "\"sql_tsi_month\"",
7851        "\"sql_tsi_quarter\"",
7852        "\"sql_tsi_year\"",
7853        "\"cast\"",
7854        "\"day\"",
7855        "\"true\"",
7856        "\"false\"",
7857        "\"avg\"",
7858        "\"min\"",
7859        "\"max\"",
7860        "\"sum\"",
7861        "\"count\"",
7862        "\"into\"",
7863        "\"unknown\"",
7864        "LT",
7865        "LE",
7866        "GT",
7867        "GE",
7868        "NE",
7869        "\"any\"",
7870        "\"some\"",
7871        "SLASH",
7872        "\"cross\"",
7873        "\"join\"",
7874        "\"natural\"",
7875        "\"union\"",
7876        "\"inner\"",
7877        "\"outer\"",
7878        "\"intersect\"",
7879        "\"except\"",
7880        "an identifier",
7881        "WS",
7882        "SL_COMMENT",
7883        "ML_COMMENT",
7884        "NL",
7885        "LCURLY",
7886        "RCURLY",
7887        "SEMI",
7888        "DIGIT",
7889        "EXP",
7890        "INT_OR_REAL",
7891        "HEXDIGIT",
7892        "IDCHAR",
7893        "IDCHAR2",
7894        "SIMPID",
7895        "CASEID",
7896        "IDTERM"
7897    };
7898    
7899    
7900    }
7901
Popular Tags