View Javadoc
1   // $ANTLR 2.7.7 (20060906): "distinguishedName.g" -> "AntlrDnLexer.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.name;
23  
24  import java.io.StringReader;
25  import java.util.ArrayList;
26  import java.util.HashMap;
27  import java.util.List;
28  import java.util.Map;
29  
30  import org.apache.directory.api.ldap.model.exception.LdapInvalidDnException;
31  import javax.naming.NameParser;
32  import org.apache.directory.api.ldap.model.entry.StringValue;
33  import org.apache.directory.api.ldap.model.entry.BinaryValue;
34  import org.apache.directory.api.ldap.model.schema.parsers.ParserMonitor;
35  import org.apache.directory.api.util.Strings;
36  
37  
38  import java.io.InputStream;
39  import antlr.TokenStreamException;
40  import antlr.TokenStreamIOException;
41  import antlr.TokenStreamRecognitionException;
42  import antlr.CharStreamException;
43  import antlr.CharStreamIOException;
44  import antlr.ANTLRException;
45  import java.io.Reader;
46  import java.util.Hashtable;
47  import antlr.CharScanner;
48  import antlr.InputBuffer;
49  import antlr.ByteBuffer;
50  import antlr.CharBuffer;
51  import antlr.Token;
52  import antlr.CommonToken;
53  import antlr.RecognitionException;
54  import antlr.NoViableAltForCharException;
55  import antlr.MismatchedCharException;
56  import antlr.TokenStream;
57  import antlr.ANTLRHashString;
58  import antlr.LexerSharedInputState;
59  import antlr.collections.impl.BitSet;
60  import antlr.SemanticException;
61  
62  /**
63   * An antlr generated Dn lexer.
64   *
65   * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
66   */
67  public class AntlrDnLexer extends antlr.CharScanner implements AntlrDnTokenTypes, TokenStream
68   {
69  public AntlrDnLexer(InputStream in) {
70  	this(new ByteBuffer(in));
71  }
72  public AntlrDnLexer(Reader in) {
73  	this(new CharBuffer(in));
74  }
75  public AntlrDnLexer(InputBuffer ib) {
76  	this(new LexerSharedInputState(ib));
77  }
78  public AntlrDnLexer(LexerSharedInputState state) {
79  	super(state);
80  	caseSensitiveLiterals = true;
81  	setCaseSensitive(false);
82  	literals = new Hashtable();
83  }
84  
85  public Token nextToken() throws TokenStreamException {
86  	Token theRetToken=null;
87  tryAgain:
88  	for (;;) {
89  		Token _token = null;
90  		int _ttype = Token.INVALID_TYPE;
91  		resetText();
92  		try {   // for char stream error handling
93  			try {   // for lexical error handling
94  				switch ( LA(1)) {
95  				case ',':
96  				{
97  					mCOMMA(true);
98  					theRetToken=_returnToken;
99  					break;
100 				}
101 				case '=':
102 				{
103 					mEQUALS(true);
104 					theRetToken=_returnToken;
105 					break;
106 				}
107 				case '+':
108 				{
109 					mPLUS(true);
110 					theRetToken=_returnToken;
111 					break;
112 				}
113 				case '-':
114 				{
115 					mHYPHEN(true);
116 					theRetToken=_returnToken;
117 					break;
118 				}
119 				case '_':
120 				{
121 					mUNDERSCORE(true);
122 					theRetToken=_returnToken;
123 					break;
124 				}
125 				case '"':
126 				{
127 					mDQUOTE(true);
128 					theRetToken=_returnToken;
129 					break;
130 				}
131 				case ';':
132 				{
133 					mSEMI(true);
134 					theRetToken=_returnToken;
135 					break;
136 				}
137 				case '<':
138 				{
139 					mLANGLE(true);
140 					theRetToken=_returnToken;
141 					break;
142 				}
143 				case '>':
144 				{
145 					mRANGLE(true);
146 					theRetToken=_returnToken;
147 					break;
148 				}
149 				case ' ':
150 				{
151 					mSPACE(true);
152 					theRetToken=_returnToken;
153 					break;
154 				}
155 				case '0':  case '1':  case '2':  case '3':
156 				case '4':  case '5':  case '6':  case '7':
157 				case '8':  case '9':  case 'a':  case 'b':
158 				case 'c':  case 'd':  case 'e':  case 'f':
159 				case 'g':  case 'h':  case 'i':  case 'j':
160 				case 'k':  case 'l':  case 'm':  case 'n':
161 				case 'o':  case 'p':  case 'q':  case 'r':
162 				case 's':  case 't':  case 'u':  case 'v':
163 				case 'w':  case 'x':  case 'y':  case 'z':
164 				{
165 					mNUMERICOID_OR_ALPHA_OR_DIGIT(true);
166 					theRetToken=_returnToken;
167 					break;
168 				}
169 				case '\\':
170 				{
171 					mHEXPAIR_OR_ESCESC_ESCSHARP_OR_ESC(true);
172 					theRetToken=_returnToken;
173 					break;
174 				}
175 				case '#':
176 				{
177 					mHEXVALUE_OR_SHARP(true);
178 					theRetToken=_returnToken;
179 					break;
180 				}
181 				case '\u0001':  case '\u0002':  case '\u0003':  case '\u0004':
182 				case '\u0005':  case '\u0006':  case '\u0007':  case '\u0008':
183 				case '\t':  case '\n':  case '\u000b':  case '\u000c':
184 				case '\r':  case '\u000e':  case '\u000f':  case '\u0010':
185 				case '\u0011':  case '\u0012':  case '\u0013':  case '\u0014':
186 				case '\u0015':  case '\u0016':  case '\u0017':  case '\u0018':
187 				case '\u0019':  case '\u001a':  case '\u001b':  case '\u001c':
188 				case '\u001d':  case '\u001e':  case '\u001f':  case '!':
189 				case '$':  case '%':  case '&':  case '\'':
190 				case '(':  case ')':  case '*':  case '.':
191 				case '/':  case ':':  case '?':  case '@':
192 				case '[':  case ']':  case '^':  case '`':
193 				case '{':  case '|':  case '}':  case '~':
194 				case '\u007f':
195 				{
196 					mLUTF1_REST(true);
197 					theRetToken=_returnToken;
198 					break;
199 				}
200 				default:
201 					if (((LA(1) >= '\u0080' && LA(1) <= '\ufffe'))) {
202 						mUTFMB(true);
203 						theRetToken=_returnToken;
204 					}
205 				else {
206 					if (LA(1)==EOF_CHAR) {uponEOF(); _returnToken = makeToken(Token.EOF_TYPE);}
207 				else {throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());}
208 				}
209 				}
210 				if ( _returnToken==null ) continue tryAgain; // found SKIP token
211 				_ttype = _returnToken.getType();
212 				_ttype = testLiteralsTable(_ttype);
213 				_returnToken.setType(_ttype);
214 				return _returnToken;
215 			}
216 			catch (RecognitionException e) {
217 				throw new TokenStreamRecognitionException(e);
218 			}
219 		}
220 		catch (CharStreamException cse) {
221 			if ( cse instanceof CharStreamIOException ) {
222 				throw new TokenStreamIOException(((CharStreamIOException)cse).io);
223 			}
224 			else {
225 				throw new TokenStreamException(cse.getMessage());
226 			}
227 		}
228 	}
229 }
230 
231 	public final void mCOMMA(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
232 		int _ttype; Token _token=null; int _begin=text.length();
233 		_ttype = COMMA;
234 		int _saveIndex;
235 		
236 		match(',');
237 		if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
238 			_token = makeToken(_ttype);
239 			_token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
240 		}
241 		_returnToken = _token;
242 	}
243 	
244 	public final void mEQUALS(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
245 		int _ttype; Token _token=null; int _begin=text.length();
246 		_ttype = EQUALS;
247 		int _saveIndex;
248 		
249 		match('=');
250 		if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
251 			_token = makeToken(_ttype);
252 			_token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
253 		}
254 		_returnToken = _token;
255 	}
256 	
257 	public final void mPLUS(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
258 		int _ttype; Token _token=null; int _begin=text.length();
259 		_ttype = PLUS;
260 		int _saveIndex;
261 		
262 		match('+');
263 		if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
264 			_token = makeToken(_ttype);
265 			_token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
266 		}
267 		_returnToken = _token;
268 	}
269 	
270 	public final void mHYPHEN(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
271 		int _ttype; Token _token=null; int _begin=text.length();
272 		_ttype = HYPHEN;
273 		int _saveIndex;
274 		
275 		match('-');
276 		if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
277 			_token = makeToken(_ttype);
278 			_token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
279 		}
280 		_returnToken = _token;
281 	}
282 	
283 	public final void mUNDERSCORE(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
284 		int _ttype; Token _token=null; int _begin=text.length();
285 		_ttype = UNDERSCORE;
286 		int _saveIndex;
287 		
288 		match('_');
289 		if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
290 			_token = makeToken(_ttype);
291 			_token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
292 		}
293 		_returnToken = _token;
294 	}
295 	
296 	public final void mDQUOTE(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
297 		int _ttype; Token _token=null; int _begin=text.length();
298 		_ttype = DQUOTE;
299 		int _saveIndex;
300 		
301 		match('"');
302 		if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
303 			_token = makeToken(_ttype);
304 			_token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
305 		}
306 		_returnToken = _token;
307 	}
308 	
309 	public final void mSEMI(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
310 		int _ttype; Token _token=null; int _begin=text.length();
311 		_ttype = SEMI;
312 		int _saveIndex;
313 		
314 		match(';');
315 		if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
316 			_token = makeToken(_ttype);
317 			_token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
318 		}
319 		_returnToken = _token;
320 	}
321 	
322 	public final void mLANGLE(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
323 		int _ttype; Token _token=null; int _begin=text.length();
324 		_ttype = LANGLE;
325 		int _saveIndex;
326 		
327 		match('<');
328 		if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
329 			_token = makeToken(_ttype);
330 			_token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
331 		}
332 		_returnToken = _token;
333 	}
334 	
335 	public final void mRANGLE(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
336 		int _ttype; Token _token=null; int _begin=text.length();
337 		_ttype = RANGLE;
338 		int _saveIndex;
339 		
340 		match('>');
341 		if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
342 			_token = makeToken(_ttype);
343 			_token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
344 		}
345 		_returnToken = _token;
346 	}
347 	
348 	public final void mSPACE(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
349 		int _ttype; Token _token=null; int _begin=text.length();
350 		_ttype = SPACE;
351 		int _saveIndex;
352 		
353 		match(' ');
354 		if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
355 			_token = makeToken(_ttype);
356 			_token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
357 		}
358 		_returnToken = _token;
359 	}
360 	
361 	public final void mNUMERICOID_OR_ALPHA_OR_DIGIT(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
362 		int _ttype; Token _token=null; int _begin=text.length();
363 		_ttype = NUMERICOID_OR_ALPHA_OR_DIGIT;
364 		int _saveIndex;
365 		
366 		boolean synPredMatched13 = false;
367 		if (((_tokenSet_0.member(LA(1))) && (_tokenSet_1.member(LA(2))))) {
368 			int _m13 = mark();
369 			synPredMatched13 = true;
370 			inputState.guessing++;
371 			try {
372 				{
373 				mNUMERICOID(false);
374 				}
375 			}
376 			catch (RecognitionException pe) {
377 				synPredMatched13 = false;
378 			}
379 			rewind(_m13);
380 inputState.guessing--;
381 		}
382 		if ( synPredMatched13 ) {
383 			mNUMERICOID(false);
384 			if ( inputState.guessing==0 ) {
385 				_ttype = NUMERICOID;
386 			}
387 		}
388 		else {
389 			boolean synPredMatched15 = false;
390 			if ((((LA(1) >= '0' && LA(1) <= '9')) && (true))) {
391 				int _m15 = mark();
392 				synPredMatched15 = true;
393 				inputState.guessing++;
394 				try {
395 					{
396 					mDIGIT(false);
397 					}
398 				}
399 				catch (RecognitionException pe) {
400 					synPredMatched15 = false;
401 				}
402 				rewind(_m15);
403 inputState.guessing--;
404 			}
405 			if ( synPredMatched15 ) {
406 				mDIGIT(false);
407 				if ( inputState.guessing==0 ) {
408 					_ttype = DIGIT;
409 				}
410 			}
411 			else {
412 				boolean synPredMatched17 = false;
413 				if ((((LA(1) >= 'a' && LA(1) <= 'z')) && (true))) {
414 					int _m17 = mark();
415 					synPredMatched17 = true;
416 					inputState.guessing++;
417 					try {
418 						{
419 						mALPHA(false);
420 						}
421 					}
422 					catch (RecognitionException pe) {
423 						synPredMatched17 = false;
424 					}
425 					rewind(_m17);
426 inputState.guessing--;
427 				}
428 				if ( synPredMatched17 ) {
429 					mALPHA(false);
430 					if ( inputState.guessing==0 ) {
431 						_ttype = ALPHA;
432 					}
433 				}
434 				else {
435 					throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());
436 				}
437 				}}
438 				if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
439 					_token = makeToken(_ttype);
440 					_token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
441 				}
442 				_returnToken = _token;
443 			}
444 			
445 	protected final void mNUMERICOID(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
446 		int _ttype; Token _token=null; int _begin=text.length();
447 		_ttype = NUMERICOID;
448 		int _saveIndex;
449 		
450 		{
451 		switch ( LA(1)) {
452 		case 'o':
453 		{
454 			match("oid.");
455 			break;
456 		}
457 		case '0':  case '1':  case '2':  case '3':
458 		case '4':  case '5':  case '6':  case '7':
459 		case '8':  case '9':
460 		{
461 			break;
462 		}
463 		default:
464 		{
465 			throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());
466 		}
467 		}
468 		}
469 		mNUMBER(false);
470 		{
471 		int _cnt21=0;
472 		_loop21:
473 		do {
474 			if ((LA(1)=='.')) {
475 				mDOT(false);
476 				mNUMBER(false);
477 			}
478 			else {
479 				if ( _cnt21>=1 ) { break _loop21; } else {throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());}
480 			}
481 			
482 			_cnt21++;
483 		} while (true);
484 		}
485 		if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
486 			_token = makeToken(_ttype);
487 			_token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
488 		}
489 		_returnToken = _token;
490 	}
491 	
492 	protected final void mDIGIT(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
493 		int _ttype; Token _token=null; int _begin=text.length();
494 		_ttype = DIGIT;
495 		int _saveIndex;
496 		
497 		matchRange('0','9');
498 		if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
499 			_token = makeToken(_ttype);
500 			_token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
501 		}
502 		_returnToken = _token;
503 	}
504 	
505 	protected final void mALPHA(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
506 		int _ttype; Token _token=null; int _begin=text.length();
507 		_ttype = ALPHA;
508 		int _saveIndex;
509 		
510 		matchRange('a','z');
511 		if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
512 			_token = makeToken(_ttype);
513 			_token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
514 		}
515 		_returnToken = _token;
516 	}
517 	
518 	protected final void mNUMBER(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
519 		int _ttype; Token _token=null; int _begin=text.length();
520 		_ttype = NUMBER;
521 		int _saveIndex;
522 		
523 		if (((LA(1) >= '1' && LA(1) <= '9')) && ((LA(2) >= '0' && LA(2) <= '9'))) {
524 			{
525 			mLDIGIT(false);
526 			{
527 			int _cnt26=0;
528 			_loop26:
529 			do {
530 				if (((LA(1) >= '0' && LA(1) <= '9'))) {
531 					mDIGIT(false);
532 				}
533 				else {
534 					if ( _cnt26>=1 ) { break _loop26; } else {throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());}
535 				}
536 				
537 				_cnt26++;
538 			} while (true);
539 			}
540 			}
541 		}
542 		else if (((LA(1) >= '0' && LA(1) <= '9')) && (true)) {
543 			mDIGIT(false);
544 		}
545 		else {
546 			throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());
547 		}
548 		
549 		if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
550 			_token = makeToken(_ttype);
551 			_token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
552 		}
553 		_returnToken = _token;
554 	}
555 	
556 	protected final void mDOT(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
557 		int _ttype; Token _token=null; int _begin=text.length();
558 		_ttype = DOT;
559 		int _saveIndex;
560 		
561 		match('.');
562 		if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
563 			_token = makeToken(_ttype);
564 			_token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
565 		}
566 		_returnToken = _token;
567 	}
568 	
569 	protected final void mLDIGIT(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
570 		int _ttype; Token _token=null; int _begin=text.length();
571 		_ttype = LDIGIT;
572 		int _saveIndex;
573 		
574 		matchRange('1','9');
575 		if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
576 			_token = makeToken(_ttype);
577 			_token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
578 		}
579 		_returnToken = _token;
580 	}
581 	
582 	public final void mHEXPAIR_OR_ESCESC_ESCSHARP_OR_ESC(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
583 		int _ttype; Token _token=null; int _begin=text.length();
584 		_ttype = HEXPAIR_OR_ESCESC_ESCSHARP_OR_ESC;
585 		int _saveIndex;
586 		
587 		boolean synPredMatched32 = false;
588 		if (((LA(1)=='\\') && (_tokenSet_2.member(LA(2))))) {
589 			int _m32 = mark();
590 			synPredMatched32 = true;
591 			inputState.guessing++;
592 			try {
593 				{
594 				mESC(false);
595 				mHEX(false);
596 				mHEX(false);
597 				}
598 			}
599 			catch (RecognitionException pe) {
600 				synPredMatched32 = false;
601 			}
602 			rewind(_m32);
603 inputState.guessing--;
604 		}
605 		if ( synPredMatched32 ) {
606 			mHEXPAIR(false);
607 			if ( inputState.guessing==0 ) {
608 				_ttype = HEXPAIR;
609 			}
610 		}
611 		else if ((LA(1)=='\\') && (LA(2)=='\\')) {
612 			mESCESC(false);
613 			if ( inputState.guessing==0 ) {
614 				_ttype = ESCESC;
615 			}
616 		}
617 		else if ((LA(1)=='\\') && (LA(2)=='#')) {
618 			mESCSHARP(false);
619 			if ( inputState.guessing==0 ) {
620 				_ttype = ESCSHARP;
621 			}
622 		}
623 		else if ((LA(1)=='\\') && (true)) {
624 			mESC(false);
625 			if ( inputState.guessing==0 ) {
626 				_ttype = ESC;
627 			}
628 		}
629 		else {
630 			throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());
631 		}
632 		
633 		if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
634 			_token = makeToken(_ttype);
635 			_token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
636 		}
637 		_returnToken = _token;
638 	}
639 	
640 	protected final void mESC(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
641 		int _ttype; Token _token=null; int _begin=text.length();
642 		_ttype = ESC;
643 		int _saveIndex;
644 		
645 		match('\\');
646 		if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
647 			_token = makeToken(_ttype);
648 			_token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
649 		}
650 		_returnToken = _token;
651 	}
652 	
653 	protected final void mHEX(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
654 		int _ttype; Token _token=null; int _begin=text.length();
655 		_ttype = HEX;
656 		int _saveIndex;
657 		
658 		switch ( LA(1)) {
659 		case '0':  case '1':  case '2':  case '3':
660 		case '4':  case '5':  case '6':  case '7':
661 		case '8':  case '9':
662 		{
663 			mDIGIT(false);
664 			break;
665 		}
666 		case 'a':  case 'b':  case 'c':  case 'd':
667 		case 'e':  case 'f':
668 		{
669 			matchRange('a','f');
670 			break;
671 		}
672 		default:
673 		{
674 			throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());
675 		}
676 		}
677 		if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
678 			_token = makeToken(_ttype);
679 			_token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
680 		}
681 		_returnToken = _token;
682 	}
683 	
684 	protected final void mHEXPAIR(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
685 		int _ttype; Token _token=null; int _begin=text.length();
686 		_ttype = HEXPAIR;
687 		int _saveIndex;
688 		
689 		_saveIndex=text.length();
690 		mESC(false);
691 		text.setLength(_saveIndex);
692 		mHEX(false);
693 		mHEX(false);
694 		if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
695 			_token = makeToken(_ttype);
696 			_token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
697 		}
698 		_returnToken = _token;
699 	}
700 	
701 	protected final void mESCESC(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
702 		int _ttype; Token _token=null; int _begin=text.length();
703 		_ttype = ESCESC;
704 		int _saveIndex;
705 		
706 		mESC(false);
707 		mESC(false);
708 		if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
709 			_token = makeToken(_ttype);
710 			_token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
711 		}
712 		_returnToken = _token;
713 	}
714 	
715 	protected final void mESCSHARP(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
716 		int _ttype; Token _token=null; int _begin=text.length();
717 		_ttype = ESCSHARP;
718 		int _saveIndex;
719 		
720 		mESC(false);
721 		mSHARP(false);
722 		if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
723 			_token = makeToken(_ttype);
724 			_token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
725 		}
726 		_returnToken = _token;
727 	}
728 	
729 	protected final void mSHARP(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
730 		int _ttype; Token _token=null; int _begin=text.length();
731 		_ttype = SHARP;
732 		int _saveIndex;
733 		
734 		match('#');
735 		if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
736 			_token = makeToken(_ttype);
737 			_token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
738 		}
739 		_returnToken = _token;
740 	}
741 	
742 	public final void mHEXVALUE_OR_SHARP(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
743 		int _ttype; Token _token=null; int _begin=text.length();
744 		_ttype = HEXVALUE_OR_SHARP;
745 		int _saveIndex;
746 		
747 		boolean synPredMatched42 = false;
748 		if (((LA(1)=='#') && (_tokenSet_2.member(LA(2))))) {
749 			int _m42 = mark();
750 			synPredMatched42 = true;
751 			inputState.guessing++;
752 			try {
753 				{
754 				mSHARP(false);
755 				{
756 				int _cnt41=0;
757 				_loop41:
758 				do {
759 					if ((_tokenSet_2.member(LA(1)))) {
760 						mHEX(false);
761 						mHEX(false);
762 					}
763 					else {
764 						if ( _cnt41>=1 ) { break _loop41; } else {throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());}
765 					}
766 					
767 					_cnt41++;
768 				} while (true);
769 				}
770 				}
771 			}
772 			catch (RecognitionException pe) {
773 				synPredMatched42 = false;
774 			}
775 			rewind(_m42);
776 inputState.guessing--;
777 		}
778 		if ( synPredMatched42 ) {
779 			mHEXVALUE(false);
780 			if ( inputState.guessing==0 ) {
781 				_ttype = HEXVALUE;
782 			}
783 		}
784 		else if ((LA(1)=='#') && (true)) {
785 			mSHARP(false);
786 			if ( inputState.guessing==0 ) {
787 				_ttype = SHARP;
788 			}
789 		}
790 		else {
791 			throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());
792 		}
793 		
794 		if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
795 			_token = makeToken(_ttype);
796 			_token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
797 		}
798 		_returnToken = _token;
799 	}
800 	
801 	protected final void mHEXVALUE(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
802 		int _ttype; Token _token=null; int _begin=text.length();
803 		_ttype = HEXVALUE;
804 		int _saveIndex;
805 		
806 		_saveIndex=text.length();
807 		mSHARP(false);
808 		text.setLength(_saveIndex);
809 		{
810 		int _cnt45=0;
811 		_loop45:
812 		do {
813 			if ((_tokenSet_2.member(LA(1)))) {
814 				mHEX(false);
815 				mHEX(false);
816 			}
817 			else {
818 				if ( _cnt45>=1 ) { break _loop45; } else {throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());}
819 			}
820 			
821 			_cnt45++;
822 		} while (true);
823 		}
824 		if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
825 			_token = makeToken(_ttype);
826 			_token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
827 		}
828 		_returnToken = _token;
829 	}
830 	
831 	public final void mUTFMB(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
832 		int _ttype; Token _token=null; int _begin=text.length();
833 		_ttype = UTFMB;
834 		int _saveIndex;
835 		
836 		matchRange('\u0080','\uFFFE');
837 		if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
838 			_token = makeToken(_ttype);
839 			_token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
840 		}
841 		_returnToken = _token;
842 	}
843 	
844 /**
845  * RFC 4514, Section 3:
846  * LUTF1 = %x01-1F / %x21 / %x24-2A / %x2D-3A /
847  *    %x3D / %x3F-5B / %x5D-7F
848  *
849  * To avoid nondeterminism the following 
850  * rules are excluded. These rules are 
851  * explicitly added in the productions.
852  *   EQUALS (0x3D)
853  *   HYPHEN (0x2D)
854  *   UNDERSCORE (0x5F)
855  *   DIGIT (0x30-0x39)
856  *   ALPHA (0x41-0x5A and 0x61-0x7A)
857  */
858 	public final void mLUTF1_REST(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
859 		int _ttype; Token _token=null; int _begin=text.length();
860 		_ttype = LUTF1_REST;
861 		int _saveIndex;
862 		
863 		switch ( LA(1)) {
864 		case '\u0001':  case '\u0002':  case '\u0003':  case '\u0004':
865 		case '\u0005':  case '\u0006':  case '\u0007':  case '\u0008':
866 		case '\t':  case '\n':  case '\u000b':  case '\u000c':
867 		case '\r':  case '\u000e':  case '\u000f':  case '\u0010':
868 		case '\u0011':  case '\u0012':  case '\u0013':  case '\u0014':
869 		case '\u0015':  case '\u0016':  case '\u0017':  case '\u0018':
870 		case '\u0019':  case '\u001a':  case '\u001b':  case '\u001c':
871 		case '\u001d':  case '\u001e':  case '\u001f':
872 		{
873 			matchRange('\u0001','\u001F');
874 			break;
875 		}
876 		case '!':
877 		{
878 			match('\u0021');
879 			break;
880 		}
881 		case '$':  case '%':  case '&':  case '\'':
882 		case '(':  case ')':  case '*':
883 		{
884 			matchRange('\u0024','\u002A');
885 			break;
886 		}
887 		case '.':  case '/':
888 		{
889 			matchRange('\u002E','\u002F');
890 			break;
891 		}
892 		case ':':
893 		{
894 			match('\u003A');
895 			break;
896 		}
897 		case '?':  case '@':
898 		{
899 			matchRange('\u003F','\u0040');
900 			break;
901 		}
902 		case '[':
903 		{
904 			match('\u005B');
905 			break;
906 		}
907 		case ']':  case '^':
908 		{
909 			matchRange('\u005D','\u005E');
910 			break;
911 		}
912 		case '`':
913 		{
914 			match('\u0060');
915 			break;
916 		}
917 		case '{':  case '|':  case '}':  case '~':
918 		case '\u007f':
919 		{
920 			matchRange('\u007B','\u007F');
921 			break;
922 		}
923 		default:
924 		{
925 			throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());
926 		}
927 		}
928 		if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
929 			_token = makeToken(_ttype);
930 			_token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
931 		}
932 		_returnToken = _token;
933 	}
934 	
935 	
936 	private static final long[] mk_tokenSet_0() {
937 		long[] data = new long[1025];
938 		data[0]=287948901175001088L;
939 		data[1]=140737488355328L;
940 		return data;
941 	}
942 	public static final BitSet _tokenSet_0 = new BitSet(mk_tokenSet_0());
943 	private static final long[] mk_tokenSet_1() {
944 		long[] data = new long[1025];
945 		data[0]=288019269919178752L;
946 		data[1]=2199023255552L;
947 		return data;
948 	}
949 	public static final BitSet _tokenSet_1 = new BitSet(mk_tokenSet_1());
950 	private static final long[] mk_tokenSet_2() {
951 		long[] data = new long[1025];
952 		data[0]=287948901175001088L;
953 		data[1]=541165879296L;
954 		return data;
955 	}
956 	public static final BitSet _tokenSet_2 = new BitSet(mk_tokenSet_2());
957 	
958 	}