View Javadoc
1   // $ANTLR 2.7.7 (20060906): "schema-value.g" -> "AntlrSchemaValueParser.java"$
2   
3   /*
4    *  Licensed to the Apache Software Foundation (ASF) under one
5    *  or more contributor license agreements.  See the NOTICE file
6    *  distributed with this work for additional information
7    *  regarding copyright ownership.  The ASF licenses this file
8    *  to you under the Apache License, Version 2.0 (the
9    *  "License"); you may not use this file except in compliance
10   *  with the License.  You may obtain a copy of the License at
11   *  
12   *    http://www.apache.org/licenses/LICENSE-2.0
13   *  
14   *  Unless required by applicable law or agreed to in writing,
15   *  software distributed under the License is distributed on an
16   *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   *  KIND, either express or implied.  See the License for the
18   *  specific language governing permissions and limitations
19   *  under the License. 
20   *  
21   */
22  package org.apache.directory.api.ldap.model.schema.syntaxes;
23  
24  import java.util.List;
25  import java.util.ArrayList;
26  
27  import org.apache.directory.api.ldap.model.schema.parsers.ParserMonitor;
28  
29  
30  import antlr.TokenBuffer;
31  import antlr.TokenStreamException;
32  import antlr.TokenStreamIOException;
33  import antlr.ANTLRException;
34  import antlr.LLkParser;
35  import antlr.Token;
36  import antlr.TokenStream;
37  import antlr.RecognitionException;
38  import antlr.NoViableAltException;
39  import antlr.MismatchedTokenException;
40  import antlr.SemanticException;
41  import antlr.ParserSharedInputState;
42  import antlr.collections.impl.BitSet;
43  
44  /**
45   * An antlr generated schema parser. This is a sub-parser used to parse
46   * numericoid, oid, oids, qdescr, qdescrs according to RFC4512.
47   *
48   * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
49   */
50  public class AntlrSchemaValueParser extends antlr.LLkParser       implements AntlrSchemaValueTokenTypes
51   {
52  
53      private ParserMonitor monitor = null;
54      public void setParserMonitor( ParserMonitor monitor )
55      {
56          this.monitor = monitor;
57      }
58      private void matchedProduction( String msg )
59      {
60          if ( null != monitor )
61          {
62              monitor.matchedProduction( msg );
63          }
64      }
65  
66  protected AntlrSchemaValueParser(TokenBuffer tokenBuf, int k) {
67    super(tokenBuf,k);
68    tokenNames = _tokenNames;
69  }
70  
71  public AntlrSchemaValueParser(TokenBuffer tokenBuf) {
72    this(tokenBuf,3);
73  }
74  
75  protected AntlrSchemaValueParser(TokenStream lexer, int k) {
76    super(lexer,k);
77    tokenNames = _tokenNames;
78  }
79  
80  public AntlrSchemaValueParser(TokenStream lexer) {
81    this(lexer,3);
82  }
83  
84  public AntlrSchemaValueParser(ParserSharedInputState state) {
85    super(state,3);
86    tokenNames = _tokenNames;
87  }
88  
89  /**
90       * noidlen = numericoid [ LCURLY len RCURLY ]
91       * len = number
92       */
93  	public final AntlrSchemaParser.NoidLen  noidlen() throws RecognitionException, TokenStreamException {
94  		AntlrSchemaParser.NoidLen noidlen = new AntlrSchemaParser.NoidLen();
95  		
96  		Token  d4 = null;
97  		Token  n2 = null;
98  		Token  l = null;
99  		
100 		matchedProduction( "AntlrSchemaValueParser.noidlen()" );
101 		
102 		
103 		{
104 		{
105 		switch ( LA(1)) {
106 		case LPAR:
107 		{
108 			match(LPAR);
109 			break;
110 		}
111 		case WHSP:
112 		case NUMERICOID:
113 		case DESCR:
114 		case QUOTE:
115 		{
116 			break;
117 		}
118 		default:
119 		{
120 			throw new NoViableAltException(LT(1), getFilename());
121 		}
122 		}
123 		}
124 		{
125 		switch ( LA(1)) {
126 		case WHSP:
127 		{
128 			match(WHSP);
129 			break;
130 		}
131 		case NUMERICOID:
132 		case DESCR:
133 		case QUOTE:
134 		{
135 			break;
136 		}
137 		default:
138 		{
139 			throw new NoViableAltException(LT(1), getFilename());
140 		}
141 		}
142 		}
143 		{
144 		switch ( LA(1)) {
145 		case QUOTE:
146 		{
147 			match(QUOTE);
148 			break;
149 		}
150 		case NUMERICOID:
151 		case DESCR:
152 		{
153 			break;
154 		}
155 		default:
156 		{
157 			throw new NoViableAltException(LT(1), getFilename());
158 		}
159 		}
160 		}
161 		{
162 		switch ( LA(1)) {
163 		case DESCR:
164 		{
165 			{
166 			d4 = LT(1);
167 			match(DESCR);
168 			noidlen.noid = d4.getText();
169 			}
170 			break;
171 		}
172 		case NUMERICOID:
173 		{
174 			{
175 			n2 = LT(1);
176 			match(NUMERICOID);
177 			noidlen.noid = n2.getText();
178 			}
179 			break;
180 		}
181 		default:
182 		{
183 			throw new NoViableAltException(LT(1), getFilename());
184 		}
185 		}
186 		}
187 		{
188 		switch ( LA(1)) {
189 		case QUOTE:
190 		{
191 			match(QUOTE);
192 			break;
193 		}
194 		case EOF:
195 		case WHSP:
196 		case RPAR:
197 		case LEN:
198 		{
199 			break;
200 		}
201 		default:
202 		{
203 			throw new NoViableAltException(LT(1), getFilename());
204 		}
205 		}
206 		}
207 		{
208 		switch ( LA(1)) {
209 		case WHSP:
210 		{
211 			match(WHSP);
212 			break;
213 		}
214 		case EOF:
215 		case RPAR:
216 		case LEN:
217 		{
218 			break;
219 		}
220 		default:
221 		{
222 			throw new NoViableAltException(LT(1), getFilename());
223 		}
224 		}
225 		}
226 		{
227 		switch ( LA(1)) {
228 		case RPAR:
229 		{
230 			match(RPAR);
231 			break;
232 		}
233 		case EOF:
234 		case LEN:
235 		{
236 			break;
237 		}
238 		default:
239 		{
240 			throw new NoViableAltException(LT(1), getFilename());
241 		}
242 		}
243 		}
244 		{
245 		switch ( LA(1)) {
246 		case LEN:
247 		{
248 			l = LT(1);
249 			match(LEN);
250 			noidlen.len = Long.parseLong(l.getText());
251 			{
252 			switch ( LA(1)) {
253 			case QUOTE:
254 			{
255 				match(QUOTE);
256 				break;
257 			}
258 			case EOF:
259 			case WHSP:
260 			case RPAR:
261 			{
262 				break;
263 			}
264 			default:
265 			{
266 				throw new NoViableAltException(LT(1), getFilename());
267 			}
268 			}
269 			}
270 			{
271 			switch ( LA(1)) {
272 			case WHSP:
273 			{
274 				match(WHSP);
275 				break;
276 			}
277 			case EOF:
278 			case RPAR:
279 			{
280 				break;
281 			}
282 			default:
283 			{
284 				throw new NoViableAltException(LT(1), getFilename());
285 			}
286 			}
287 			}
288 			{
289 			switch ( LA(1)) {
290 			case RPAR:
291 			{
292 				match(RPAR);
293 				break;
294 			}
295 			case EOF:
296 			{
297 				break;
298 			}
299 			default:
300 			{
301 				throw new NoViableAltException(LT(1), getFilename());
302 			}
303 			}
304 			}
305 			break;
306 		}
307 		case EOF:
308 		{
309 			break;
310 		}
311 		default:
312 		{
313 			throw new NoViableAltException(LT(1), getFilename());
314 		}
315 		}
316 		}
317 		}
318 		return noidlen;
319 	}
320 	
321 /**
322      * noidlen = numericoid [ LCURLY len RCURLY ]
323      * len = number
324      */
325 	public final AntlrSchemaParser.NoidLen  quirksNoidlen() throws RecognitionException, TokenStreamException {
326 		AntlrSchemaParser.NoidLen noidlen = new AntlrSchemaParser.NoidLen();
327 		
328 		Token  q2 = null;
329 		Token  d4 = null;
330 		Token  n2 = null;
331 		Token  l = null;
332 		
333 		matchedProduction( "AntlrSchemaValueParser.quirksNoidlen()" );
334 		
335 		
336 		{
337 		{
338 		switch ( LA(1)) {
339 		case LPAR:
340 		{
341 			match(LPAR);
342 			break;
343 		}
344 		case WHSP:
345 		case NUMERICOID:
346 		case DESCR:
347 		case QUIRKS_DESCR:
348 		case QUOTE:
349 		{
350 			break;
351 		}
352 		default:
353 		{
354 			throw new NoViableAltException(LT(1), getFilename());
355 		}
356 		}
357 		}
358 		{
359 		switch ( LA(1)) {
360 		case WHSP:
361 		{
362 			match(WHSP);
363 			break;
364 		}
365 		case NUMERICOID:
366 		case DESCR:
367 		case QUIRKS_DESCR:
368 		case QUOTE:
369 		{
370 			break;
371 		}
372 		default:
373 		{
374 			throw new NoViableAltException(LT(1), getFilename());
375 		}
376 		}
377 		}
378 		{
379 		switch ( LA(1)) {
380 		case QUOTE:
381 		{
382 			match(QUOTE);
383 			break;
384 		}
385 		case NUMERICOID:
386 		case DESCR:
387 		case QUIRKS_DESCR:
388 		{
389 			break;
390 		}
391 		default:
392 		{
393 			throw new NoViableAltException(LT(1), getFilename());
394 		}
395 		}
396 		}
397 		{
398 		switch ( LA(1)) {
399 		case QUIRKS_DESCR:
400 		{
401 			{
402 			q2 = LT(1);
403 			match(QUIRKS_DESCR);
404 			noidlen.noid = q2.getText();
405 			}
406 			break;
407 		}
408 		case DESCR:
409 		{
410 			{
411 			d4 = LT(1);
412 			match(DESCR);
413 			noidlen.noid = d4.getText();
414 			}
415 			break;
416 		}
417 		case NUMERICOID:
418 		{
419 			{
420 			n2 = LT(1);
421 			match(NUMERICOID);
422 			noidlen.noid = n2.getText();
423 			}
424 			break;
425 		}
426 		default:
427 		{
428 			throw new NoViableAltException(LT(1), getFilename());
429 		}
430 		}
431 		}
432 		{
433 		switch ( LA(1)) {
434 		case QUOTE:
435 		{
436 			match(QUOTE);
437 			break;
438 		}
439 		case EOF:
440 		case WHSP:
441 		case RPAR:
442 		case LEN:
443 		{
444 			break;
445 		}
446 		default:
447 		{
448 			throw new NoViableAltException(LT(1), getFilename());
449 		}
450 		}
451 		}
452 		{
453 		switch ( LA(1)) {
454 		case WHSP:
455 		{
456 			match(WHSP);
457 			break;
458 		}
459 		case EOF:
460 		case RPAR:
461 		case LEN:
462 		{
463 			break;
464 		}
465 		default:
466 		{
467 			throw new NoViableAltException(LT(1), getFilename());
468 		}
469 		}
470 		}
471 		{
472 		switch ( LA(1)) {
473 		case RPAR:
474 		{
475 			match(RPAR);
476 			break;
477 		}
478 		case EOF:
479 		case LEN:
480 		{
481 			break;
482 		}
483 		default:
484 		{
485 			throw new NoViableAltException(LT(1), getFilename());
486 		}
487 		}
488 		}
489 		{
490 		switch ( LA(1)) {
491 		case LEN:
492 		{
493 			l = LT(1);
494 			match(LEN);
495 			noidlen.len = Long.parseLong(l.getText());
496 			{
497 			switch ( LA(1)) {
498 			case QUOTE:
499 			{
500 				match(QUOTE);
501 				break;
502 			}
503 			case EOF:
504 			case WHSP:
505 			case RPAR:
506 			{
507 				break;
508 			}
509 			default:
510 			{
511 				throw new NoViableAltException(LT(1), getFilename());
512 			}
513 			}
514 			}
515 			{
516 			switch ( LA(1)) {
517 			case WHSP:
518 			{
519 				match(WHSP);
520 				break;
521 			}
522 			case EOF:
523 			case RPAR:
524 			{
525 				break;
526 			}
527 			default:
528 			{
529 				throw new NoViableAltException(LT(1), getFilename());
530 			}
531 			}
532 			}
533 			{
534 			switch ( LA(1)) {
535 			case RPAR:
536 			{
537 				match(RPAR);
538 				break;
539 			}
540 			case EOF:
541 			{
542 				break;
543 			}
544 			default:
545 			{
546 				throw new NoViableAltException(LT(1), getFilename());
547 			}
548 			}
549 			}
550 			break;
551 		}
552 		case EOF:
553 		{
554 			break;
555 		}
556 		default:
557 		{
558 			throw new NoViableAltException(LT(1), getFilename());
559 		}
560 		}
561 		}
562 		}
563 		return noidlen;
564 	}
565 	
566 /**
567      * numericoid = number 1*( DOT number )
568      */
569 	public final String  numericoid() throws RecognitionException, TokenStreamException {
570 		String numericoid=null;
571 		
572 		Token  n1 = null;
573 		Token  n2 = null;
574 		
575 		matchedProduction( "AntlrSchemaValueParser.numericoid()" );
576 		
577 		
578 		{
579 		{
580 		switch ( LA(1)) {
581 		case WHSP:
582 		{
583 			match(WHSP);
584 			break;
585 		}
586 		case LPAR:
587 		case NUMERICOID:
588 		case QUOTE:
589 		{
590 			break;
591 		}
592 		default:
593 		{
594 			throw new NoViableAltException(LT(1), getFilename());
595 		}
596 		}
597 		}
598 		{
599 		switch ( LA(1)) {
600 		case LPAR:
601 		{
602 			match(LPAR);
603 			{
604 			switch ( LA(1)) {
605 			case WHSP:
606 			{
607 				match(WHSP);
608 				break;
609 			}
610 			case NUMERICOID:
611 			case QUOTE:
612 			{
613 				break;
614 			}
615 			default:
616 			{
617 				throw new NoViableAltException(LT(1), getFilename());
618 			}
619 			}
620 			}
621 			break;
622 		}
623 		case NUMERICOID:
624 		case QUOTE:
625 		{
626 			break;
627 		}
628 		default:
629 		{
630 			throw new NoViableAltException(LT(1), getFilename());
631 		}
632 		}
633 		}
634 		{
635 		switch ( LA(1)) {
636 		case QUOTE:
637 		{
638 			{
639 			match(QUOTE);
640 			n1 = LT(1);
641 			match(NUMERICOID);
642 			numericoid = n1.getText();
643 			match(QUOTE);
644 			}
645 			break;
646 		}
647 		case NUMERICOID:
648 		{
649 			{
650 			n2 = LT(1);
651 			match(NUMERICOID);
652 			numericoid = n2.getText();
653 			}
654 			break;
655 		}
656 		default:
657 		{
658 			throw new NoViableAltException(LT(1), getFilename());
659 		}
660 		}
661 		}
662 		{
663 		{
664 		switch ( LA(1)) {
665 		case WHSP:
666 		{
667 			match(WHSP);
668 			break;
669 		}
670 		case EOF:
671 		case RPAR:
672 		{
673 			break;
674 		}
675 		default:
676 		{
677 			throw new NoViableAltException(LT(1), getFilename());
678 		}
679 		}
680 		}
681 		{
682 		switch ( LA(1)) {
683 		case RPAR:
684 		{
685 			match(RPAR);
686 			break;
687 		}
688 		case EOF:
689 		{
690 			break;
691 		}
692 		default:
693 		{
694 			throw new NoViableAltException(LT(1), getFilename());
695 		}
696 		}
697 		}
698 		}
699 		}
700 		return numericoid;
701 	}
702 	
703 /**
704      * oid = descr / numericoid
705      * numericoid = number 1*( DOT number )
706      * descr = keystring
707      * keystring = leadkeychar *keychar
708      * leadkeychar = ALPHA
709      * keychar = ALPHA / DIGIT / HYPHEN
710      * number  = DIGIT / ( LDIGIT 1*DIGIT )
711      *
712      */
713 	public final String  oid() throws RecognitionException, TokenStreamException {
714 		String oid=null;
715 		
716 		Token  n1 = null;
717 		Token  n2 = null;
718 		Token  d1 = null;
719 		Token  d2 = null;
720 		
721 		matchedProduction( "AntlrSchemaValueParser.oid()" );
722 		
723 		
724 		{
725 		{
726 		switch ( LA(1)) {
727 		case WHSP:
728 		{
729 			match(WHSP);
730 			break;
731 		}
732 		case NUMERICOID:
733 		case DESCR:
734 		case QUOTE:
735 		{
736 			break;
737 		}
738 		default:
739 		{
740 			throw new NoViableAltException(LT(1), getFilename());
741 		}
742 		}
743 		}
744 		{
745 		switch ( LA(1)) {
746 		case NUMERICOID:
747 		{
748 			{
749 			n2 = LT(1);
750 			match(NUMERICOID);
751 			oid = n2.getText();
752 			}
753 			break;
754 		}
755 		case DESCR:
756 		{
757 			{
758 			d2 = LT(1);
759 			match(DESCR);
760 			oid = d2.getText();
761 			}
762 			break;
763 		}
764 		default:
765 			if ((LA(1)==QUOTE) && (LA(2)==NUMERICOID)) {
766 				{
767 				match(QUOTE);
768 				n1 = LT(1);
769 				match(NUMERICOID);
770 				oid = n1.getText();
771 				match(QUOTE);
772 				}
773 			}
774 			else if ((LA(1)==QUOTE) && (LA(2)==DESCR)) {
775 				{
776 				match(QUOTE);
777 				d1 = LT(1);
778 				match(DESCR);
779 				oid = d1.getText();
780 				match(QUOTE);
781 				}
782 			}
783 		else {
784 			throw new NoViableAltException(LT(1), getFilename());
785 		}
786 		}
787 		}
788 		{
789 		if ((LA(1)==WHSP) && (_tokenSet_0.member(LA(2))) && (_tokenSet_0.member(LA(3)))) {
790 			match(WHSP);
791 		}
792 		else if ((_tokenSet_0.member(LA(1))) && (_tokenSet_0.member(LA(2))) && (_tokenSet_0.member(LA(3)))) {
793 		}
794 		else {
795 			throw new NoViableAltException(LT(1), getFilename());
796 		}
797 		
798 		}
799 		}
800 		return oid;
801 	}
802 	
803 /**
804      * oids = oid / ( LPAREN WSP oidlist WSP RPAREN )
805      * oidlist = oid *( WSP DOLLAR WSP oid )
806      */
807 	public final List<String>  oids() throws RecognitionException, TokenStreamException {
808 		List<String> oids;
809 		
810 		
811 		matchedProduction( "AntlrSchemaValueParser.oids()" );
812 		oids = new ArrayList<String>();
813 		String oid = null;
814 		
815 		
816 		{
817 		switch ( LA(1)) {
818 		case WHSP:
819 		case NUMERICOID:
820 		case DESCR:
821 		case QUOTE:
822 		{
823 			{
824 			oid=oid();
825 			oids.add(oid);
826 			}
827 			break;
828 		}
829 		case LPAR:
830 		{
831 			{
832 			match(LPAR);
833 			oid=oid();
834 			oids.add(oid);
835 			{
836 			_loop107:
837 			do {
838 				if ((_tokenSet_1.member(LA(1)))) {
839 					{
840 					switch ( LA(1)) {
841 					case DOLLAR:
842 					{
843 						match(DOLLAR);
844 						break;
845 					}
846 					case WHSP:
847 					case NUMERICOID:
848 					case DESCR:
849 					case QUOTE:
850 					{
851 						break;
852 					}
853 					default:
854 					{
855 						throw new NoViableAltException(LT(1), getFilename());
856 					}
857 					}
858 					}
859 					oid=oid();
860 					oids.add(oid);
861 				}
862 				else {
863 					break _loop107;
864 				}
865 				
866 			} while (true);
867 			}
868 			match(RPAR);
869 			}
870 			break;
871 		}
872 		default:
873 		{
874 			throw new NoViableAltException(LT(1), getFilename());
875 		}
876 		}
877 		}
878 		return oids;
879 	}
880 	
881 /**
882      * qdescr = SQUOTE descr SQUOTE
883      */
884 	public final String  qdescr() throws RecognitionException, TokenStreamException {
885 		String qdescr=null;
886 		
887 		Token  d1 = null;
888 		Token  d2 = null;
889 		
890 		matchedProduction( "AntlrSchemaValueParser.qdescr()" );
891 		
892 		
893 		{
894 		{
895 		switch ( LA(1)) {
896 		case WHSP:
897 		{
898 			match(WHSP);
899 			break;
900 		}
901 		case DESCR:
902 		case QUOTE:
903 		{
904 			break;
905 		}
906 		default:
907 		{
908 			throw new NoViableAltException(LT(1), getFilename());
909 		}
910 		}
911 		}
912 		{
913 		switch ( LA(1)) {
914 		case QUOTE:
915 		{
916 			{
917 			match(QUOTE);
918 			d1 = LT(1);
919 			match(DESCR);
920 			qdescr = d1.getText();
921 			match(QUOTE);
922 			}
923 			break;
924 		}
925 		case DESCR:
926 		{
927 			{
928 			d2 = LT(1);
929 			match(DESCR);
930 			qdescr = d2.getText();
931 			}
932 			break;
933 		}
934 		default:
935 		{
936 			throw new NoViableAltException(LT(1), getFilename());
937 		}
938 		}
939 		}
940 		}
941 		return qdescr;
942 	}
943 	
944 /**
945      * qdescrs = qdescr / ( LPAREN WSP qdescrlist WSP RPAREN )
946      * qdescrlist = [ qdescr *( SP qdescr ) ]
947      */
948 	public final List<String>  qdescrs() throws RecognitionException, TokenStreamException {
949 		List<String> qdescrs;
950 		
951 		
952 		matchedProduction( "AntlrSchemaValueParser.qdescrs()" );
953 		qdescrs = new ArrayList<String>();
954 		String qdescr = null;
955 		
956 		
957 		{
958 		switch ( LA(1)) {
959 		case WHSP:
960 		case DESCR:
961 		case QUOTE:
962 		{
963 			{
964 			qdescr=qdescr();
965 			qdescrs.add(qdescr);
966 			}
967 			break;
968 		}
969 		case LPAR:
970 		{
971 			{
972 			match(LPAR);
973 			qdescr=qdescr();
974 			qdescrs.add(qdescr);
975 			{
976 			if ((LA(1)==WHSP) && (_tokenSet_2.member(LA(2))) && (_tokenSet_3.member(LA(3)))) {
977 				match(WHSP);
978 			}
979 			else if ((_tokenSet_2.member(LA(1))) && (_tokenSet_3.member(LA(2))) && (_tokenSet_3.member(LA(3)))) {
980 			}
981 			else {
982 				throw new NoViableAltException(LT(1), getFilename());
983 			}
984 			
985 			}
986 			{
987 			switch ( LA(1)) {
988 			case DOLLAR:
989 			{
990 				match(DOLLAR);
991 				break;
992 			}
993 			case WHSP:
994 			case RPAR:
995 			case DESCR:
996 			case QUOTE:
997 			{
998 				break;
999 			}
1000 			default:
1001 			{
1002 				throw new NoViableAltException(LT(1), getFilename());
1003 			}
1004 			}
1005 			}
1006 			{
1007 			if ((LA(1)==WHSP) && (_tokenSet_4.member(LA(2))) && (_tokenSet_3.member(LA(3)))) {
1008 				match(WHSP);
1009 			}
1010 			else if ((_tokenSet_4.member(LA(1))) && (_tokenSet_3.member(LA(2))) && (_tokenSet_3.member(LA(3)))) {
1011 			}
1012 			else {
1013 				throw new NoViableAltException(LT(1), getFilename());
1014 			}
1015 			
1016 			}
1017 			{
1018 			_loop125:
1019 			do {
1020 				if ((LA(1)==WHSP||LA(1)==DESCR||LA(1)==QUOTE)) {
1021 					qdescr=qdescr();
1022 					qdescrs.add(qdescr);
1023 					{
1024 					if ((LA(1)==WHSP) && (_tokenSet_2.member(LA(2))) && (_tokenSet_3.member(LA(3)))) {
1025 						match(WHSP);
1026 					}
1027 					else if ((_tokenSet_2.member(LA(1))) && (_tokenSet_3.member(LA(2))) && (_tokenSet_3.member(LA(3)))) {
1028 					}
1029 					else {
1030 						throw new NoViableAltException(LT(1), getFilename());
1031 					}
1032 					
1033 					}
1034 					{
1035 					switch ( LA(1)) {
1036 					case DOLLAR:
1037 					{
1038 						match(DOLLAR);
1039 						break;
1040 					}
1041 					case WHSP:
1042 					case RPAR:
1043 					case DESCR:
1044 					case QUOTE:
1045 					{
1046 						break;
1047 					}
1048 					default:
1049 					{
1050 						throw new NoViableAltException(LT(1), getFilename());
1051 					}
1052 					}
1053 					}
1054 					{
1055 					if ((LA(1)==WHSP) && (_tokenSet_4.member(LA(2))) && (_tokenSet_3.member(LA(3)))) {
1056 						match(WHSP);
1057 					}
1058 					else if ((_tokenSet_4.member(LA(1))) && (_tokenSet_3.member(LA(2))) && (_tokenSet_3.member(LA(3)))) {
1059 					}
1060 					else {
1061 						throw new NoViableAltException(LT(1), getFilename());
1062 					}
1063 					
1064 					}
1065 				}
1066 				else {
1067 					break _loop125;
1068 				}
1069 				
1070 			} while (true);
1071 			}
1072 			match(RPAR);
1073 			}
1074 			break;
1075 		}
1076 		default:
1077 		{
1078 			throw new NoViableAltException(LT(1), getFilename());
1079 		}
1080 		}
1081 		}
1082 		return qdescrs;
1083 	}
1084 	
1085 /**
1086      * qdescr = SQUOTE descr SQUOTE
1087      */
1088 	public final String  quirksQdescr() throws RecognitionException, TokenStreamException {
1089 		String qdescr=null;
1090 		
1091 		Token  d1 = null;
1092 		Token  d2 = null;
1093 		Token  d3 = null;
1094 		Token  d4 = null;
1095 		Token  n1 = null;
1096 		Token  n2 = null;
1097 		
1098 		matchedProduction( "AntlrSchemaValueParser.qdescr()" );
1099 		
1100 		
1101 		{
1102 		{
1103 		switch ( LA(1)) {
1104 		case WHSP:
1105 		{
1106 			match(WHSP);
1107 			break;
1108 		}
1109 		case NUMERICOID:
1110 		case DESCR:
1111 		case QUIRKS_DESCR:
1112 		case QUOTE:
1113 		{
1114 			break;
1115 		}
1116 		default:
1117 		{
1118 			throw new NoViableAltException(LT(1), getFilename());
1119 		}
1120 		}
1121 		}
1122 		{
1123 		switch ( LA(1)) {
1124 		case QUIRKS_DESCR:
1125 		{
1126 			{
1127 			d2 = LT(1);
1128 			match(QUIRKS_DESCR);
1129 			qdescr = d2.getText();
1130 			}
1131 			break;
1132 		}
1133 		case DESCR:
1134 		{
1135 			{
1136 			d4 = LT(1);
1137 			match(DESCR);
1138 			qdescr = d4.getText();
1139 			}
1140 			break;
1141 		}
1142 		case NUMERICOID:
1143 		{
1144 			{
1145 			n2 = LT(1);
1146 			match(NUMERICOID);
1147 			qdescr = n2.getText();
1148 			}
1149 			break;
1150 		}
1151 		default:
1152 			if ((LA(1)==QUOTE) && (LA(2)==QUIRKS_DESCR)) {
1153 				{
1154 				match(QUOTE);
1155 				d1 = LT(1);
1156 				match(QUIRKS_DESCR);
1157 				qdescr = d1.getText();
1158 				match(QUOTE);
1159 				}
1160 			}
1161 			else if ((LA(1)==QUOTE) && (LA(2)==DESCR)) {
1162 				{
1163 				match(QUOTE);
1164 				d3 = LT(1);
1165 				match(DESCR);
1166 				qdescr = d3.getText();
1167 				match(QUOTE);
1168 				}
1169 			}
1170 			else if ((LA(1)==QUOTE) && (LA(2)==NUMERICOID)) {
1171 				{
1172 				match(QUOTE);
1173 				n1 = LT(1);
1174 				match(NUMERICOID);
1175 				qdescr = n1.getText();
1176 				match(QUOTE);
1177 				}
1178 			}
1179 		else {
1180 			throw new NoViableAltException(LT(1), getFilename());
1181 		}
1182 		}
1183 		}
1184 		{
1185 		if ((LA(1)==WHSP) && (_tokenSet_5.member(LA(2))) && (_tokenSet_5.member(LA(3)))) {
1186 			match(WHSP);
1187 		}
1188 		else if ((_tokenSet_5.member(LA(1))) && (_tokenSet_5.member(LA(2))) && (_tokenSet_5.member(LA(3)))) {
1189 		}
1190 		else {
1191 			throw new NoViableAltException(LT(1), getFilename());
1192 		}
1193 		
1194 		}
1195 		}
1196 		return qdescr;
1197 	}
1198 	
1199 /**
1200      * qdescrs = qdescr / ( LPAREN WSP qdescrlist WSP RPAREN )
1201      * qdescrlist = [ qdescr *( SP qdescr ) ]
1202      */
1203 	public final List<String>  quirksQdescrs() throws RecognitionException, TokenStreamException {
1204 		List<String> qdescrs;
1205 		
1206 		
1207 		matchedProduction( "AntlrSchemaValueParser.qdescrs()" );
1208 		qdescrs = new ArrayList<String>();
1209 		String qdescr = null;
1210 		
1211 		
1212 		{
1213 		switch ( LA(1)) {
1214 		case WHSP:
1215 		case NUMERICOID:
1216 		case DESCR:
1217 		case QUIRKS_DESCR:
1218 		case QUOTE:
1219 		{
1220 			{
1221 			qdescr=quirksQdescr();
1222 			qdescrs.add(qdescr);
1223 			}
1224 			break;
1225 		}
1226 		case LPAR:
1227 		{
1228 			{
1229 			match(LPAR);
1230 			qdescr=quirksQdescr();
1231 			qdescrs.add(qdescr);
1232 			{
1233 			if ((LA(1)==WHSP) && (_tokenSet_6.member(LA(2))) && (_tokenSet_5.member(LA(3)))) {
1234 				match(WHSP);
1235 			}
1236 			else if ((_tokenSet_6.member(LA(1))) && (_tokenSet_5.member(LA(2))) && (_tokenSet_5.member(LA(3)))) {
1237 			}
1238 			else {
1239 				throw new NoViableAltException(LT(1), getFilename());
1240 			}
1241 			
1242 			}
1243 			{
1244 			switch ( LA(1)) {
1245 			case DOLLAR:
1246 			{
1247 				match(DOLLAR);
1248 				break;
1249 			}
1250 			case WHSP:
1251 			case RPAR:
1252 			case NUMERICOID:
1253 			case DESCR:
1254 			case QUIRKS_DESCR:
1255 			case QUOTE:
1256 			{
1257 				break;
1258 			}
1259 			default:
1260 			{
1261 				throw new NoViableAltException(LT(1), getFilename());
1262 			}
1263 			}
1264 			}
1265 			{
1266 			if ((LA(1)==WHSP) && (_tokenSet_7.member(LA(2))) && (_tokenSet_5.member(LA(3)))) {
1267 				match(WHSP);
1268 			}
1269 			else if ((_tokenSet_7.member(LA(1))) && (_tokenSet_5.member(LA(2))) && (_tokenSet_5.member(LA(3)))) {
1270 			}
1271 			else {
1272 				throw new NoViableAltException(LT(1), getFilename());
1273 			}
1274 			
1275 			}
1276 			{
1277 			_loop148:
1278 			do {
1279 				if ((_tokenSet_8.member(LA(1)))) {
1280 					qdescr=quirksQdescr();
1281 					qdescrs.add(qdescr);
1282 					{
1283 					if ((LA(1)==WHSP) && (_tokenSet_6.member(LA(2))) && (_tokenSet_5.member(LA(3)))) {
1284 						match(WHSP);
1285 					}
1286 					else if ((_tokenSet_6.member(LA(1))) && (_tokenSet_5.member(LA(2))) && (_tokenSet_5.member(LA(3)))) {
1287 					}
1288 					else {
1289 						throw new NoViableAltException(LT(1), getFilename());
1290 					}
1291 					
1292 					}
1293 					{
1294 					switch ( LA(1)) {
1295 					case DOLLAR:
1296 					{
1297 						match(DOLLAR);
1298 						break;
1299 					}
1300 					case WHSP:
1301 					case RPAR:
1302 					case NUMERICOID:
1303 					case DESCR:
1304 					case QUIRKS_DESCR:
1305 					case QUOTE:
1306 					{
1307 						break;
1308 					}
1309 					default:
1310 					{
1311 						throw new NoViableAltException(LT(1), getFilename());
1312 					}
1313 					}
1314 					}
1315 					{
1316 					if ((LA(1)==WHSP) && (_tokenSet_7.member(LA(2))) && (_tokenSet_5.member(LA(3)))) {
1317 						match(WHSP);
1318 					}
1319 					else if ((_tokenSet_7.member(LA(1))) && (_tokenSet_5.member(LA(2))) && (_tokenSet_5.member(LA(3)))) {
1320 					}
1321 					else {
1322 						throw new NoViableAltException(LT(1), getFilename());
1323 					}
1324 					
1325 					}
1326 				}
1327 				else {
1328 					break _loop148;
1329 				}
1330 				
1331 			} while (true);
1332 			}
1333 			match(RPAR);
1334 			}
1335 			break;
1336 		}
1337 		default:
1338 		{
1339 			throw new NoViableAltException(LT(1), getFilename());
1340 		}
1341 		}
1342 		}
1343 		return qdescrs;
1344 	}
1345 	
1346 /**
1347      * ruleid = number
1348      * number  = DIGIT / ( LDIGIT 1*DIGIT )
1349      *
1350      */
1351 	public final Integer  ruleid() throws RecognitionException, TokenStreamException {
1352 		Integer ruleid=null;
1353 		
1354 		Token  n = null;
1355 		
1356 		matchedProduction( "AntlrSchemaValueParser.ruleid()" );
1357 		
1358 		
1359 		{
1360 		{
1361 		switch ( LA(1)) {
1362 		case WHSP:
1363 		{
1364 			match(WHSP);
1365 			break;
1366 		}
1367 		case NUMBER:
1368 		{
1369 			break;
1370 		}
1371 		default:
1372 		{
1373 			throw new NoViableAltException(LT(1), getFilename());
1374 		}
1375 		}
1376 		}
1377 		n = LT(1);
1378 		match(NUMBER);
1379 		ruleid = Integer.parseInt(n.getText());
1380 		}
1381 		return ruleid;
1382 	}
1383 	
1384 /**
1385      * ruleids = ruleid / ( LPAREN WSP ruleidlist WSP RPAREN )
1386      * ruleidlist = ruleid *( SP ruleid )
1387      */
1388 	public final List<Integer>  ruleids() throws RecognitionException, TokenStreamException {
1389 		List<Integer> ruleids;
1390 		
1391 		
1392 		matchedProduction( "AntlrSchemaValueParser.ruleids()" );
1393 		ruleids = new ArrayList<Integer>();
1394 		Integer ruleid = null;
1395 		
1396 		
1397 		{
1398 		switch ( LA(1)) {
1399 		case WHSP:
1400 		case NUMBER:
1401 		{
1402 			{
1403 			ruleid=ruleid();
1404 			ruleids.add(ruleid);
1405 			}
1406 			break;
1407 		}
1408 		case LPAR:
1409 		{
1410 			{
1411 			match(LPAR);
1412 			ruleid=ruleid();
1413 			ruleids.add(ruleid);
1414 			{
1415 			_loop157:
1416 			do {
1417 				if ((LA(1)==WHSP) && (LA(2)==WHSP||LA(2)==NUMBER)) {
1418 					match(WHSP);
1419 					ruleid=ruleid();
1420 					ruleids.add(ruleid);
1421 				}
1422 				else {
1423 					break _loop157;
1424 				}
1425 				
1426 			} while (true);
1427 			}
1428 			{
1429 			switch ( LA(1)) {
1430 			case WHSP:
1431 			{
1432 				match(WHSP);
1433 				break;
1434 			}
1435 			case RPAR:
1436 			{
1437 				break;
1438 			}
1439 			default:
1440 			{
1441 				throw new NoViableAltException(LT(1), getFilename());
1442 			}
1443 			}
1444 			}
1445 			match(RPAR);
1446 			}
1447 			break;
1448 		}
1449 		default:
1450 		{
1451 			throw new NoViableAltException(LT(1), getFilename());
1452 		}
1453 		}
1454 		}
1455 		return ruleids;
1456 	}
1457 	
1458 	
1459 	public static final String[] _tokenNames = {
1460 		"<0>",
1461 		"EOF",
1462 		"<2>",
1463 		"NULL_TREE_LOOKAHEAD",
1464 		"WHSP",
1465 		"LPAR",
1466 		"RPAR",
1467 		"CHAR",
1468 		"LDIGIT",
1469 		"DIGIT",
1470 		"NUMBER",
1471 		"NUMBER2",
1472 		"NUMERICOID",
1473 		"HYPEN",
1474 		"OTHER",
1475 		"DESCR",
1476 		"QUIRKS_DESCR",
1477 		"QUOTE",
1478 		"DOLLAR",
1479 		"LCURLY",
1480 		"RCURLY",
1481 		"LEN",
1482 		"DESCR_OR_QUIRKS_DESCR"
1483 	};
1484 	
1485 	private static final long[] mk_tokenSet_0() {
1486 		long[] data = { 430162L, 0L};
1487 		return data;
1488 	}
1489 	public static final BitSet _tokenSet_0 = new BitSet(mk_tokenSet_0());
1490 	private static final long[] mk_tokenSet_1() {
1491 		long[] data = { 430096L, 0L};
1492 		return data;
1493 	}
1494 	public static final BitSet _tokenSet_1 = new BitSet(mk_tokenSet_1());
1495 	private static final long[] mk_tokenSet_2() {
1496 		long[] data = { 426064L, 0L};
1497 		return data;
1498 	}
1499 	public static final BitSet _tokenSet_2 = new BitSet(mk_tokenSet_2());
1500 	private static final long[] mk_tokenSet_3() {
1501 		long[] data = { 426066L, 0L};
1502 		return data;
1503 	}
1504 	public static final BitSet _tokenSet_3 = new BitSet(mk_tokenSet_3());
1505 	private static final long[] mk_tokenSet_4() {
1506 		long[] data = { 163920L, 0L};
1507 		return data;
1508 	}
1509 	public static final BitSet _tokenSet_4 = new BitSet(mk_tokenSet_4());
1510 	private static final long[] mk_tokenSet_5() {
1511 		long[] data = { 495698L, 0L};
1512 		return data;
1513 	}
1514 	public static final BitSet _tokenSet_5 = new BitSet(mk_tokenSet_5());
1515 	private static final long[] mk_tokenSet_6() {
1516 		long[] data = { 495696L, 0L};
1517 		return data;
1518 	}
1519 	public static final BitSet _tokenSet_6 = new BitSet(mk_tokenSet_6());
1520 	private static final long[] mk_tokenSet_7() {
1521 		long[] data = { 233552L, 0L};
1522 		return data;
1523 	}
1524 	public static final BitSet _tokenSet_7 = new BitSet(mk_tokenSet_7());
1525 	private static final long[] mk_tokenSet_8() {
1526 		long[] data = { 233488L, 0L};
1527 		return data;
1528 	}
1529 	public static final BitSet _tokenSet_8 = new BitSet(mk_tokenSet_8());
1530 	
1531 	}