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.aci;
25
26
27 import java.util.List;
28 import java.util.ArrayList;
29 import java.util.HashSet;
30 import java.util.Map;
31 import java.util.Set;
32 import java.util.Enumeration;
33
34 import org.apache.directory.api.i18n.I18n;
35 import org.apache.directory.api.ldap.model.filter.BranchNode;
36 import org.apache.directory.api.ldap.model.filter.AndNode;
37 import org.apache.directory.api.ldap.model.filter.OrNode;
38 import org.apache.directory.api.ldap.model.filter.NotNode;
39 import org.apache.directory.api.ldap.model.filter.ExprNode;
40 import org.apache.directory.api.ldap.model.filter.LeafNode;
41 import org.apache.directory.api.ldap.model.filter.EqualityNode;
42 import org.apache.directory.api.ldap.model.filter.FilterParser;
43 import org.apache.directory.api.ldap.model.schema.normalizers.NameComponentNormalizer;
44 import org.apache.directory.api.ldap.model.schema.Normalizer;
45 import org.apache.directory.api.ldap.model.subtree.SubtreeSpecification;
46 import org.apache.directory.api.ldap.model.subtree.SubtreeSpecificationModifier;
47 import org.apache.directory.api.util.ComponentsMonitor;
48 import org.apache.directory.api.util.MandatoryAndOptionalComponentsMonitor;
49 import org.apache.directory.api.util.MandatoryComponentsMonitor;
50 import org.apache.directory.api.ldap.model.name.DnUtils;
51 import org.apache.directory.api.util.NoDuplicateKeysMap;
52 import org.apache.directory.api.util.OptionalComponentsMonitor;
53 import org.apache.directory.api.ldap.model.name.Dn;
54 import org.apache.directory.api.ldap.model.name.Rdn;
55 import org.apache.directory.api.ldap.model.schema.AttributeType;
56 import org.apache.directory.api.ldap.model.schema.SchemaManager;
57 import org.apache.directory.api.ldap.model.constants.SchemaConstants;
58 import org.apache.directory.api.ldap.model.constants.AuthenticationLevel;
59 import org.apache.directory.api.ldap.model.entry.Value;
60 import org.apache.directory.api.ldap.model.entry.Attribute;
61 import org.apache.directory.api.ldap.model.entry.DefaultAttribute;
62 import org.apache.directory.api.ldap.model.exception.LdapException;
63 import org.apache.directory.api.ldap.aci.protectedItem.AllAttributeValuesItem;
64 import org.apache.directory.api.ldap.aci.protectedItem.AttributeTypeItem;
65 import org.apache.directory.api.ldap.aci.protectedItem.AttributeValueItem;
66 import org.apache.directory.api.ldap.aci.protectedItem.SelfValueItem;
67 import org.apache.directory.api.ldap.aci.protectedItem.ClassesItem;
68 import org.apache.directory.api.ldap.aci.protectedItem.EntryItem;
69 import org.apache.directory.api.ldap.aci.protectedItem.RangeOfValuesItem;
70 import org.apache.directory.api.ldap.aci.protectedItem.MaxImmSubItem;
71 import org.apache.directory.api.ldap.aci.protectedItem.MaxValueCountElem;
72 import org.apache.directory.api.ldap.aci.protectedItem.MaxValueCountItem;
73 import org.apache.directory.api.ldap.aci.protectedItem.RestrictedByElem;
74 import org.apache.directory.api.ldap.aci.protectedItem.RestrictedByItem;
75 import org.slf4j.Logger;
76 import org.slf4j.LoggerFactory;
77
78
79 import java.io.InputStream;
80 import antlr.TokenStreamException;
81 import antlr.TokenStreamIOException;
82 import antlr.TokenStreamRecognitionException;
83 import antlr.CharStreamException;
84 import antlr.CharStreamIOException;
85 import antlr.ANTLRException;
86 import java.io.Reader;
87 import java.util.Hashtable;
88 import antlr.CharScanner;
89 import antlr.InputBuffer;
90 import antlr.ByteBuffer;
91 import antlr.CharBuffer;
92 import antlr.Token;
93 import antlr.CommonToken;
94 import antlr.RecognitionException;
95 import antlr.NoViableAltForCharException;
96 import antlr.MismatchedCharException;
97 import antlr.TokenStream;
98 import antlr.ANTLRHashString;
99 import antlr.LexerSharedInputState;
100 import antlr.collections.impl.BitSet;
101 import antlr.SemanticException;
102
103
104
105
106
107
108 public class AntlrACIItemLexer extends antlr.CharScanner implements AntlrACIItemParserTokenTypes, TokenStream
109 {
110
111 private static final Logger LOG = LoggerFactory.getLogger( AntlrACIItemLexer.class );
112 public AntlrACIItemLexer(InputStream in) {
113 this(new ByteBuffer(in));
114 }
115 public AntlrACIItemLexer(Reader in) {
116 this(new CharBuffer(in));
117 }
118 public AntlrACIItemLexer(InputBuffer ib) {
119 this(new LexerSharedInputState(ib));
120 }
121 public AntlrACIItemLexer(LexerSharedInputState state) {
122 super(state);
123 caseSensitiveLiterals = true;
124 setCaseSensitive(true);
125 literals = new Hashtable();
126 literals.put(new ANTLRHashString("type", this), new Integer(30));
127 literals.put(new ANTLRHashString("strong", this), new Integer(17));
128 literals.put(new ANTLRHashString("name", this), new Integer(68));
129 literals.put(new ANTLRHashString("specificExclusions", this), new Integer(73));
130 literals.put(new ANTLRHashString("denyBrowse", this), new Integer(47));
131 literals.put(new ANTLRHashString("denyModify", this), new Integer(53));
132 literals.put(new ANTLRHashString("denyCompare", this), new Integer(59));
133 literals.put(new ANTLRHashString("classes", this), new Integer(35));
134 literals.put(new ANTLRHashString("denyAdd", this), new Integer(39));
135 literals.put(new ANTLRHashString("maximum", this), new Integer(77));
136 literals.put(new ANTLRHashString("grantInvoke", this), new Integer(62));
137 literals.put(new ANTLRHashString("denyDiscloseOnError", this), new Integer(41));
138 literals.put(new ANTLRHashString("rangeOfValues", this), new Integer(90));
139 literals.put(new ANTLRHashString("maxCount", this), new Integer(31));
140 literals.put(new ANTLRHashString("userClasses", this), new Integer(64));
141 literals.put(new ANTLRHashString("denyInvoke", this), new Integer(63));
142 literals.put(new ANTLRHashString("and", this), new Integer(81));
143 literals.put(new ANTLRHashString("denyRead", this), new Integer(43));
144 literals.put(new ANTLRHashString("not", this), new Integer(83));
145 literals.put(new ANTLRHashString("grantReturnDN", this), new Integer(56));
146 literals.put(new ANTLRHashString("maxImmSub", this), new Integer(32));
147 literals.put(new ANTLRHashString("grantCompare", this), new Integer(58));
148 literals.put(new ANTLRHashString("parentOfEntry", this), new Integer(67));
149 literals.put(new ANTLRHashString("precedence", this), new Integer(12));
150 literals.put(new ANTLRHashString("base", this), new Integer(72));
151 literals.put(new ANTLRHashString("minimum", this), new Integer(76));
152 literals.put(new ANTLRHashString("grantsAndDenials", this), new Integer(37));
153 literals.put(new ANTLRHashString("itemOrUserFirst", this), new Integer(18));
154 literals.put(new ANTLRHashString("entry", this), new Integer(23));
155 literals.put(new ANTLRHashString("FALSE", this), new Integer(84));
156 literals.put(new ANTLRHashString("selfValue", this), new Integer(28));
157 literals.put(new ANTLRHashString("specificationFilter", this), new Integer(91));
158 literals.put(new ANTLRHashString("itemPermissions", this), new Integer(36));
159 literals.put(new ANTLRHashString("grantRemove", this), new Integer(44));
160 literals.put(new ANTLRHashString("or", this), new Integer(82));
161 literals.put(new ANTLRHashString("allAttributeValues", this), new Integer(26));
162 literals.put(new ANTLRHashString("none", this), new Integer(15));
163 literals.put(new ANTLRHashString("attributeType", this), new Integer(25));
164 literals.put(new ANTLRHashString("chopAfter", this), new Integer(75));
165 literals.put(new ANTLRHashString("subtree", this), new Integer(70));
166 literals.put(new ANTLRHashString("denyRemove", this), new Integer(45));
167 literals.put(new ANTLRHashString("userFirst", this), new Integer(21));
168 literals.put(new ANTLRHashString("grantAdd", this), new Integer(38));
169 literals.put(new ANTLRHashString("grantFilterMatch", this), new Integer(60));
170 literals.put(new ANTLRHashString("allUserAttributeTypesAndValues", this), new Integer(27));
171 literals.put(new ANTLRHashString("maxValueCount", this), new Integer(29));
172 literals.put(new ANTLRHashString("grantExport", this), new Integer(48));
173 literals.put(new ANTLRHashString("basicLevels", this), new Integer(87));
174 literals.put(new ANTLRHashString("denyFilterMatch", this), new Integer(61));
175 literals.put(new ANTLRHashString("protectedItems", this), new Integer(22));
176 literals.put(new ANTLRHashString("identificationTag", this), new Integer(10));
177 literals.put(new ANTLRHashString("grantRename", this), new Integer(54));
178 literals.put(new ANTLRHashString("grantImport", this), new Integer(50));
179 literals.put(new ANTLRHashString("localQualifier", this), new Integer(88));
180 literals.put(new ANTLRHashString("userPermissions", this), new Integer(71));
181 literals.put(new ANTLRHashString("grantRead", this), new Integer(42));
182 literals.put(new ANTLRHashString("denyExport", this), new Integer(49));
183 literals.put(new ANTLRHashString("denyRename", this), new Integer(55));
184 literals.put(new ANTLRHashString("itemFirst", this), new Integer(19));
185 literals.put(new ANTLRHashString("denyImport", this), new Integer(51));
186 literals.put(new ANTLRHashString("restrictedBy", this), new Integer(33));
187 literals.put(new ANTLRHashString("chopBefore", this), new Integer(74));
188 literals.put(new ANTLRHashString("signed", this), new Integer(89));
189 literals.put(new ANTLRHashString("grantDiscloseOnError", this), new Integer(40));
190 literals.put(new ANTLRHashString("level", this), new Integer(86));
191 literals.put(new ANTLRHashString("allUserAttributeTypes", this), new Integer(24));
192 literals.put(new ANTLRHashString("TRUE", this), new Integer(85));
193 literals.put(new ANTLRHashString("authenticationLevel", this), new Integer(14));
194 literals.put(new ANTLRHashString("denyReturnDN", this), new Integer(57));
195 literals.put(new ANTLRHashString("grantBrowse", this), new Integer(46));
196 literals.put(new ANTLRHashString("thisEntry", this), new Integer(66));
197 literals.put(new ANTLRHashString("grantModify", this), new Integer(52));
198 literals.put(new ANTLRHashString("allUsers", this), new Integer(65));
199 literals.put(new ANTLRHashString("item", this), new Integer(80));
200 literals.put(new ANTLRHashString("userGroup", this), new Integer(69));
201 literals.put(new ANTLRHashString("simple", this), new Integer(16));
202 literals.put(new ANTLRHashString("valuesIn", this), new Integer(34));
203 }
204
205 public Token nextToken() throws TokenStreamException {
206 Token theRetToken=null;
207 tryAgain:
208 for (;;) {
209 Token _token = null;
210 int _ttype = Token.INVALID_TYPE;
211 resetText();
212 try {
213 try {
214 switch ( LA(1)) {
215 case '{':
216 {
217 mOPEN_CURLY(true);
218 theRetToken=_returnToken;
219 break;
220 }
221 case '}':
222 {
223 mCLOSE_CURLY(true);
224 theRetToken=_returnToken;
225 break;
226 }
227 case ',':
228 {
229 mSEP(true);
230 theRetToken=_returnToken;
231 break;
232 }
233 case '\t': case '\n': case '\r': case ' ':
234 {
235 mSP(true);
236 theRetToken=_returnToken;
237 break;
238 }
239 case ':':
240 {
241 mCOLON(true);
242 theRetToken=_returnToken;
243 break;
244 }
245 case '0': case '1': case '2': case '3':
246 case '4': case '5': case '6': case '7':
247 case '8': case '9':
248 {
249 mINTEGER_OR_NUMERICOID(true);
250 theRetToken=_returnToken;
251 break;
252 }
253 case '"':
254 {
255 mSAFEUTF8STRING(true);
256 theRetToken=_returnToken;
257 break;
258 }
259 case 'A': case 'B': case 'C': case 'D':
260 case 'E': case 'F': case 'G': case 'H':
261 case 'I': case 'J': case 'K': case 'L':
262 case 'M': case 'N': case 'O': case 'P':
263 case 'Q': case 'R': case 'S': case 'T':
264 case 'U': case 'V': case 'W': case 'X':
265 case 'Y': case 'Z': case 'a': case 'b':
266 case 'c': case 'd': case 'e': case 'f':
267 case 'g': case 'h': case 'i': case 'j':
268 case 'k': case 'l': case 'm': case 'n':
269 case 'o': case 'p': case 'q': case 'r':
270 case 's': case 't': case 'u': case 'v':
271 case 'w': case 'x': case 'y': case 'z':
272 {
273 mDESCR(true);
274 theRetToken=_returnToken;
275 break;
276 }
277 default:
278 {
279 if (LA(1)==EOF_CHAR) {uponEOF(); _returnToken = makeToken(Token.EOF_TYPE);}
280 else {throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());}
281 }
282 }
283 if ( _returnToken==null ) continue tryAgain;
284 _ttype = _returnToken.getType();
285 _ttype = testLiteralsTable(_ttype);
286 _returnToken.setType(_ttype);
287 return _returnToken;
288 }
289 catch (RecognitionException e) {
290 throw new TokenStreamRecognitionException(e);
291 }
292 }
293 catch (CharStreamException cse) {
294 if ( cse instanceof CharStreamIOException ) {
295 throw new TokenStreamIOException(((CharStreamIOException)cse).io);
296 }
297 else {
298 throw new TokenStreamException(cse.getMessage());
299 }
300 }
301 }
302 }
303
304 protected final void mSAFEUTF8CHAR(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
305 int _ttype; Token _token=null; int _begin=text.length();
306 _ttype = SAFEUTF8CHAR;
307 int _saveIndex;
308
309 switch ( LA(1)) {
310 case '\u0001': case '\u0002': case '\u0003': case '\u0004':
311 case '\u0005': case '\u0006': case '\u0007': case '\u0008':
312 case '\t': case '\n': case '\u000b': case '\u000c':
313 case '\r': case '\u000e': case '\u000f': case '\u0010':
314 case '\u0011': case '\u0012': case '\u0013': case '\u0014':
315 case '\u0015': case '\u0016': case '\u0017': case '\u0018':
316 case '\u0019': case '\u001a': case '\u001b': case '\u001c':
317 case '\u001d': case '\u001e': case '\u001f': case ' ':
318 case '!':
319 {
320 matchRange('\u0001','\u0021');
321 break;
322 }
323 case '#': case '$': case '%': case '&':
324 case '\'': case '(': case ')': case '*':
325 case '+': case ',': case '-': case '.':
326 case '/': case '0': case '1': case '2':
327 case '3': case '4': case '5': case '6':
328 case '7': case '8': case '9': case ':':
329 case ';': case '<': case '=': case '>':
330 case '?': case '@': case 'A': case 'B':
331 case 'C': case 'D': case 'E': case 'F':
332 case 'G': case 'H': case 'I': case 'J':
333 case 'K': case 'L': case 'M': case 'N':
334 case 'O': case 'P': case 'Q': case 'R':
335 case 'S': case 'T': case 'U': case 'V':
336 case 'W': case 'X': case 'Y': case 'Z':
337 case '[': case '\\': case ']': case '^':
338 case '_': case '`': case 'a': case 'b':
339 case 'c': case 'd': case 'e': case 'f':
340 case 'g': case 'h': case 'i': case 'j':
341 case 'k': case 'l': case 'm': case 'n':
342 case 'o': case 'p': case 'q': case 'r':
343 case 's': case 't': case 'u': case 'v':
344 case 'w': case 'x': case 'y': case 'z':
345 case '{': case '|': case '}': case '~':
346 case '\u007f':
347 {
348 matchRange('\u0023','\u007F');
349 break;
350 }
351 case '\u00c0': case '\u00c1': case '\u00c2': case '\u00c3':
352 case '\u00c4': case '\u00c5': case '\u00c6': case '\u00c7':
353 case '\u00c8': case '\u00c9': case '\u00ca': case '\u00cb':
354 case '\u00cc': case '\u00cd': case '\u00ce': case '\u00cf':
355 case '\u00d0': case '\u00d1': case '\u00d2': case '\u00d3':
356 case '\u00d4': case '\u00d5': case '\u00d6':
357 {
358 matchRange('\u00c0','\u00d6');
359 break;
360 }
361 case '\u00d8': case '\u00d9': case '\u00da': case '\u00db':
362 case '\u00dc': case '\u00dd': case '\u00de': case '\u00df':
363 case '\u00e0': case '\u00e1': case '\u00e2': case '\u00e3':
364 case '\u00e4': case '\u00e5': case '\u00e6': case '\u00e7':
365 case '\u00e8': case '\u00e9': case '\u00ea': case '\u00eb':
366 case '\u00ec': case '\u00ed': case '\u00ee': case '\u00ef':
367 case '\u00f0': case '\u00f1': case '\u00f2': case '\u00f3':
368 case '\u00f4': case '\u00f5': case '\u00f6':
369 {
370 matchRange('\u00d8','\u00f6');
371 break;
372 }
373 case '\u00f8': case '\u00f9': case '\u00fa': case '\u00fb':
374 case '\u00fc': case '\u00fd': case '\u00fe': case '\u00ff':
375 {
376 matchRange('\u00f8','\u00ff');
377 break;
378 }
379 default:
380 if (((LA(1) >= '\u0100' && LA(1) <= '\u1fff'))) {
381 matchRange('\u0100','\u1fff');
382 }
383 else if (((LA(1) >= '\u3040' && LA(1) <= '\u318f'))) {
384 matchRange('\u3040','\u318f');
385 }
386 else if (((LA(1) >= '\u3300' && LA(1) <= '\u337f'))) {
387 matchRange('\u3300','\u337f');
388 }
389 else if (((LA(1) >= '\u3400' && LA(1) <= '\u3d2d'))) {
390 matchRange('\u3400','\u3d2d');
391 }
392 else if (((LA(1) >= '\u4e00' && LA(1) <= '\u9fff'))) {
393 matchRange('\u4e00','\u9fff');
394 }
395 else if (((LA(1) >= '\uf900' && LA(1) <= '\ufaff'))) {
396 matchRange('\uf900','\ufaff');
397 }
398 else {
399 throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());
400 }
401 }
402 if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
403 _token = makeToken(_ttype);
404 _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
405 }
406 _returnToken = _token;
407 }
408
409 public final void mOPEN_CURLY(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
410 int _ttype; Token _token=null; int _begin=text.length();
411 _ttype = OPEN_CURLY;
412 int _saveIndex;
413
414 match('{');
415 if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
416 _token = makeToken(_ttype);
417 _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
418 }
419 _returnToken = _token;
420 }
421
422 public final void mCLOSE_CURLY(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
423 int _ttype; Token _token=null; int _begin=text.length();
424 _ttype = CLOSE_CURLY;
425 int _saveIndex;
426
427 match('}');
428 if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
429 _token = makeToken(_ttype);
430 _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
431 }
432 _returnToken = _token;
433 }
434
435 public final void mSEP(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
436 int _ttype; Token _token=null; int _begin=text.length();
437 _ttype = SEP;
438 int _saveIndex;
439
440 match(',');
441 if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
442 _token = makeToken(_ttype);
443 _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
444 }
445 _returnToken = _token;
446 }
447
448 public final void mSP(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
449 int _ttype; Token _token=null; int _begin=text.length();
450 _ttype = SP;
451 int _saveIndex;
452
453 switch ( LA(1)) {
454 case ' ':
455 {
456 match(' ');
457 break;
458 }
459 case '\t':
460 {
461 match('\t');
462 break;
463 }
464 case '\n':
465 {
466 match('\n');
467 if ( inputState.guessing==0 ) {
468 newline();
469 }
470 break;
471 }
472 case '\r':
473 {
474 match('\r');
475 break;
476 }
477 default:
478 {
479 throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());
480 }
481 }
482 if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
483 _token = makeToken(_ttype);
484 _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
485 }
486 _returnToken = _token;
487 }
488
489 public final void mCOLON(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
490 int _ttype; Token _token=null; int _begin=text.length();
491 _ttype = COLON;
492 int _saveIndex;
493
494 match(':');
495 if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
496 _token = makeToken(_ttype);
497 _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
498 }
499 _returnToken = _token;
500 }
501
502 protected final void mDIGIT(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
503 int _ttype; Token _token=null; int _begin=text.length();
504 _ttype = DIGIT;
505 int _saveIndex;
506
507 switch ( LA(1)) {
508 case '0':
509 {
510 match('0');
511 break;
512 }
513 case '1': case '2': case '3': case '4':
514 case '5': case '6': case '7': case '8':
515 case '9':
516 {
517 mLDIGIT(false);
518 break;
519 }
520 default:
521 {
522 throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());
523 }
524 }
525 if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
526 _token = makeToken(_ttype);
527 _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
528 }
529 _returnToken = _token;
530 }
531
532 protected final void mLDIGIT(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
533 int _ttype; Token _token=null; int _begin=text.length();
534 _ttype = LDIGIT;
535 int _saveIndex;
536
537 matchRange('1','9');
538 if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
539 _token = makeToken(_ttype);
540 _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
541 }
542 _returnToken = _token;
543 }
544
545 protected final void mALPHA(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
546 int _ttype; Token _token=null; int _begin=text.length();
547 _ttype = ALPHA;
548 int _saveIndex;
549
550 switch ( LA(1)) {
551 case 'A': case 'B': case 'C': case 'D':
552 case 'E': case 'F': case 'G': case 'H':
553 case 'I': case 'J': case 'K': case 'L':
554 case 'M': case 'N': case 'O': case 'P':
555 case 'Q': case 'R': case 'S': case 'T':
556 case 'U': case 'V': case 'W': case 'X':
557 case 'Y': case 'Z':
558 {
559 matchRange('A','Z');
560 break;
561 }
562 case 'a': case 'b': case 'c': case 'd':
563 case 'e': case 'f': case 'g': case 'h':
564 case 'i': case 'j': case 'k': case 'l':
565 case 'm': case 'n': case 'o': case 'p':
566 case 'q': case 'r': case 's': case 't':
567 case 'u': case 'v': case 'w': case 'x':
568 case 'y': case 'z':
569 {
570 matchRange('a','z');
571 break;
572 }
573 default:
574 {
575 throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());
576 }
577 }
578 if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
579 _token = makeToken(_ttype);
580 _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
581 }
582 _returnToken = _token;
583 }
584
585 protected final void mINTEGER(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
586 int _ttype; Token _token=null; int _begin=text.length();
587 _ttype = INTEGER;
588 int _saveIndex;
589
590 if (((LA(1) >= '1' && LA(1) <= '9')) && ((LA(2) >= '0' && LA(2) <= '9'))) {
591 {
592 mLDIGIT(false);
593 {
594 int _cnt396=0;
595 _loop396:
596 do {
597 if (((LA(1) >= '0' && LA(1) <= '9'))) {
598 mDIGIT(false);
599 }
600 else {
601 if ( _cnt396>=1 ) { break _loop396; } else {throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());}
602 }
603
604 _cnt396++;
605 } while (true);
606 }
607 }
608 }
609 else if (((LA(1) >= '0' && LA(1) <= '9')) && (true)) {
610 mDIGIT(false);
611 }
612 else {
613 throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());
614 }
615
616 if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
617 _token = makeToken(_ttype);
618 _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
619 }
620 _returnToken = _token;
621 }
622
623 protected final void mHYPHEN(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
624 int _ttype; Token _token=null; int _begin=text.length();
625 _ttype = HYPHEN;
626 int _saveIndex;
627
628 match('-');
629 if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
630 _token = makeToken(_ttype);
631 _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
632 }
633 _returnToken = _token;
634 }
635
636 protected final void mNUMERICOID(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
637 int _ttype; Token _token=null; int _begin=text.length();
638 _ttype = NUMERICOID;
639 int _saveIndex;
640
641 mINTEGER(false);
642 {
643 int _cnt400=0;
644 _loop400:
645 do {
646 if ((LA(1)=='.')) {
647 mDOT(false);
648 mINTEGER(false);
649 }
650 else {
651 if ( _cnt400>=1 ) { break _loop400; } else {throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());}
652 }
653
654 _cnt400++;
655 } while (true);
656 }
657 if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
658 _token = makeToken(_ttype);
659 _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
660 }
661 _returnToken = _token;
662 }
663
664 protected final void mDOT(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
665 int _ttype; Token _token=null; int _begin=text.length();
666 _ttype = DOT;
667 int _saveIndex;
668
669 match('.');
670 if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
671 _token = makeToken(_ttype);
672 _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
673 }
674 _returnToken = _token;
675 }
676
677 public final void mINTEGER_OR_NUMERICOID(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
678 int _ttype; Token _token=null; int _begin=text.length();
679 _ttype = INTEGER_OR_NUMERICOID;
680 int _saveIndex;
681
682 boolean synPredMatched404 = false;
683 if ((((LA(1) >= '0' && LA(1) <= '9')) && (_tokenSet_0.member(LA(2))))) {
684 int _m404 = mark();
685 synPredMatched404 = true;
686 inputState.guessing++;
687 try {
688 {
689 mINTEGER(false);
690 mDOT(false);
691 }
692 }
693 catch (RecognitionException pe) {
694 synPredMatched404 = false;
695 }
696 rewind(_m404);
697 inputState.guessing--;
698 }
699 if ( synPredMatched404 ) {
700 mNUMERICOID(false);
701 if ( inputState.guessing==0 ) {
702
703 _ttype = NUMERICOID;
704
705 }
706 }
707 else if (((LA(1) >= '0' && LA(1) <= '9')) && (true)) {
708 mINTEGER(false);
709 if ( inputState.guessing==0 ) {
710
711 _ttype = INTEGER;
712
713 }
714 }
715 else {
716 throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());
717 }
718
719 if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
720 _token = makeToken(_ttype);
721 _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
722 }
723 _returnToken = _token;
724 }
725
726 public final void mSAFEUTF8STRING(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
727 int _ttype; Token _token=null; int _begin=text.length();
728 _ttype = SAFEUTF8STRING;
729 int _saveIndex;
730
731 _saveIndex=text.length();
732 match('"');
733 text.setLength(_saveIndex);
734 {
735 _loop407:
736 do {
737 if ((_tokenSet_1.member(LA(1)))) {
738 mSAFEUTF8CHAR(false);
739 }
740 else {
741 break _loop407;
742 }
743
744 } while (true);
745 }
746 _saveIndex=text.length();
747 match('"');
748 text.setLength(_saveIndex);
749 if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
750 _token = makeToken(_ttype);
751 _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
752 }
753 _returnToken = _token;
754 }
755
756 public final void mDESCR(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
757 int _ttype; Token _token=null; int _begin=text.length();
758 _ttype = DESCR;
759 int _saveIndex;
760
761 boolean synPredMatched412 = false;
762 if (((LA(1)=='a') && (LA(2)=='t'))) {
763 int _m412 = mark();
764 synPredMatched412 = true;
765 inputState.guessing++;
766 try {
767 {
768 match("attributeValue");
769 {
770 int _cnt411=0;
771 _loop411:
772 do {
773 if ((_tokenSet_2.member(LA(1)))) {
774 _saveIndex=text.length();
775 mSP(false);
776 text.setLength(_saveIndex);
777 }
778 else {
779 if ( _cnt411>=1 ) { break _loop411; } else {throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());}
780 }
781
782 _cnt411++;
783 } while (true);
784 }
785 match('{');
786 }
787 }
788 catch (RecognitionException pe) {
789 synPredMatched412 = false;
790 }
791 rewind(_m412);
792 inputState.guessing--;
793 }
794 if ( synPredMatched412 ) {
795 _saveIndex=text.length();
796 match("attributeValue");
797 text.setLength(_saveIndex);
798 {
799 int _cnt414=0;
800 _loop414:
801 do {
802 if ((_tokenSet_2.member(LA(1)))) {
803 _saveIndex=text.length();
804 mSP(false);
805 text.setLength(_saveIndex);
806 }
807 else {
808 if ( _cnt414>=1 ) { break _loop414; } else {throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());}
809 }
810
811 _cnt414++;
812 } while (true);
813 }
814 _saveIndex=text.length();
815 match('{');
816 text.setLength(_saveIndex);
817 {
818 _loop416:
819 do {
820
821 if ((LA(1)=='}') && (true)) break _loop416;
822 if ((_tokenSet_3.member(LA(1))) && (_tokenSet_3.member(LA(2)))) {
823 matchNot(EOF_CHAR);
824 }
825 else {
826 break _loop416;
827 }
828
829 } while (true);
830 }
831 _saveIndex=text.length();
832 match('}');
833 text.setLength(_saveIndex);
834 if ( inputState.guessing==0 ) {
835 _ttype = ATTRIBUTE_VALUE_CANDIDATE;
836 }
837 }
838 else {
839 boolean synPredMatched420 = false;
840 if (((LA(1)=='r') && (LA(2)=='a'))) {
841 int _m420 = mark();
842 synPredMatched420 = true;
843 inputState.guessing++;
844 try {
845 {
846 match("rangeOfValues");
847 {
848 int _cnt419=0;
849 _loop419:
850 do {
851 if ((_tokenSet_2.member(LA(1)))) {
852 _saveIndex=text.length();
853 mSP(false);
854 text.setLength(_saveIndex);
855 }
856 else {
857 if ( _cnt419>=1 ) { break _loop419; } else {throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());}
858 }
859
860 _cnt419++;
861 } while (true);
862 }
863 match('(');
864 }
865 }
866 catch (RecognitionException pe) {
867 synPredMatched420 = false;
868 }
869 rewind(_m420);
870 inputState.guessing--;
871 }
872 if ( synPredMatched420 ) {
873 _saveIndex=text.length();
874 match("rangeOfValues");
875 text.setLength(_saveIndex);
876 {
877 int _cnt422=0;
878 _loop422:
879 do {
880 if ((_tokenSet_2.member(LA(1)))) {
881 _saveIndex=text.length();
882 mSP(false);
883 text.setLength(_saveIndex);
884 }
885 else {
886 if ( _cnt422>=1 ) { break _loop422; } else {throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());}
887 }
888
889 _cnt422++;
890 } while (true);
891 }
892 mFILTER(false);
893 if ( inputState.guessing==0 ) {
894 _ttype = RANGE_OF_VALUES_CANDIDATE;
895 }
896 }
897 else if ((_tokenSet_4.member(LA(1))) && (true)) {
898 mALPHA(false);
899 {
900 _loop424:
901 do {
902 switch ( LA(1)) {
903 case 'A': case 'B': case 'C': case 'D':
904 case 'E': case 'F': case 'G': case 'H':
905 case 'I': case 'J': case 'K': case 'L':
906 case 'M': case 'N': case 'O': case 'P':
907 case 'Q': case 'R': case 'S': case 'T':
908 case 'U': case 'V': case 'W': case 'X':
909 case 'Y': case 'Z': case 'a': case 'b':
910 case 'c': case 'd': case 'e': case 'f':
911 case 'g': case 'h': case 'i': case 'j':
912 case 'k': case 'l': case 'm': case 'n':
913 case 'o': case 'p': case 'q': case 'r':
914 case 's': case 't': case 'u': case 'v':
915 case 'w': case 'x': case 'y': case 'z':
916 {
917 mALPHA(false);
918 break;
919 }
920 case '0': case '1': case '2': case '3':
921 case '4': case '5': case '6': case '7':
922 case '8': case '9':
923 {
924 mDIGIT(false);
925 break;
926 }
927 case '-':
928 {
929 mHYPHEN(false);
930 break;
931 }
932 default:
933 {
934 break _loop424;
935 }
936 }
937 } while (true);
938 }
939 }
940 else {
941 throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());
942 }
943 }
944 if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
945 _token = makeToken(_ttype);
946 _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
947 }
948 _returnToken = _token;
949 }
950
951 protected final void mFILTER(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
952 int _ttype; Token _token=null; int _begin=text.length();
953 _ttype = FILTER;
954 int _saveIndex;
955
956 match('(');
957 {
958 switch ( LA(1)) {
959 case '&':
960 {
961 {
962 match('&');
963 {
964 _loop429:
965 do {
966 if ((_tokenSet_2.member(LA(1)))) {
967 mSP(false);
968 }
969 else {
970 break _loop429;
971 }
972
973 } while (true);
974 }
975 {
976 int _cnt431=0;
977 _loop431:
978 do {
979 if ((LA(1)=='(')) {
980 mFILTER(false);
981 }
982 else {
983 if ( _cnt431>=1 ) { break _loop431; } else {throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());}
984 }
985
986 _cnt431++;
987 } while (true);
988 }
989 }
990 break;
991 }
992 case '|':
993 {
994 {
995 match('|');
996 {
997 _loop434:
998 do {
999 if ((_tokenSet_2.member(LA(1)))) {
1000 mSP(false);
1001 }
1002 else {
1003 break _loop434;
1004 }
1005
1006 } while (true);
1007 }
1008 {
1009 int _cnt436=0;
1010 _loop436:
1011 do {
1012 if ((LA(1)=='(')) {
1013 mFILTER(false);
1014 }
1015 else {
1016 if ( _cnt436>=1 ) { break _loop436; } else {throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());}
1017 }
1018
1019 _cnt436++;
1020 } while (true);
1021 }
1022 }
1023 break;
1024 }
1025 case '!':
1026 {
1027 {
1028 match('!');
1029 {
1030 _loop439:
1031 do {
1032 if ((_tokenSet_2.member(LA(1)))) {
1033 mSP(false);
1034 }
1035 else {
1036 break _loop439;
1037 }
1038
1039 } while (true);
1040 }
1041 mFILTER(false);
1042 }
1043 break;
1044 }
1045 default:
1046 if ((_tokenSet_5.member(LA(1)))) {
1047 mFILTER_VALUE(false);
1048 }
1049 else {
1050 throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());
1051 }
1052 }
1053 }
1054 match(')');
1055 {
1056 _loop441:
1057 do {
1058 if ((_tokenSet_2.member(LA(1)))) {
1059 mSP(false);
1060 }
1061 else {
1062 break _loop441;
1063 }
1064
1065 } while (true);
1066 }
1067 if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
1068 _token = makeToken(_ttype);
1069 _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
1070 }
1071 _returnToken = _token;
1072 }
1073
1074 protected final void mFILTER_VALUE(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {
1075 int _ttype; Token _token=null; int _begin=text.length();
1076 _ttype = FILTER_VALUE;
1077 int _saveIndex;
1078
1079 {
1080 {
1081 match(_tokenSet_5);
1082 }
1083 {
1084 _loop447:
1085 do {
1086 if ((_tokenSet_6.member(LA(1)))) {
1087 {
1088 match(_tokenSet_6);
1089 }
1090 }
1091 else {
1092 break _loop447;
1093 }
1094
1095 } while (true);
1096 }
1097 }
1098 if ( _createToken && _token==null && _ttype!=Token.SKIP ) {
1099 _token = makeToken(_ttype);
1100 _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));
1101 }
1102 _returnToken = _token;
1103 }
1104
1105
1106 private static final long[] mk_tokenSet_0() {
1107 long[] data = new long[1025];
1108 data[0]=288019269919178752L;
1109 return data;
1110 }
1111 public static final BitSet _tokenSet_0 = new BitSet(mk_tokenSet_0());
1112 private static final long[] mk_tokenSet_1() {
1113 long[] data = new long[3988];
1114 data[0]=-17179869186L;
1115 data[1]=-1L;
1116 data[3]=-36028797027352577L;
1117 for (int i = 4; i<=127; i++) { data[i]=-1L; }
1118 for (int i = 193; i<=197; i++) { data[i]=-1L; }
1119 data[198]=65535L;
1120 for (int i = 204; i<=205; i++) { data[i]=-1L; }
1121 for (int i = 208; i<=243; i++) { data[i]=-1L; }
1122 data[244]=70368744177663L;
1123 for (int i = 312; i<=639; i++) { data[i]=-1L; }
1124 for (int i = 996; i<=1003; i++) { data[i]=-1L; }
1125 return data;
1126 }
1127 public static final BitSet _tokenSet_1 = new BitSet(mk_tokenSet_1());
1128 private static final long[] mk_tokenSet_2() {
1129 long[] data = new long[1025];
1130 data[0]=4294977024L;
1131 return data;
1132 }
1133 public static final BitSet _tokenSet_2 = new BitSet(mk_tokenSet_2());
1134 private static final long[] mk_tokenSet_3() {
1135 long[] data = new long[2048];
1136 data[0]=-2L;
1137 for (int i = 1; i<=127; i++) { data[i]=-1L; }
1138 for (int i = 193; i<=197; i++) { data[i]=-1L; }
1139 data[198]=65535L;
1140 for (int i = 204; i<=205; i++) { data[i]=-1L; }
1141 for (int i = 208; i<=243; i++) { data[i]=-1L; }
1142 data[244]=70368744177663L;
1143 for (int i = 312; i<=639; i++) { data[i]=-1L; }
1144 for (int i = 996; i<=1003; i++) { data[i]=-1L; }
1145 return data;
1146 }
1147 public static final BitSet _tokenSet_3 = new BitSet(mk_tokenSet_3());
1148 private static final long[] mk_tokenSet_4() {
1149 long[] data = new long[1025];
1150 data[1]=576460743847706622L;
1151 return data;
1152 }
1153 public static final BitSet _tokenSet_4 = new BitSet(mk_tokenSet_4());
1154 private static final long[] mk_tokenSet_5() {
1155 long[] data = new long[2048];
1156 data[0]=-3582002724866L;
1157 data[1]=-1152921504606846977L;
1158 for (int i = 2; i<=127; i++) { data[i]=-1L; }
1159 for (int i = 193; i<=197; i++) { data[i]=-1L; }
1160 data[198]=65535L;
1161 for (int i = 204; i<=205; i++) { data[i]=-1L; }
1162 for (int i = 208; i<=243; i++) { data[i]=-1L; }
1163 data[244]=70368744177663L;
1164 for (int i = 312; i<=639; i++) { data[i]=-1L; }
1165 for (int i = 996; i<=1003; i++) { data[i]=-1L; }
1166 return data;
1167 }
1168 public static final BitSet _tokenSet_5 = new BitSet(mk_tokenSet_5());
1169 private static final long[] mk_tokenSet_6() {
1170 long[] data = new long[2048];
1171 data[0]=-2199023255554L;
1172 for (int i = 1; i<=127; i++) { data[i]=-1L; }
1173 for (int i = 193; i<=197; i++) { data[i]=-1L; }
1174 data[198]=65535L;
1175 for (int i = 204; i<=205; i++) { data[i]=-1L; }
1176 for (int i = 208; i<=243; i++) { data[i]=-1L; }
1177 data[244]=70368744177663L;
1178 for (int i = 312; i<=639; i++) { data[i]=-1L; }
1179 for (int i = 996; i<=1003; i++) { data[i]=-1L; }
1180 return data;
1181 }
1182 public static final BitSet _tokenSet_6 = new BitSet(mk_tokenSet_6());
1183
1184 }