001    // $ANTLR 3.0.1 /Users/trevor/Documents/School/Research/galago/galagosearch/galagosearch-tupleflow-typebuilder/src/main/antlr/org/galagosearch/tupleflow/typebuilder/GalagoTypeBuilder.g 2009-01-07 22:22:50
002    
003      package org.galagosearch.tupleflow.typebuilder;
004      import java.util.HashMap;
005      import org.galagosearch.tupleflow.typebuilder.OrderSpecification;
006      import org.galagosearch.tupleflow.typebuilder.OrderedFieldSpecification;
007      import org.galagosearch.tupleflow.typebuilder.Direction;
008      import org.galagosearch.tupleflow.typebuilder.FieldSpecification;
009    
010    
011    import org.antlr.runtime.*;
012    import java.util.Stack;
013    import java.util.List;
014    import java.util.ArrayList;
015    
016    public class GalagoTypeBuilderParser extends Parser {
017        public static final String[] tokenNames = new String[] {
018            "<invalid>", "<EOR>", "<DOWN>", "<UP>", "ID", "NEWLINE", "WS", "'bytes'", "'boolean'", "'int'", "'long'", "'short'", "'byte'", "'float'", "'double'", "'String'", "';'", "'+'", "'-'", "'order:'", "'.'", "'package'", "'type'", "'{'", "'}'"
019        };
020        public static final int WS=6;
021        public static final int EOF=-1;
022        public static final int NEWLINE=5;
023        public static final int ID=4;
024    
025            public GalagoTypeBuilderParser(TokenStream input) {
026                super(input);
027            }
028            
029    
030        public String[] getTokenNames() { return tokenNames; }
031        public String getGrammarFileName() { return "/Users/trevor/Documents/School/Research/galago/galagosearch/galagosearch-tupleflow-typebuilder/src/main/antlr/org/galagosearch/tupleflow/typebuilder/GalagoTypeBuilder.g"; }
032    
033    
034    
035        // $ANTLR start var_type
036        // /Users/trevor/Documents/School/Research/galago/galagosearch/galagosearch-tupleflow-typebuilder/src/main/antlr/org/galagosearch/tupleflow/typebuilder/GalagoTypeBuilder.g:17:1: var_type returns [ FieldSpecification.DataType dataType ] : ( 'bytes' | 'boolean' | 'int' | 'long' | 'short' | 'byte' | 'float' | 'double' | 'String' );
037        public final FieldSpecification.DataType var_type() throws RecognitionException {
038            FieldSpecification.DataType dataType = null;
039    
040            try {
041                // /Users/trevor/Documents/School/Research/galago/galagosearch/galagosearch-tupleflow-typebuilder/src/main/antlr/org/galagosearch/tupleflow/typebuilder/GalagoTypeBuilder.g:17:59: ( 'bytes' | 'boolean' | 'int' | 'long' | 'short' | 'byte' | 'float' | 'double' | 'String' )
042                int alt1=9;
043                switch ( input.LA(1) ) {
044                case 7:
045                    {
046                    alt1=1;
047                    }
048                    break;
049                case 8:
050                    {
051                    alt1=2;
052                    }
053                    break;
054                case 9:
055                    {
056                    alt1=3;
057                    }
058                    break;
059                case 10:
060                    {
061                    alt1=4;
062                    }
063                    break;
064                case 11:
065                    {
066                    alt1=5;
067                    }
068                    break;
069                case 12:
070                    {
071                    alt1=6;
072                    }
073                    break;
074                case 13:
075                    {
076                    alt1=7;
077                    }
078                    break;
079                case 14:
080                    {
081                    alt1=8;
082                    }
083                    break;
084                case 15:
085                    {
086                    alt1=9;
087                    }
088                    break;
089                default:
090                    NoViableAltException nvae =
091                        new NoViableAltException("17:1: var_type returns [ FieldSpecification.DataType dataType ] : ( 'bytes' | 'boolean' | 'int' | 'long' | 'short' | 'byte' | 'float' | 'double' | 'String' );", 1, 0, input);
092    
093                    throw nvae;
094                }
095    
096                switch (alt1) {
097                    case 1 :
098                        // /Users/trevor/Documents/School/Research/galago/galagosearch/galagosearch-tupleflow-typebuilder/src/main/antlr/org/galagosearch/tupleflow/typebuilder/GalagoTypeBuilder.g:18:5: 'bytes'
099                        {
100                        match(input,7,FOLLOW_7_in_var_type61); 
101                         dataType = FieldSpecification.DataType.BYTES; 
102    
103                        }
104                        break;
105                    case 2 :
106                        // /Users/trevor/Documents/School/Research/galago/galagosearch/galagosearch-tupleflow-typebuilder/src/main/antlr/org/galagosearch/tupleflow/typebuilder/GalagoTypeBuilder.g:19:5: 'boolean'
107                        {
108                        match(input,8,FOLLOW_8_in_var_type71); 
109                         dataType = FieldSpecification.DataType.BOOLEAN; 
110    
111                        }
112                        break;
113                    case 3 :
114                        // /Users/trevor/Documents/School/Research/galago/galagosearch/galagosearch-tupleflow-typebuilder/src/main/antlr/org/galagosearch/tupleflow/typebuilder/GalagoTypeBuilder.g:20:5: 'int'
115                        {
116                        match(input,9,FOLLOW_9_in_var_type81); 
117                         dataType = FieldSpecification.DataType.INT; 
118    
119                        }
120                        break;
121                    case 4 :
122                        // /Users/trevor/Documents/School/Research/galago/galagosearch/galagosearch-tupleflow-typebuilder/src/main/antlr/org/galagosearch/tupleflow/typebuilder/GalagoTypeBuilder.g:21:5: 'long'
123                        {
124                        match(input,10,FOLLOW_10_in_var_type91); 
125                         dataType = FieldSpecification.DataType.LONG; 
126    
127                        }
128                        break;
129                    case 5 :
130                        // /Users/trevor/Documents/School/Research/galago/galagosearch/galagosearch-tupleflow-typebuilder/src/main/antlr/org/galagosearch/tupleflow/typebuilder/GalagoTypeBuilder.g:22:5: 'short'
131                        {
132                        match(input,11,FOLLOW_11_in_var_type101); 
133                         dataType = FieldSpecification.DataType.SHORT; 
134    
135                        }
136                        break;
137                    case 6 :
138                        // /Users/trevor/Documents/School/Research/galago/galagosearch/galagosearch-tupleflow-typebuilder/src/main/antlr/org/galagosearch/tupleflow/typebuilder/GalagoTypeBuilder.g:23:5: 'byte'
139                        {
140                        match(input,12,FOLLOW_12_in_var_type111); 
141                         dataType = FieldSpecification.DataType.BYTE; 
142    
143                        }
144                        break;
145                    case 7 :
146                        // /Users/trevor/Documents/School/Research/galago/galagosearch/galagosearch-tupleflow-typebuilder/src/main/antlr/org/galagosearch/tupleflow/typebuilder/GalagoTypeBuilder.g:24:5: 'float'
147                        {
148                        match(input,13,FOLLOW_13_in_var_type121); 
149                         dataType = FieldSpecification.DataType.FLOAT; 
150    
151                        }
152                        break;
153                    case 8 :
154                        // /Users/trevor/Documents/School/Research/galago/galagosearch/galagosearch-tupleflow-typebuilder/src/main/antlr/org/galagosearch/tupleflow/typebuilder/GalagoTypeBuilder.g:25:5: 'double'
155                        {
156                        match(input,14,FOLLOW_14_in_var_type131); 
157                         dataType = FieldSpecification.DataType.DOUBLE; 
158    
159                        }
160                        break;
161                    case 9 :
162                        // /Users/trevor/Documents/School/Research/galago/galagosearch/galagosearch-tupleflow-typebuilder/src/main/antlr/org/galagosearch/tupleflow/typebuilder/GalagoTypeBuilder.g:26:5: 'String'
163                        {
164                        match(input,15,FOLLOW_15_in_var_type141); 
165                         dataType = FieldSpecification.DataType.STRING; 
166    
167                        }
168                        break;
169    
170                }
171            }
172            catch (RecognitionException re) {
173                reportError(re);
174                recover(input,re);
175            }
176            finally {
177            }
178            return dataType;
179        }
180        // $ANTLR end var_type
181    
182    
183        // $ANTLR start field_def
184        // /Users/trevor/Documents/School/Research/galago/galagosearch/galagosearch-tupleflow-typebuilder/src/main/antlr/org/galagosearch/tupleflow/typebuilder/GalagoTypeBuilder.g:28:1: field_def returns [ FieldSpecification field ] : v= var_type i= ID ';' ;
185        public final FieldSpecification field_def() throws RecognitionException {
186            FieldSpecification field = null;
187    
188            Token i=null;
189            FieldSpecification.DataType v = null;
190    
191    
192            try {
193                // /Users/trevor/Documents/School/Research/galago/galagosearch/galagosearch-tupleflow-typebuilder/src/main/antlr/org/galagosearch/tupleflow/typebuilder/GalagoTypeBuilder.g:28:48: (v= var_type i= ID ';' )
194                // /Users/trevor/Documents/School/Research/galago/galagosearch/galagosearch-tupleflow-typebuilder/src/main/antlr/org/galagosearch/tupleflow/typebuilder/GalagoTypeBuilder.g:29:5: v= var_type i= ID ';'
195                {
196                pushFollow(FOLLOW_var_type_in_field_def165);
197                v=var_type();
198                _fsp--;
199    
200                i=(Token)input.LT(1);
201                match(input,ID,FOLLOW_ID_in_field_def169); 
202                match(input,16,FOLLOW_16_in_field_def171); 
203                 field = new FieldSpecification(v, i.getText()); 
204    
205                }
206    
207            }
208            catch (RecognitionException re) {
209                reportError(re);
210                recover(input,re);
211            }
212            finally {
213            }
214            return field;
215        }
216        // $ANTLR end field_def
217    
218    
219        // $ANTLR start field_defs
220        // /Users/trevor/Documents/School/Research/galago/galagosearch/galagosearch-tupleflow-typebuilder/src/main/antlr/org/galagosearch/tupleflow/typebuilder/GalagoTypeBuilder.g:33:1: field_defs returns [ ArrayList<FieldSpecification> fields ] : (v= field_def )+ ;
221        public final ArrayList<FieldSpecification> field_defs() throws RecognitionException {
222            ArrayList<FieldSpecification> fields = null;
223    
224            FieldSpecification v = null;
225    
226    
227            try {
228                // /Users/trevor/Documents/School/Research/galago/galagosearch/galagosearch-tupleflow-typebuilder/src/main/antlr/org/galagosearch/tupleflow/typebuilder/GalagoTypeBuilder.g:33:61: ( (v= field_def )+ )
229                // /Users/trevor/Documents/School/Research/galago/galagosearch/galagosearch-tupleflow-typebuilder/src/main/antlr/org/galagosearch/tupleflow/typebuilder/GalagoTypeBuilder.g:34:5: (v= field_def )+
230                {
231                 fields = new ArrayList<FieldSpecification>(); 
232                // /Users/trevor/Documents/School/Research/galago/galagosearch/galagosearch-tupleflow-typebuilder/src/main/antlr/org/galagosearch/tupleflow/typebuilder/GalagoTypeBuilder.g:35:5: (v= field_def )+
233                int cnt2=0;
234                loop2:
235                do {
236                    int alt2=2;
237                    int LA2_0 = input.LA(1);
238    
239                    if ( ((LA2_0>=7 && LA2_0<=15)) ) {
240                        alt2=1;
241                    }
242    
243    
244                    switch (alt2) {
245                    case 1 :
246                        // /Users/trevor/Documents/School/Research/galago/galagosearch/galagosearch-tupleflow-typebuilder/src/main/antlr/org/galagosearch/tupleflow/typebuilder/GalagoTypeBuilder.g:35:6: v= field_def
247                        {
248                        pushFollow(FOLLOW_field_def_in_field_defs207);
249                        v=field_def();
250                        _fsp--;
251    
252                         fields.add(v); 
253    
254                        }
255                        break;
256    
257                    default :
258                        if ( cnt2 >= 1 ) break loop2;
259                            EarlyExitException eee =
260                                new EarlyExitException(2, input);
261                            throw eee;
262                    }
263                    cnt2++;
264                } while (true);
265    
266    
267                }
268    
269            }
270            catch (RecognitionException re) {
271                reportError(re);
272                recover(input,re);
273            }
274            finally {
275            }
276            return fields;
277        }
278        // $ANTLR end field_defs
279    
280    
281        // $ANTLR start order_field
282        // /Users/trevor/Documents/School/Research/galago/galagosearch/galagosearch-tupleflow-typebuilder/src/main/antlr/org/galagosearch/tupleflow/typebuilder/GalagoTypeBuilder.g:38:1: order_field returns [ OrderedFieldSpecification ord_field ] : ( '+' | '-' ) i= ID ;
283        public final OrderedFieldSpecification order_field() throws RecognitionException {
284            OrderedFieldSpecification ord_field = null;
285    
286            Token i=null;
287    
288            try {
289                // /Users/trevor/Documents/School/Research/galago/galagosearch/galagosearch-tupleflow-typebuilder/src/main/antlr/org/galagosearch/tupleflow/typebuilder/GalagoTypeBuilder.g:38:61: ( ( '+' | '-' ) i= ID )
290                // /Users/trevor/Documents/School/Research/galago/galagosearch/galagosearch-tupleflow-typebuilder/src/main/antlr/org/galagosearch/tupleflow/typebuilder/GalagoTypeBuilder.g:39:5: ( '+' | '-' ) i= ID
291                {
292                Direction direction = Direction.ASCENDING;
293                // /Users/trevor/Documents/School/Research/galago/galagosearch/galagosearch-tupleflow-typebuilder/src/main/antlr/org/galagosearch/tupleflow/typebuilder/GalagoTypeBuilder.g:40:5: ( '+' | '-' )
294                int alt3=2;
295                int LA3_0 = input.LA(1);
296    
297                if ( (LA3_0==17) ) {
298                    alt3=1;
299                }
300                else if ( (LA3_0==18) ) {
301                    alt3=2;
302                }
303                else {
304                    NoViableAltException nvae =
305                        new NoViableAltException("40:5: ( '+' | '-' )", 3, 0, input);
306    
307                    throw nvae;
308                }
309                switch (alt3) {
310                    case 1 :
311                        // /Users/trevor/Documents/School/Research/galago/galagosearch/galagosearch-tupleflow-typebuilder/src/main/antlr/org/galagosearch/tupleflow/typebuilder/GalagoTypeBuilder.g:40:6: '+'
312                        {
313                        match(input,17,FOLLOW_17_in_order_field246); 
314    
315                        }
316                        break;
317                    case 2 :
318                        // /Users/trevor/Documents/School/Research/galago/galagosearch/galagosearch-tupleflow-typebuilder/src/main/antlr/org/galagosearch/tupleflow/typebuilder/GalagoTypeBuilder.g:40:12: '-'
319                        {
320                        match(input,18,FOLLOW_18_in_order_field250); 
321                        direction = Direction.DESCENDING;
322    
323                        }
324                        break;
325    
326                }
327    
328                i=(Token)input.LT(1);
329                match(input,ID,FOLLOW_ID_in_order_field261); 
330                 ord_field = new OrderedFieldSpecification(direction, i.getText()); 
331    
332                }
333    
334            }
335            catch (RecognitionException re) {
336                reportError(re);
337                recover(input,re);
338            }
339            finally {
340            }
341            return ord_field;
342        }
343        // $ANTLR end order_field
344    
345    
346        // $ANTLR start order_def
347        // /Users/trevor/Documents/School/Research/galago/galagosearch/galagosearch-tupleflow-typebuilder/src/main/antlr/org/galagosearch/tupleflow/typebuilder/GalagoTypeBuilder.g:43:1: order_def returns [ OrderSpecification defs ] : 'order:' (o= order_field )* ';' ;
348        public final OrderSpecification order_def() throws RecognitionException {
349            OrderSpecification defs = null;
350    
351            OrderedFieldSpecification o = null;
352    
353    
354            try {
355                // /Users/trevor/Documents/School/Research/galago/galagosearch/galagosearch-tupleflow-typebuilder/src/main/antlr/org/galagosearch/tupleflow/typebuilder/GalagoTypeBuilder.g:43:47: ( 'order:' (o= order_field )* ';' )
356                // /Users/trevor/Documents/School/Research/galago/galagosearch/galagosearch-tupleflow-typebuilder/src/main/antlr/org/galagosearch/tupleflow/typebuilder/GalagoTypeBuilder.g:44:5: 'order:' (o= order_field )* ';'
357                {
358                 defs = new OrderSpecification(); 
359                match(input,19,FOLLOW_19_in_order_def289); 
360                // /Users/trevor/Documents/School/Research/galago/galagosearch/galagosearch-tupleflow-typebuilder/src/main/antlr/org/galagosearch/tupleflow/typebuilder/GalagoTypeBuilder.g:45:14: (o= order_field )*
361                loop4:
362                do {
363                    int alt4=2;
364                    int LA4_0 = input.LA(1);
365    
366                    if ( ((LA4_0>=17 && LA4_0<=18)) ) {
367                        alt4=1;
368                    }
369    
370    
371                    switch (alt4) {
372                    case 1 :
373                        // /Users/trevor/Documents/School/Research/galago/galagosearch/galagosearch-tupleflow-typebuilder/src/main/antlr/org/galagosearch/tupleflow/typebuilder/GalagoTypeBuilder.g:45:15: o= order_field
374                        {
375                        pushFollow(FOLLOW_order_field_in_order_def294);
376                        o=order_field();
377                        _fsp--;
378    
379                         defs.addOrderedField(o); 
380    
381                        }
382                        break;
383    
384                    default :
385                        break loop4;
386                    }
387                } while (true);
388    
389                match(input,16,FOLLOW_16_in_order_def300); 
390    
391                }
392    
393            }
394            catch (RecognitionException re) {
395                reportError(re);
396                recover(input,re);
397            }
398            finally {
399            }
400            return defs;
401        }
402        // $ANTLR end order_def
403    
404    
405        // $ANTLR start order_defs
406        // /Users/trevor/Documents/School/Research/galago/galagosearch/galagosearch-tupleflow-typebuilder/src/main/antlr/org/galagosearch/tupleflow/typebuilder/GalagoTypeBuilder.g:47:1: order_defs returns [ ArrayList<OrderSpecification> defs ] : (o= order_def )+ ;
407        public final ArrayList<OrderSpecification> order_defs() throws RecognitionException {
408            ArrayList<OrderSpecification> defs = null;
409    
410            OrderSpecification o = null;
411    
412    
413            try {
414                // /Users/trevor/Documents/School/Research/galago/galagosearch/galagosearch-tupleflow-typebuilder/src/main/antlr/org/galagosearch/tupleflow/typebuilder/GalagoTypeBuilder.g:47:59: ( (o= order_def )+ )
415                // /Users/trevor/Documents/School/Research/galago/galagosearch/galagosearch-tupleflow-typebuilder/src/main/antlr/org/galagosearch/tupleflow/typebuilder/GalagoTypeBuilder.g:48:5: (o= order_def )+
416                {
417                 defs = new ArrayList<OrderSpecification>(); 
418                // /Users/trevor/Documents/School/Research/galago/galagosearch/galagosearch-tupleflow-typebuilder/src/main/antlr/org/galagosearch/tupleflow/typebuilder/GalagoTypeBuilder.g:49:5: (o= order_def )+
419                int cnt5=0;
420                loop5:
421                do {
422                    int alt5=2;
423                    int LA5_0 = input.LA(1);
424    
425                    if ( (LA5_0==19) ) {
426                        alt5=1;
427                    }
428    
429    
430                    switch (alt5) {
431                    case 1 :
432                        // /Users/trevor/Documents/School/Research/galago/galagosearch/galagosearch-tupleflow-typebuilder/src/main/antlr/org/galagosearch/tupleflow/typebuilder/GalagoTypeBuilder.g:49:6: o= order_def
433                        {
434                        pushFollow(FOLLOW_order_def_in_order_defs330);
435                        o=order_def();
436                        _fsp--;
437    
438                         defs.add(o); 
439    
440                        }
441                        break;
442    
443                    default :
444                        if ( cnt5 >= 1 ) break loop5;
445                            EarlyExitException eee =
446                                new EarlyExitException(5, input);
447                            throw eee;
448                    }
449                    cnt5++;
450                } while (true);
451    
452    
453                }
454    
455            }
456            catch (RecognitionException re) {
457                reportError(re);
458                recover(input,re);
459            }
460            finally {
461            }
462            return defs;
463        }
464        // $ANTLR end order_defs
465    
466        public static class package_name_return extends ParserRuleReturnScope {
467            public String name;
468        };
469    
470        // $ANTLR start package_name
471        // /Users/trevor/Documents/School/Research/galago/galagosearch/galagosearch-tupleflow-typebuilder/src/main/antlr/org/galagosearch/tupleflow/typebuilder/GalagoTypeBuilder.g:52:1: package_name returns [ String name ] : ID ( '.' ID )* ;
472        public final package_name_return package_name() throws RecognitionException {
473            package_name_return retval = new package_name_return();
474            retval.start = input.LT(1);
475    
476            try {
477                // /Users/trevor/Documents/School/Research/galago/galagosearch/galagosearch-tupleflow-typebuilder/src/main/antlr/org/galagosearch/tupleflow/typebuilder/GalagoTypeBuilder.g:52:38: ( ID ( '.' ID )* )
478                // /Users/trevor/Documents/School/Research/galago/galagosearch/galagosearch-tupleflow-typebuilder/src/main/antlr/org/galagosearch/tupleflow/typebuilder/GalagoTypeBuilder.g:53:5: ID ( '.' ID )*
479                {
480                match(input,ID,FOLLOW_ID_in_package_name355); 
481                // /Users/trevor/Documents/School/Research/galago/galagosearch/galagosearch-tupleflow-typebuilder/src/main/antlr/org/galagosearch/tupleflow/typebuilder/GalagoTypeBuilder.g:53:8: ( '.' ID )*
482                loop6:
483                do {
484                    int alt6=2;
485                    int LA6_0 = input.LA(1);
486    
487                    if ( (LA6_0==20) ) {
488                        alt6=1;
489                    }
490    
491    
492                    switch (alt6) {
493                    case 1 :
494                        // /Users/trevor/Documents/School/Research/galago/galagosearch/galagosearch-tupleflow-typebuilder/src/main/antlr/org/galagosearch/tupleflow/typebuilder/GalagoTypeBuilder.g:53:9: '.' ID
495                        {
496                        match(input,20,FOLLOW_20_in_package_name358); 
497                        match(input,ID,FOLLOW_ID_in_package_name360); 
498    
499                        }
500                        break;
501    
502                    default :
503                        break loop6;
504                    }
505                } while (true);
506    
507                 retval.name = input.toString(retval.start,input.LT(-1)); 
508    
509                }
510    
511                retval.stop = input.LT(-1);
512    
513            }
514            catch (RecognitionException re) {
515                reportError(re);
516                recover(input,re);
517            }
518            finally {
519            }
520            return retval;
521        }
522        // $ANTLR end package_name
523    
524    
525        // $ANTLR start package_def
526        // /Users/trevor/Documents/School/Research/galago/galagosearch/galagosearch-tupleflow-typebuilder/src/main/antlr/org/galagosearch/tupleflow/typebuilder/GalagoTypeBuilder.g:56:1: package_def returns [ String name ] : 'package' pn= package_name ';' ;
527        public final String package_def() throws RecognitionException {
528            String name = null;
529    
530            package_name_return pn = null;
531    
532    
533            try {
534                // /Users/trevor/Documents/School/Research/galago/galagosearch/galagosearch-tupleflow-typebuilder/src/main/antlr/org/galagosearch/tupleflow/typebuilder/GalagoTypeBuilder.g:56:37: ( 'package' pn= package_name ';' )
535                // /Users/trevor/Documents/School/Research/galago/galagosearch/galagosearch-tupleflow-typebuilder/src/main/antlr/org/galagosearch/tupleflow/typebuilder/GalagoTypeBuilder.g:57:5: 'package' pn= package_name ';'
536                {
537                match(input,21,FOLLOW_21_in_package_def385); 
538                pushFollow(FOLLOW_package_name_in_package_def389);
539                pn=package_name();
540                _fsp--;
541    
542                match(input,16,FOLLOW_16_in_package_def391); 
543                 name = pn.name; 
544    
545                }
546    
547            }
548            catch (RecognitionException re) {
549                reportError(re);
550                recover(input,re);
551            }
552            finally {
553            }
554            return name;
555        }
556        // $ANTLR end package_def
557    
558    
559        // $ANTLR start type_def
560        // /Users/trevor/Documents/School/Research/galago/galagosearch/galagosearch-tupleflow-typebuilder/src/main/antlr/org/galagosearch/tupleflow/typebuilder/GalagoTypeBuilder.g:60:1: type_def returns [ TypeSpecification spec ] : p= package_def 'type' i= ID '{' v= field_defs o= order_defs '}' ;
561        public final TypeSpecification type_def() throws RecognitionException {
562            TypeSpecification spec = null;
563    
564            Token i=null;
565            String p = null;
566    
567            ArrayList<FieldSpecification> v = null;
568    
569            ArrayList<OrderSpecification> o = null;
570    
571    
572            try {
573                // /Users/trevor/Documents/School/Research/galago/galagosearch/galagosearch-tupleflow-typebuilder/src/main/antlr/org/galagosearch/tupleflow/typebuilder/GalagoTypeBuilder.g:60:45: (p= package_def 'type' i= ID '{' v= field_defs o= order_defs '}' )
574                // /Users/trevor/Documents/School/Research/galago/galagosearch/galagosearch-tupleflow-typebuilder/src/main/antlr/org/galagosearch/tupleflow/typebuilder/GalagoTypeBuilder.g:61:5: p= package_def 'type' i= ID '{' v= field_defs o= order_defs '}'
575                {
576    
577                        spec = new TypeSpecification();
578                    
579                pushFollow(FOLLOW_package_def_in_type_def471);
580                p=package_def();
581                _fsp--;
582    
583                 spec.setPackageName(p); 
584                match(input,22,FOLLOW_22_in_type_def479); 
585                i=(Token)input.LT(1);
586                match(input,ID,FOLLOW_ID_in_type_def483); 
587                 spec.setTypeName(i.getText()); 
588                match(input,23,FOLLOW_23_in_type_def491); 
589                pushFollow(FOLLOW_field_defs_in_type_def499);
590                v=field_defs();
591                _fsp--;
592    
593                 spec.setFields(v); 
594                pushFollow(FOLLOW_order_defs_in_type_def509);
595                o=order_defs();
596                _fsp--;
597    
598                 spec.setOrders(o); 
599                match(input,24,FOLLOW_24_in_type_def517); 
600    
601                }
602    
603            }
604            catch (RecognitionException re) {
605                reportError(re);
606                recover(input,re);
607            }
608            finally {
609            }
610            return spec;
611        }
612        // $ANTLR end type_def
613    
614    
615     
616    
617        public static final BitSet FOLLOW_7_in_var_type61 = new BitSet(new long[]{0x0000000000000002L});
618        public static final BitSet FOLLOW_8_in_var_type71 = new BitSet(new long[]{0x0000000000000002L});
619        public static final BitSet FOLLOW_9_in_var_type81 = new BitSet(new long[]{0x0000000000000002L});
620        public static final BitSet FOLLOW_10_in_var_type91 = new BitSet(new long[]{0x0000000000000002L});
621        public static final BitSet FOLLOW_11_in_var_type101 = new BitSet(new long[]{0x0000000000000002L});
622        public static final BitSet FOLLOW_12_in_var_type111 = new BitSet(new long[]{0x0000000000000002L});
623        public static final BitSet FOLLOW_13_in_var_type121 = new BitSet(new long[]{0x0000000000000002L});
624        public static final BitSet FOLLOW_14_in_var_type131 = new BitSet(new long[]{0x0000000000000002L});
625        public static final BitSet FOLLOW_15_in_var_type141 = new BitSet(new long[]{0x0000000000000002L});
626        public static final BitSet FOLLOW_var_type_in_field_def165 = new BitSet(new long[]{0x0000000000000010L});
627        public static final BitSet FOLLOW_ID_in_field_def169 = new BitSet(new long[]{0x0000000000010000L});
628        public static final BitSet FOLLOW_16_in_field_def171 = new BitSet(new long[]{0x0000000000000002L});
629        public static final BitSet FOLLOW_field_def_in_field_defs207 = new BitSet(new long[]{0x000000000000FF82L});
630        public static final BitSet FOLLOW_17_in_order_field246 = new BitSet(new long[]{0x0000000000000010L});
631        public static final BitSet FOLLOW_18_in_order_field250 = new BitSet(new long[]{0x0000000000000010L});
632        public static final BitSet FOLLOW_ID_in_order_field261 = new BitSet(new long[]{0x0000000000000002L});
633        public static final BitSet FOLLOW_19_in_order_def289 = new BitSet(new long[]{0x0000000000070000L});
634        public static final BitSet FOLLOW_order_field_in_order_def294 = new BitSet(new long[]{0x0000000000070000L});
635        public static final BitSet FOLLOW_16_in_order_def300 = new BitSet(new long[]{0x0000000000000002L});
636        public static final BitSet FOLLOW_order_def_in_order_defs330 = new BitSet(new long[]{0x0000000000080002L});
637        public static final BitSet FOLLOW_ID_in_package_name355 = new BitSet(new long[]{0x0000000000100002L});
638        public static final BitSet FOLLOW_20_in_package_name358 = new BitSet(new long[]{0x0000000000000010L});
639        public static final BitSet FOLLOW_ID_in_package_name360 = new BitSet(new long[]{0x0000000000100002L});
640        public static final BitSet FOLLOW_21_in_package_def385 = new BitSet(new long[]{0x0000000000000010L});
641        public static final BitSet FOLLOW_package_name_in_package_def389 = new BitSet(new long[]{0x0000000000010000L});
642        public static final BitSet FOLLOW_16_in_package_def391 = new BitSet(new long[]{0x0000000000000002L});
643        public static final BitSet FOLLOW_package_def_in_type_def471 = new BitSet(new long[]{0x0000000000400000L});
644        public static final BitSet FOLLOW_22_in_type_def479 = new BitSet(new long[]{0x0000000000000010L});
645        public static final BitSet FOLLOW_ID_in_type_def483 = new BitSet(new long[]{0x0000000000800000L});
646        public static final BitSet FOLLOW_23_in_type_def491 = new BitSet(new long[]{0x000000000000FF80L});
647        public static final BitSet FOLLOW_field_defs_in_type_def499 = new BitSet(new long[]{0x0000000000080000L});
648        public static final BitSet FOLLOW_order_defs_in_type_def509 = new BitSet(new long[]{0x0000000001000000L});
649        public static final BitSet FOLLOW_24_in_type_def517 = new BitSet(new long[]{0x0000000000000002L});
650    
651    }