1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 package org.apache.directory.api.ldap.trigger;
25
26 import java.util.ArrayList;
27 import java.util.List;
28
29 import org.apache.directory.api.i18n.I18n;
30 import org.apache.directory.api.ldap.model.name.Dn;
31 import org.apache.directory.api.ldap.model.schema.NormalizerMappingResolver;
32 import org.apache.directory.api.ldap.trigger.StoredProcedureOption;
33 import org.apache.directory.api.ldap.trigger.StoredProcedureParameter;
34 import org.apache.directory.api.ldap.trigger.TriggerSpecification.SPSpec;
35 import org.apache.directory.api.ldap.model.message.SearchScope;
36
37 import org.slf4j.Logger;
38 import org.slf4j.LoggerFactory;
39
40
41 import java.io.InputStream;
42 import antlr.TokenStreamException;
43 import antlr.TokenStreamIOException;
44 import antlr.TokenStreamRecognitionException;
45 import antlr.CharStreamException;
46 import antlr.CharStreamIOException;
47 import antlr.ANTLRException;
48 import java.io.Reader;
49 import java.util.Hashtable;
50 import antlr.CharScanner;
51 import antlr.InputBuffer;
52 import antlr.ByteBuffer;
53 import antlr.CharBuffer;
54 import antlr.Token;
55 import antlr.CommonToken;
56 import antlr.RecognitionException;
57 import antlr.NoViableAltForCharException;
58 import antlr.MismatchedCharException;
59 import antlr.TokenStream;
60 import antlr.ANTLRHashString;
61 import antlr.LexerSharedInputState;
62 import antlr.collections.impl.BitSet;
63 import antlr.SemanticException;
64
65
66
67
68
69
70 public class AntlrTriggerSpecificationLexer extends antlr.CharScanner implements AntlrTriggerSpecificationParserTokenTypes, TokenStream
71 {
72
73 private static final Logger log = LoggerFactory.getLogger( AntlrTriggerSpecificationLexer.class );
74 public AntlrTriggerSpecificationLexer(InputStream in) {
75 this(new ByteBuffer(in));
76 }
77 public AntlrTriggerSpecificationLexer(Reader in) {
78 this(new CharBuffer(in));
79 }
80 public AntlrTriggerSpecificationLexer(InputBuffer ib) {
81 this(new LexerSharedInputState(ib));
82 }
83 public AntlrTriggerSpecificationLexer(LexerSharedInputState state) {
84 super(state);
85 caseSensitiveLiterals = false;
86 setCaseSensitive(false);
87 literals = new Hashtable();
88 literals.put(new ANTLRHashString("after", this), new Integer(5));
89 literals.put(new ANTLRHashString("scope", this), new Integer(40));
90 literals.put(new ANTLRHashString("rename", this), new Integer(14));
91 literals.put(new ANTLRHashString("$deleteoldrdn", this), new Integer(28));
92 literals.put(new ANTLRHashString("modifydn", this), new Integer(12));
93 literals.put(new ANTLRHashString("call", this), new Integer(17));
94 literals.put(new ANTLRHashString("$entry", this), new Integer(23));
95 literals.put(new ANTLRHashString("base", this), new Integer(41));
96 literals.put(new ANTLRHashString("$newrdn", this), new Integer(27));
97 literals.put(new ANTLRHashString("$modification", this), new Integer(20));
98 literals.put(new ANTLRHashString("$newSuperior", this), new Integer(29));
99 literals.put(new ANTLRHashString("languagescheme", this), new Integer(37));
100 literals.put(new ANTLRHashString("import", this), new Integer(16));
101 literals.put(new ANTLRHashString("subtree", this), new Integer(43));
102 literals.put(new ANTLRHashString("$attributes", this), new Integer(24));
103 literals.put(new ANTLRHashString("$name", this), new Integer(25));
104 literals.put(new ANTLRHashString("one", this), new Integer(42));
105 literals.put(new ANTLRHashString("$ldapcontext", this), new Integer(34));
106 literals.put(new ANTLRHashString("$newentry", this), new Integer(22));
107 literals.put(new ANTLRHashString("$newDn", this), new Integer(32));
108 literals.put(new ANTLRHashString("modify", this), new Integer(6));
109 literals.put(new ANTLRHashString("add", this), new Integer(10));
110 literals.put(new ANTLRHashString("$operationprincipal", this), new Integer(33));
111 literals.put(new ANTLRHashString("searchcontext", this), new Integer(39));
112 literals.put(new ANTLRHashString("$oldentry", this), new Integer(21));
113 literals.put(new ANTLRHashString("$object", this), new Integer(19));
114 literals.put(new ANTLRHashString("export", this), new Integer(15));
115 literals.put(new ANTLRHashString("delete", this), new Integer(11));
116 literals.put(new ANTLRHashString("$deletedentry", this), new Integer(26));
117 literals.put(new ANTLRHashString("$oldSuperiorDn", this), new Integer(31));
118 literals.put(new ANTLRHashString("$oldRdn", this), new Integer(30));
119 }
120
121 public Token nextToken() throws TokenStreamException {
122 Token theRetToken=null;
123 tryAgain:
124 for (;;) {
125 Token _token = null;
126 int _ttype = Token.INVALID_TYPE;
127 resetText();
128 try {
129 try {
130 switch ( LA(1)) {
131 case '(':
132 {
133 mOPEN_PARAN(true);
134 theRetToken=_returnToken;
135 break;
136 }
137 case ')':
138 {
139 mCLOSE_PARAN(true);
140 theRetToken=_returnToken;
141 break;
142 }
143 case '{':
144 {
145 mOPEN_CURLY(true);
146 theRetToken=_returnToken;
147 break;
148 }
149 case '}':
150 {
151 mCLOSE_CURLY(true);
152 theRetToken=_returnToken;
153 break;
154 }
155 case ';':
156 {
157 mSEMI(true);
158 theRetToken=_returnToken;
159 break;
160 }
161 case ',':
162 {
163 mSEP(true);
164 theRetToken=_returnToken;
165 break;
166 }
167 case '\t': case '\n': case '\r': case ' ':
168 {
169 mSP(true);
170 theRetToken=_returnToken;
171 break;
172 }
173 case '.':
174 {
175 mDOT(true);
176 theRetToken=_returnToken;
177 break;
178 }
179 case '"':
180 {
181 mUTF8String(true);
182 theRetToken=_returnToken;
183 break;
184 }
185 case '#':
186 {
187 mCOMMENT(true);
188 theRetToken=_returnToken;
189 break;
190 }
191 case '$': case 'a': case 'b': case 'c':
192 case 'd': case 'e': case 'f': case 'g':
193 case 'h': case 'i': case 'j': case 'k':
194 case 'l': case 'm': case 'n': case 'o':
195 case 'p': case 'q': case 'r': case 's':
196 case 't': case 'u': case 'v': case 'w':
197 case 'x': case 'y': case 'z':
198 {
199 mIDENTIFIER(true);
200 theRetToken=_returnToken;
201 break;
202 }
203 default:
204 {
205 if (LA(1)==EOF_CHAR) {uponEOF(); _returnToken = makeToken(Token.EOF_TYPE);}
206 else {throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());}
207 }
208 }
209 if ( _returnToken==null ) continue tryAgain;
210 _ttype = _returnToken.getType();
211 _ttype = testLiteralsTable(_ttype);
212 _returnToken.setType(_ttype);
213 return _returnToken;
214 }
215 catch (RecognitionException e) {
216 throw new TokenStreamRecognitionException(e);
217 }
218 }
219 catch (CharStreamException cse) {
220 if ( cse instanceof CharStreamIOException ) {
221 throw new TokenStreamIOException(((CharStreamIOException)cse).io);
222 }
223 else {
224 throw new TokenStreamException(cse.getMessage());
225 }
226 }
227 }
228 }
229
230 public final void mOPEN_PARAN(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
231 int _ttype; Token _token=null; int _begin=text.length();
232 _ttype = OPEN_PARAN;
233 int _saveIndex;
234
235 match('(');
236 if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
237 _token = makeToken(_ttype);
238 _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
239 }
240 _returnToken = _token;
241 }
242
243 public final void mCLOSE_PARAN(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
244 int _ttype; Token _token=null; int _begin=text.length();
245 _ttype = CLOSE_PARAN;
246 int _saveIndex;
247
248 match(')');
249 if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
250 _token = makeToken(_ttype);
251 _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
252 }
253 _returnToken = _token;
254 }
255
256 public final void mOPEN_CURLY(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
257 int _ttype; Token _token=null; int _begin=text.length();
258 _ttype = OPEN_CURLY;
259 int _saveIndex;
260
261 match('{');
262 if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
263 _token = makeToken(_ttype);
264 _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
265 }
266 _returnToken = _token;
267 }
268
269 public final void mCLOSE_CURLY(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
270 int _ttype; Token _token=null; int _begin=text.length();
271 _ttype = CLOSE_CURLY;
272 int _saveIndex;
273
274 match('}');
275 if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
276 _token = makeToken(_ttype);
277 _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
278 }
279 _returnToken = _token;
280 }
281
282 public final void mSEMI(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
283 int _ttype; Token _token=null; int _begin=text.length();
284 _ttype = SEMI;
285 int _saveIndex;
286
287 match(';');
288 if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
289 _token = makeToken(_ttype);
290 _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
291 }
292 _returnToken = _token;
293 }
294
295 public final void mSEP(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
296 int _ttype; Token _token=null; int _begin=text.length();
297 _ttype = SEP;
298 int _saveIndex;
299
300 match(',');
301 if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
302 _token = makeToken(_ttype);
303 _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
304 }
305 _returnToken = _token;
306 }
307
308 public final void mSP(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
309 int _ttype; Token _token=null; int _begin=text.length();
310 _ttype = SP;
311 int _saveIndex;
312
313 switch ( LA(1)) {
314 case ' ':
315 {
316 match(' ');
317 break;
318 }
319 case '\t':
320 {
321 match('\t');
322 break;
323 }
324 case '\n':
325 {
326 match('\n');
327 newline();
328 break;
329 }
330 case '\r':
331 {
332 match('\r');
333 {
334 if ((LA(1)=='\n')) {
335 match('\n');
336 }
337 else {
338 }
339
340 }
341 newline();
342 break;
343 }
344 default:
345 {
346 throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());
347 }
348 }
349 if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
350 _token = makeToken(_ttype);
351 _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
352 }
353 _returnToken = _token;
354 }
355
356 public final void mDOT(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
357 int _ttype; Token _token=null; int _begin=text.length();
358 _ttype = DOT;
359 int _saveIndex;
360
361 match('.');
362 if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
363 _token = makeToken(_ttype);
364 _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
365 }
366 _returnToken = _token;
367 }
368
369 public final void mUTF8String(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
370 int _ttype; Token _token=null; int _begin=text.length();
371 _ttype = UTF8String;
372 int _saveIndex;
373
374 _saveIndex=text.length();
375 match('"');
376 text.setLength(_saveIndex);
377 {
378 _loop156:
379 do {
380 if ((_tokenSet_0.member(LA(1)))) {
381 mSAFEUTF8CHAR(false);
382 }
383 else {
384 break _loop156;
385 }
386
387 } while (true);
388 }
389 _saveIndex=text.length();
390 match('"');
391 text.setLength(_saveIndex);
392 if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
393 _token = makeToken(_ttype);
394 _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
395 }
396 _returnToken = _token;
397 }
398
399 protected final void mSAFEUTF8CHAR(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
400 int _ttype; Token _token=null; int _begin=text.length();
401 _ttype = SAFEUTF8CHAR;
402 int _saveIndex;
403
404 switch ( LA(1)) {
405 case '\u0001': case '\u0002': case '\u0003': case '\u0004':
406 case '\u0005': case '\u0006': case '\u0007': case '\u0008':
407 case '\t': case '\n': case '\u000b': case '\u000c':
408 case '\r': case '\u000e': case '\u000f': case '\u0010':
409 case '\u0011': case '\u0012': case '\u0013': case '\u0014':
410 case '\u0015': case '\u0016': case '\u0017': case '\u0018':
411 case '\u0019': case '\u001a': case '\u001b': case '\u001c':
412 case '\u001d': case '\u001e': case '\u001f': case ' ':
413 case '!':
414 {
415 matchRange('\u0001','\u0021');
416 break;
417 }
418 case '#': case '$': case '%': case '&':
419 case '\'': case '(': case ')': case '*':
420 case '+': case ',': case '-': case '.':
421 case '/': case '0': case '1': case '2':
422 case '3': case '4': case '5': case '6':
423 case '7': case '8': case '9': case ':':
424 case ';': case '<': case '=': case '>':
425 case '?': case '@': case 'A': case 'B':
426 case 'C': case 'D': case 'E': case 'F':
427 case 'G': case 'H': case 'I': case 'J':
428 case 'K': case 'L': case 'M': case 'N':
429 case 'O': case 'P': case 'Q': case 'R':
430 case 'S': case 'T': case 'U': case 'V':
431 case 'W': case 'X': case 'Y': case 'Z':
432 case '[': case '\\': case ']': case '^':
433 case '_': case '`': case 'a': case 'b':
434 case 'c': case 'd': case 'e': case 'f':
435 case 'g': case 'h': case 'i': case 'j':
436 case 'k': case 'l': case 'm': case 'n':
437 case 'o': case 'p': case 'q': case 'r':
438 case 's': case 't': case 'u': case 'v':
439 case 'w': case 'x': case 'y': case 'z':
440 case '{': case '|': case '}': case '~':
441 case '\u007f':
442 {
443 matchRange('\u0023','\u007F');
444 break;
445 }
446 case '\u00c0': case '\u00c1': case '\u00c2': case '\u00c3':
447 case '\u00c4': case '\u00c5': case '\u00c6': case '\u00c7':
448 case '\u00c8': case '\u00c9': case '\u00ca': case '\u00cb':
449 case '\u00cc': case '\u00cd': case '\u00ce': case '\u00cf':
450 case '\u00d0': case '\u00d1': case '\u00d2': case '\u00d3':
451 case '\u00d4': case '\u00d5': case '\u00d6':
452 {
453 matchRange('\u00c0','\u00d6');
454 break;
455 }
456 case '\u00d8': case '\u00d9': case '\u00da': case '\u00db':
457 case '\u00dc': case '\u00dd': case '\u00de': case '\u00df':
458 case '\u00e0': case '\u00e1': case '\u00e2': case '\u00e3':
459 case '\u00e4': case '\u00e5': case '\u00e6': case '\u00e7':
460 case '\u00e8': case '\u00e9': case '\u00ea': case '\u00eb':
461 case '\u00ec': case '\u00ed': case '\u00ee': case '\u00ef':
462 case '\u00f0': case '\u00f1': case '\u00f2': case '\u00f3':
463 case '\u00f4': case '\u00f5': case '\u00f6':
464 {
465 matchRange('\u00d8','\u00f6');
466 break;
467 }
468 case '\u00f8': case '\u00f9': case '\u00fa': case '\u00fb':
469 case '\u00fc': case '\u00fd': case '\u00fe': case '\u00ff':
470 {
471 matchRange('\u00f8','\u00ff');
472 break;
473 }
474 default:
475 if (((LA(1) >= '\u0100' && LA(1) <= '\u1fff'))) {
476 matchRange('\u0100','\u1fff');
477 }
478 else if (((LA(1) >= '\u3040' && LA(1) <= '\u318f'))) {
479 matchRange('\u3040','\u318f');
480 }
481 else if (((LA(1) >= '\u3300' && LA(1) <= '\u337f'))) {
482 matchRange('\u3300','\u337f');
483 }
484 else if (((LA(1) >= '\u3400' && LA(1) <= '\u3d2d'))) {
485 matchRange('\u3400','\u3d2d');
486 }
487 else if (((LA(1) >= '\u4e00' && LA(1) <= '\u9fff'))) {
488 matchRange('\u4e00','\u9fff');
489 }
490 else if (((LA(1) >= '\uf900' && LA(1) <= '\ufaff'))) {
491 matchRange('\uf900','\ufaff');
492 }
493 else {
494 throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());
495 }
496 }
497 if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
498 _token = makeToken(_ttype);
499 _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
500 }
501 _returnToken = _token;
502 }
503
504 public final void mCOMMENT(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
505 int _ttype; Token _token=null; int _begin=text.length();
506 _ttype = COMMENT;
507 int _saveIndex;
508
509 match('#');
510 {
511 _loop161:
512 do {
513 if ((_tokenSet_1.member(LA(1)))) {
514 {
515 match(_tokenSet_1);
516 }
517 }
518 else {
519 break _loop161;
520 }
521
522 } while (true);
523 }
524 {
525 if ((LA(1)=='\n'||LA(1)=='\r')) {
526 {
527 switch ( LA(1)) {
528 case '\n':
529 {
530 match('\n');
531 break;
532 }
533 case '\r':
534 {
535 match('\r');
536 {
537 if ((LA(1)=='\n')) {
538 match('\n');
539 }
540 else {
541 }
542
543 }
544 break;
545 }
546 default:
547 {
548 throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());
549 }
550 }
551 }
552 newline();
553 }
554 else {
555 }
556
557 }
558 _ttype = Token.SKIP;
559 if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
560 _token = makeToken(_ttype);
561 _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
562 }
563 _returnToken = _token;
564 }
565
566 public final void mIDENTIFIER(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
567 int _ttype; Token _token=null; int _begin=text.length();
568 _ttype = IDENTIFIER;
569 int _saveIndex;
570
571 mALPHA(false);
572 {
573 _loop167:
574 do {
575 if ((_tokenSet_2.member(LA(1)))) {
576 mALPHA(false);
577 }
578 else {
579 break _loop167;
580 }
581
582 } while (true);
583 }
584 if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
585 _token = makeToken(_ttype);
586 _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
587 }
588 _returnToken = _token;
589 }
590
591 protected final void mALPHA(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
592 int _ttype; Token _token=null; int _begin=text.length();
593 _ttype = ALPHA;
594 int _saveIndex;
595
596 switch ( LA(1)) {
597 case 'a': case 'b': case 'c': case 'd':
598 case 'e': case 'f': case 'g': case 'h':
599 case 'i': case 'j': case 'k': case 'l':
600 case 'm': case 'n': case 'o': case 'p':
601 case 'q': case 'r': case 's': case 't':
602 case 'u': case 'v': case 'w': case 'x':
603 case 'y': case 'z':
604 {
605 matchRange('a','z');
606 break;
607 }
608 case '$':
609 {
610 match('$');
611 break;
612 }
613 default:
614 {
615 throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());
616 }
617 }
618 if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
619 _token = makeToken(_ttype);
620 _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
621 }
622 _returnToken = _token;
623 }
624
625
626 private static final long[] mk_tokenSet_0() {
627 long[] data = new long[3988];
628 data[0]=-17179869186L;
629 data[1]=-1L;
630 data[3]=-36028797027352577L;
631 for (int i = 4; i<=127; i++) { data[i]=-1L; }
632 for (int i = 193; i<=197; i++) { data[i]=-1L; }
633 data[198]=65535L;
634 for (int i = 204; i<=205; i++) { data[i]=-1L; }
635 for (int i = 208; i<=243; i++) { data[i]=-1L; }
636 data[244]=70368744177663L;
637 for (int i = 312; i<=639; i++) { data[i]=-1L; }
638 for (int i = 996; i<=1003; i++) { data[i]=-1L; }
639 return data;
640 }
641 public static final BitSet _tokenSet_0 = new BitSet(mk_tokenSet_0());
642 private static final long[] mk_tokenSet_1() {
643 long[] data = new long[2048];
644 data[0]=-9218L;
645 for (int i = 1; i<=127; i++) { data[i]=-1L; }
646 for (int i = 193; i<=197; i++) { data[i]=-1L; }
647 data[198]=65535L;
648 for (int i = 204; i<=205; i++) { data[i]=-1L; }
649 for (int i = 208; i<=243; i++) { data[i]=-1L; }
650 data[244]=70368744177663L;
651 for (int i = 312; i<=639; i++) { data[i]=-1L; }
652 for (int i = 996; i<=1003; i++) { data[i]=-1L; }
653 return data;
654 }
655 public static final BitSet _tokenSet_1 = new BitSet(mk_tokenSet_1());
656 private static final long[] mk_tokenSet_2() {
657 long[] data = new long[1025];
658 data[0]=68719476736L;
659 data[1]=576460743713488896L;
660 return data;
661 }
662 public static final BitSet _tokenSet_2 = new BitSet(mk_tokenSet_2());
663
664 }