calabash-android 0.4.0.pre10 → 0.4.0.pre11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (24) hide show
  1. data/lib/calabash-android/lib/TestServer.apk +0 -0
  2. data/lib/calabash-android/operations.rb +19 -2
  3. data/lib/calabash-android/steps/list_steps.rb +1 -1
  4. data/lib/calabash-android/steps/time_picker_steps.rb +1 -1
  5. data/lib/calabash-android/version.rb +1 -1
  6. data/test-server/AndroidManifest.xml +2 -0
  7. data/test-server/instrumentation-backend/antlr/UIQuery.g +13 -1
  8. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/CalabashChromeClient.java +1 -6
  9. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/ExecuteJavascript.java +10 -11
  10. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/InvocationOperation.java +26 -5
  11. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/Query.java +6 -2
  12. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/UIQuery.tokens +17 -14
  13. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/antlr/UIQueryLexer.java +727 -236
  14. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/antlr/UIQueryParser.java +212 -78
  15. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/BeginsWithRelation.java +45 -0
  16. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/ComparisonOperator.java +54 -0
  17. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/ContainsRelation.java +41 -0
  18. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/EndsWithRelation.java +42 -0
  19. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/LikeRelation.java +79 -0
  20. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryASTPredicate.java +147 -0
  21. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryASTPredicateRelation.java +5 -0
  22. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryASTWith.java +3 -26
  23. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryUtils.java +50 -9
  24. metadata +9 -2
@@ -112,6 +112,22 @@ module Operations
112
112
  map(uiquery,:query,*converted_args)
113
113
  end
114
114
 
115
+ def each_item(opts={:query => "android.widget.ListView", :post_scroll => 0.2}, &block)
116
+ uiquery = opts[:query] || "android.widget.ListView"
117
+ skip_if = opts[:skip_if] || lambda { |i| false }
118
+ stop_when = opts[:stop_when] || lambda { |i| false }
119
+ check_element_exists(uiquery)
120
+ num_items = query(opts[:query], :adapter, :count).first
121
+ num_items.times do |item|
122
+ next if skip_if.call(item)
123
+ break if stop_when.call(item)
124
+
125
+ scroll_to_row(opts[:query], item)
126
+ sleep(opts[:post_scroll]) if opts[:post_scroll] and opts[:post_scroll] > 0
127
+ yield(item)
128
+ end
129
+ end
130
+
115
131
  def ni
116
132
  raise "Not yet implemented."
117
133
  end
@@ -401,7 +417,7 @@ module Operations
401
417
 
402
418
  if uiquery.instance_of? String
403
419
  elements = query(uiquery, *args)
404
- raise "No elements found" if elements.empty?
420
+ raise "No elements found. Query: #{uiquery}" if elements.empty?
405
421
  element = elements.first
406
422
  else
407
423
  element = uiquery
@@ -452,7 +468,8 @@ module Operations
452
468
  end
453
469
 
454
470
  def scroll_to_row(uiquery,number)
455
- ni
471
+ query(uiquery, {:smoothScrollToPosition => number})
472
+ puts "TODO:detect end of scroll - use sleep for now"
456
473
  end
457
474
 
458
475
  def pinch(in_out,options={})
@@ -26,7 +26,7 @@ Then /^The "([^\"]*)" for row (\d+) should be "([^\"]*)"$/ do | view_id, row, va
26
26
 
27
27
  if( response['children'] )
28
28
  found_id = false
29
- response['children'] each do | view |
29
+ response['children'].each do | view |
30
30
  if( view['id'] == view_id )
31
31
  raise "Text is #{view['text']}, expected #{value}" unless( view['text'] == value )
32
32
  found_id = true
@@ -4,5 +4,5 @@ Given /^I set the time to "(\d\d:\d\d)" on TimePicker with index "([^\"]*)"$/ do
4
4
  end
5
5
 
6
6
  Given /^I set the "([^\"]*)" time to "(\d\d:\d\d)"$/ do |content_description, time|
7
- performAction('set_time_with_description', time, content_description)
7
+ performAction('set_time_with_description', content_description, time)
8
8
  end
@@ -1,5 +1,5 @@
1
1
  module Calabash
2
2
  module Android
3
- VERSION = "0.4.0.pre10"
3
+ VERSION = "0.4.0.pre11"
4
4
  end
5
5
  end
@@ -22,6 +22,8 @@
22
22
 
23
23
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
24
24
  <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
25
+ <uses-permission android:name="android.permission.ACCESS_COURSE_LOCATION"/>
26
+ <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
25
27
  <uses-permission android:name="android.permission.INTERNET" />
26
28
 
27
29
  </manifest>
@@ -35,7 +35,7 @@ query : expr (WHITE! expr)*
35
35
  ;
36
36
 
37
37
 
38
- expr : (className | filter | visibility)
38
+ expr : (className | filter | visibility | predicate)
39
39
  ;
40
40
 
41
41
  className : (WILDCARD^ | NAME^ | QUALIFIED_NAME^);
@@ -56,6 +56,18 @@ filter : NAME FILTER_COLON^ (INT | STRING | BOOL | NIL);
56
56
  FILTER_COLON : ':'
57
57
  ;
58
58
 
59
+ predicate : BEGINPRED^ NAME WHITE! RELATION WHITE! (INT | STRING | BOOL | NIL) ENDPRED!
60
+ ;
61
+ BEGINPRED : '{'
62
+ ;
63
+ ENDPRED : '}'
64
+ ;
65
+
66
+ RELATION : | '=' | '>' | '>=' | '<' | '<=' |
67
+ (( 'BEGINSWITH' | 'ENDSWITH' | 'CONTAINS' | 'LIKE'
68
+ | 'beginswith' | 'endswith' | 'contains' | 'like') ('[' ('a'..'z' | 'A'..'Z')* ']')?)
69
+
70
+ ;
59
71
 
60
72
  INT : '0'..'9'+
61
73
  ;
@@ -57,12 +57,7 @@ public class CalabashChromeClient extends WebChromeClient {
57
57
  r.confirm("CALABASH_ACK");
58
58
  System.out.println("onJsPrompt: " + message);
59
59
  String jsonResponse = message.replaceFirst("calabash:", "");
60
- try {
61
- scriptFuture.setResult(jsonResponse);
62
- } catch (Exception e) {
63
- e.printStackTrace();
64
- scriptFuture.setResult(null);
65
- }
60
+ scriptFuture.setResult(jsonResponse);
66
61
  return true;
67
62
  } else {
68
63
  if (mWebChromeClient == null) {
@@ -29,17 +29,16 @@ public class ExecuteJavascript implements Action {
29
29
  CalabashChromeClient ccc = list.get(0);
30
30
  WebView webView = ccc.getWebView();
31
31
  final String script = "javascript:(function() {"
32
- + " function cb(ret) {"
33
- + " prompt('calabash:'+ret);"
34
- + " }"
35
- + " try {"
36
- + " (function(returnValue) {"
37
- + scriptCode + ";"
38
- + " }(cb));"
39
- + " } catch (e) {"
40
- + " prompt('calabash:Exception: ' + e);"
41
- + " }"
42
- + "}())";
32
+ + " var r;"
33
+ + " try {"
34
+ + " r = (function() {"
35
+ + scriptCode + ";"
36
+ + " }());"
37
+ + " } catch (e) {"
38
+ + " r = 'Exception: ' + e;"
39
+ + " }"
40
+ + " prompt('calabash:'+r);"
41
+ + "}())";
43
42
 
44
43
  System.out.println("execute javascript: " + script);
45
44
 
@@ -78,8 +78,8 @@ public class InvocationOperation implements Operation {
78
78
  Method[] methods = o.getClass().getMethods();
79
79
  for (Method m : methods) {
80
80
  if (m.getName().equals(InvocationOperation.this.methodName)) {
81
- Class<?>[] parameterTypes = m.getParameterTypes();
82
- if (parameterTypes.length == InvocationOperation.this.classes.length && areArgumentsConvertibleTo(parameterTypes)) {
81
+ Class<?>[] parameterTypes = m.getParameterTypes();
82
+ if (parameterTypes.length == InvocationOperation.this.classes.length && areArgumentsConvertibleTo(parameterTypes)) {
83
83
  try {
84
84
  Object result;
85
85
  if( m.getReturnType().equals(Void.TYPE)){
@@ -92,6 +92,7 @@ public class InvocationOperation implements Operation {
92
92
  ref.set(result);
93
93
  return;
94
94
  } catch (Exception e) {
95
+ e.printStackTrace();
95
96
  refEx.set(e);
96
97
  return;
97
98
  }
@@ -119,8 +120,8 @@ public class InvocationOperation implements Operation {
119
120
  Class<?> c = o.getClass();
120
121
  if (convertStringCharSeq && c.equals(String.class)) {
121
122
  c = CharSequence.class;//Android API specific optimization
122
- }
123
- types[i] = c;
123
+ }
124
+ types[i] = mapToPrimitiveClass(c);
124
125
  }
125
126
  else {
126
127
  types[i] = null;
@@ -129,19 +130,39 @@ public class InvocationOperation implements Operation {
129
130
  return types;
130
131
  }
131
132
 
133
+ private Class<?> mapToPrimitiveClass(Class<?> c) {
134
+ if (c.equals(Integer.class)) {
135
+ return int.class;
136
+ }
137
+ else if (c.equals(Float.class)) {
138
+ return float.class;
139
+ }
140
+ else if (c.equals(Double.class)) {
141
+ return double.class;
142
+ }
143
+ else if (c.equals(Boolean.class)) {
144
+ return boolean.class;
145
+ }
146
+ return c;
147
+ }
148
+
149
+
132
150
  //parameterType.length == this.classes.length
133
151
  //Note: right now we don't do any clever mapping, we
134
152
  //only use Java's sub type relation: isAssigableFrom
135
153
  private boolean areArgumentsConvertibleTo(Class<?>[] parameterTypes) {
136
154
  for (int i=0; i < parameterTypes.length; i++) {
137
155
  Class<?> typei = parameterTypes[i];
138
- if (this.classes[i] == null) {
156
+ if (this.arguments.get(i) == null) {
139
157
  if (typei.isPrimitive()) {
140
158
  //Can't pass null as primitive
141
159
  return false;
142
160
  }
143
161
  continue; //can always pass null (unless primitive)
144
162
  }
163
+ if (typei.isPrimitive() && typei.equals(mapToPrimitiveClass(this.classes[i]))) {
164
+ continue;
165
+ }
145
166
  if (!typei.isAssignableFrom(this.classes[i])) {
146
167
  return false;
147
168
  }
@@ -19,6 +19,7 @@ import sh.calaba.instrumentationbackend.query.antlr.UIQueryParser;
19
19
  import sh.calaba.instrumentationbackend.query.ast.InvalidUIQueryException;
20
20
  import sh.calaba.instrumentationbackend.query.ast.UIQueryAST;
21
21
  import sh.calaba.instrumentationbackend.query.ast.UIQueryASTClassName;
22
+ import sh.calaba.instrumentationbackend.query.ast.UIQueryASTPredicate;
22
23
  import sh.calaba.instrumentationbackend.query.ast.UIQueryASTWith;
23
24
  import sh.calaba.instrumentationbackend.query.ast.UIQueryEvaluator;
24
25
  import sh.calaba.instrumentationbackend.query.ast.UIQueryVisibility;
@@ -142,7 +143,10 @@ public class Query {
142
143
  return UIQueryVisibility.ALL;
143
144
 
144
145
  case UIQueryParser.VISIBLE:
145
- return UIQueryVisibility.VISIBLE;
146
+ return UIQueryVisibility.VISIBLE;
147
+
148
+ case UIQueryParser.BEGINPRED:
149
+ return UIQueryASTPredicate.newPredicateFromAST(step);
146
150
 
147
151
  default:
148
152
  throw new InvalidUIQueryException("Unknown query: " + stepType
@@ -151,7 +155,7 @@ public class Query {
151
155
  }
152
156
 
153
157
  }
154
-
158
+
155
159
  public List<View> allVisibleViews() {
156
160
  return viewFetcher.getAllViews(false);
157
161
  }
@@ -1,15 +1,18 @@
1
1
  ALL=4
2
- BOOL=5
3
- ESC_SEQ=6
4
- FILTER_COLON=7
5
- HEX_DIGIT=8
6
- INT=9
7
- NAME=10
8
- NIL=11
9
- OCTAL_ESC=12
10
- QUALIFIED_NAME=13
11
- STRING=14
12
- UNICODE_ESC=15
13
- VISIBLE=16
14
- WHITE=17
15
- WILDCARD=18
2
+ BEGINPRED=5
3
+ BOOL=6
4
+ ENDPRED=7
5
+ ESC_SEQ=8
6
+ FILTER_COLON=9
7
+ HEX_DIGIT=10
8
+ INT=11
9
+ NAME=12
10
+ NIL=13
11
+ OCTAL_ESC=14
12
+ QUALIFIED_NAME=15
13
+ RELATION=16
14
+ STRING=17
15
+ UNICODE_ESC=18
16
+ VISIBLE=19
17
+ WHITE=20
18
+ WILDCARD=21
@@ -1,4 +1,4 @@
1
- // $ANTLR 3.4 antlr/UIQuery.g 2013-01-07 13:26:07
1
+ // $ANTLR 3.4 antlr/UIQuery.g 2013-01-24 10:28:02
2
2
 
3
3
  package sh.calaba.instrumentationbackend.query.antlr;
4
4
 
@@ -12,20 +12,23 @@ import java.util.ArrayList;
12
12
  public class UIQueryLexer extends Lexer {
13
13
  public static final int EOF=-1;
14
14
  public static final int ALL=4;
15
- public static final int BOOL=5;
16
- public static final int ESC_SEQ=6;
17
- public static final int FILTER_COLON=7;
18
- public static final int HEX_DIGIT=8;
19
- public static final int INT=9;
20
- public static final int NAME=10;
21
- public static final int NIL=11;
22
- public static final int OCTAL_ESC=12;
23
- public static final int QUALIFIED_NAME=13;
24
- public static final int STRING=14;
25
- public static final int UNICODE_ESC=15;
26
- public static final int VISIBLE=16;
27
- public static final int WHITE=17;
28
- public static final int WILDCARD=18;
15
+ public static final int BEGINPRED=5;
16
+ public static final int BOOL=6;
17
+ public static final int ENDPRED=7;
18
+ public static final int ESC_SEQ=8;
19
+ public static final int FILTER_COLON=9;
20
+ public static final int HEX_DIGIT=10;
21
+ public static final int INT=11;
22
+ public static final int NAME=12;
23
+ public static final int NIL=13;
24
+ public static final int OCTAL_ESC=14;
25
+ public static final int QUALIFIED_NAME=15;
26
+ public static final int RELATION=16;
27
+ public static final int STRING=17;
28
+ public static final int UNICODE_ESC=18;
29
+ public static final int VISIBLE=19;
30
+ public static final int WHITE=20;
31
+ public static final int WILDCARD=21;
29
32
 
30
33
  // delegates
31
34
  // delegators
@@ -186,27 +189,372 @@ public class UIQueryLexer extends Lexer {
186
189
  }
187
190
  // $ANTLR end "FILTER_COLON"
188
191
 
192
+ // $ANTLR start "BEGINPRED"
193
+ public final void mBEGINPRED() throws RecognitionException {
194
+ try {
195
+ int _type = BEGINPRED;
196
+ int _channel = DEFAULT_TOKEN_CHANNEL;
197
+ // antlr/UIQuery.g:61:11: ( '{' )
198
+ // antlr/UIQuery.g:61:13: '{'
199
+ {
200
+ match('{');
201
+
202
+ }
203
+
204
+ state.type = _type;
205
+ state.channel = _channel;
206
+ }
207
+ finally {
208
+ // do for sure before leaving
209
+ }
210
+ }
211
+ // $ANTLR end "BEGINPRED"
212
+
213
+ // $ANTLR start "ENDPRED"
214
+ public final void mENDPRED() throws RecognitionException {
215
+ try {
216
+ int _type = ENDPRED;
217
+ int _channel = DEFAULT_TOKEN_CHANNEL;
218
+ // antlr/UIQuery.g:63:11: ( '}' )
219
+ // antlr/UIQuery.g:63:13: '}'
220
+ {
221
+ match('}');
222
+
223
+ }
224
+
225
+ state.type = _type;
226
+ state.channel = _channel;
227
+ }
228
+ finally {
229
+ // do for sure before leaving
230
+ }
231
+ }
232
+ // $ANTLR end "ENDPRED"
233
+
234
+ // $ANTLR start "RELATION"
235
+ public final void mRELATION() throws RecognitionException {
236
+ try {
237
+ int _type = RELATION;
238
+ int _channel = DEFAULT_TOKEN_CHANNEL;
239
+ // antlr/UIQuery.g:66:10: (| '=' | '>' | '>=' | '<' | '<=' | ( ( 'BEGINSWITH' | 'ENDSWITH' | 'CONTAINS' | 'LIKE' | 'beginswith' | 'endswith' | 'contains' | 'like' ) ( '[' ( 'a' .. 'z' | 'A' .. 'Z' )* ']' )? ) )
240
+ int alt5=7;
241
+ switch ( input.LA(1) ) {
242
+ case '=':
243
+ {
244
+ alt5=2;
245
+ }
246
+ break;
247
+ case '>':
248
+ {
249
+ int LA5_3 = input.LA(2);
250
+
251
+ if ( (LA5_3=='=') ) {
252
+ alt5=4;
253
+ }
254
+ else {
255
+ alt5=3;
256
+ }
257
+ }
258
+ break;
259
+ case '<':
260
+ {
261
+ int LA5_4 = input.LA(2);
262
+
263
+ if ( (LA5_4=='=') ) {
264
+ alt5=6;
265
+ }
266
+ else {
267
+ alt5=5;
268
+ }
269
+ }
270
+ break;
271
+ case 'B':
272
+ case 'C':
273
+ case 'E':
274
+ case 'L':
275
+ case 'b':
276
+ case 'c':
277
+ case 'e':
278
+ case 'l':
279
+ {
280
+ alt5=7;
281
+ }
282
+ break;
283
+ default:
284
+ alt5=1;
285
+ }
286
+
287
+ switch (alt5) {
288
+ case 1 :
289
+ // antlr/UIQuery.g:66:12:
290
+ {
291
+ }
292
+ break;
293
+ case 2 :
294
+ // antlr/UIQuery.g:66:14: '='
295
+ {
296
+ match('=');
297
+
298
+ }
299
+ break;
300
+ case 3 :
301
+ // antlr/UIQuery.g:66:20: '>'
302
+ {
303
+ match('>');
304
+
305
+ }
306
+ break;
307
+ case 4 :
308
+ // antlr/UIQuery.g:66:26: '>='
309
+ {
310
+ match(">=");
311
+
312
+
313
+
314
+ }
315
+ break;
316
+ case 5 :
317
+ // antlr/UIQuery.g:66:33: '<'
318
+ {
319
+ match('<');
320
+
321
+ }
322
+ break;
323
+ case 6 :
324
+ // antlr/UIQuery.g:66:39: '<='
325
+ {
326
+ match("<=");
327
+
328
+
329
+
330
+ }
331
+ break;
332
+ case 7 :
333
+ // antlr/UIQuery.g:67:4: ( ( 'BEGINSWITH' | 'ENDSWITH' | 'CONTAINS' | 'LIKE' | 'beginswith' | 'endswith' | 'contains' | 'like' ) ( '[' ( 'a' .. 'z' | 'A' .. 'Z' )* ']' )? )
334
+ {
335
+ // antlr/UIQuery.g:67:4: ( ( 'BEGINSWITH' | 'ENDSWITH' | 'CONTAINS' | 'LIKE' | 'beginswith' | 'endswith' | 'contains' | 'like' ) ( '[' ( 'a' .. 'z' | 'A' .. 'Z' )* ']' )? )
336
+ // antlr/UIQuery.g:67:5: ( 'BEGINSWITH' | 'ENDSWITH' | 'CONTAINS' | 'LIKE' | 'beginswith' | 'endswith' | 'contains' | 'like' ) ( '[' ( 'a' .. 'z' | 'A' .. 'Z' )* ']' )?
337
+ {
338
+ // antlr/UIQuery.g:67:5: ( 'BEGINSWITH' | 'ENDSWITH' | 'CONTAINS' | 'LIKE' | 'beginswith' | 'endswith' | 'contains' | 'like' )
339
+ int alt2=8;
340
+ switch ( input.LA(1) ) {
341
+ case 'B':
342
+ {
343
+ alt2=1;
344
+ }
345
+ break;
346
+ case 'E':
347
+ {
348
+ alt2=2;
349
+ }
350
+ break;
351
+ case 'C':
352
+ {
353
+ alt2=3;
354
+ }
355
+ break;
356
+ case 'L':
357
+ {
358
+ alt2=4;
359
+ }
360
+ break;
361
+ case 'b':
362
+ {
363
+ alt2=5;
364
+ }
365
+ break;
366
+ case 'e':
367
+ {
368
+ alt2=6;
369
+ }
370
+ break;
371
+ case 'c':
372
+ {
373
+ alt2=7;
374
+ }
375
+ break;
376
+ case 'l':
377
+ {
378
+ alt2=8;
379
+ }
380
+ break;
381
+ default:
382
+ NoViableAltException nvae =
383
+ new NoViableAltException("", 2, 0, input);
384
+
385
+ throw nvae;
386
+
387
+ }
388
+
389
+ switch (alt2) {
390
+ case 1 :
391
+ // antlr/UIQuery.g:67:7: 'BEGINSWITH'
392
+ {
393
+ match("BEGINSWITH");
394
+
395
+
396
+
397
+ }
398
+ break;
399
+ case 2 :
400
+ // antlr/UIQuery.g:67:22: 'ENDSWITH'
401
+ {
402
+ match("ENDSWITH");
403
+
404
+
405
+
406
+ }
407
+ break;
408
+ case 3 :
409
+ // antlr/UIQuery.g:67:35: 'CONTAINS'
410
+ {
411
+ match("CONTAINS");
412
+
413
+
414
+
415
+ }
416
+ break;
417
+ case 4 :
418
+ // antlr/UIQuery.g:67:48: 'LIKE'
419
+ {
420
+ match("LIKE");
421
+
422
+
423
+
424
+ }
425
+ break;
426
+ case 5 :
427
+ // antlr/UIQuery.g:68:12: 'beginswith'
428
+ {
429
+ match("beginswith");
430
+
431
+
432
+
433
+ }
434
+ break;
435
+ case 6 :
436
+ // antlr/UIQuery.g:68:27: 'endswith'
437
+ {
438
+ match("endswith");
439
+
440
+
441
+
442
+ }
443
+ break;
444
+ case 7 :
445
+ // antlr/UIQuery.g:68:40: 'contains'
446
+ {
447
+ match("contains");
448
+
449
+
450
+
451
+ }
452
+ break;
453
+ case 8 :
454
+ // antlr/UIQuery.g:68:53: 'like'
455
+ {
456
+ match("like");
457
+
458
+
459
+
460
+ }
461
+ break;
462
+
463
+ }
464
+
465
+
466
+ // antlr/UIQuery.g:68:61: ( '[' ( 'a' .. 'z' | 'A' .. 'Z' )* ']' )?
467
+ int alt4=2;
468
+ int LA4_0 = input.LA(1);
469
+
470
+ if ( (LA4_0=='[') ) {
471
+ alt4=1;
472
+ }
473
+ switch (alt4) {
474
+ case 1 :
475
+ // antlr/UIQuery.g:68:62: '[' ( 'a' .. 'z' | 'A' .. 'Z' )* ']'
476
+ {
477
+ match('[');
478
+
479
+ // antlr/UIQuery.g:68:66: ( 'a' .. 'z' | 'A' .. 'Z' )*
480
+ loop3:
481
+ do {
482
+ int alt3=2;
483
+ int LA3_0 = input.LA(1);
484
+
485
+ if ( ((LA3_0 >= 'A' && LA3_0 <= 'Z')||(LA3_0 >= 'a' && LA3_0 <= 'z')) ) {
486
+ alt3=1;
487
+ }
488
+
489
+
490
+ switch (alt3) {
491
+ case 1 :
492
+ // antlr/UIQuery.g:
493
+ {
494
+ if ( (input.LA(1) >= 'A' && input.LA(1) <= 'Z')||(input.LA(1) >= 'a' && input.LA(1) <= 'z') ) {
495
+ input.consume();
496
+ }
497
+ else {
498
+ MismatchedSetException mse = new MismatchedSetException(null,input);
499
+ recover(mse);
500
+ throw mse;
501
+ }
502
+
503
+
504
+ }
505
+ break;
506
+
507
+ default :
508
+ break loop3;
509
+ }
510
+ } while (true);
511
+
512
+
513
+ match(']');
514
+
515
+ }
516
+ break;
517
+
518
+ }
519
+
520
+
521
+ }
522
+
523
+
524
+ }
525
+ break;
526
+
527
+ }
528
+ state.type = _type;
529
+ state.channel = _channel;
530
+ }
531
+ finally {
532
+ // do for sure before leaving
533
+ }
534
+ }
535
+ // $ANTLR end "RELATION"
536
+
189
537
  // $ANTLR start "INT"
190
538
  public final void mINT() throws RecognitionException {
191
539
  try {
192
540
  int _type = INT;
193
541
  int _channel = DEFAULT_TOKEN_CHANNEL;
194
- // antlr/UIQuery.g:60:5: ( ( '0' .. '9' )+ )
195
- // antlr/UIQuery.g:60:7: ( '0' .. '9' )+
542
+ // antlr/UIQuery.g:72:5: ( ( '0' .. '9' )+ )
543
+ // antlr/UIQuery.g:72:7: ( '0' .. '9' )+
196
544
  {
197
- // antlr/UIQuery.g:60:7: ( '0' .. '9' )+
198
- int cnt2=0;
199
- loop2:
545
+ // antlr/UIQuery.g:72:7: ( '0' .. '9' )+
546
+ int cnt6=0;
547
+ loop6:
200
548
  do {
201
- int alt2=2;
202
- int LA2_0 = input.LA(1);
549
+ int alt6=2;
550
+ int LA6_0 = input.LA(1);
203
551
 
204
- if ( ((LA2_0 >= '0' && LA2_0 <= '9')) ) {
205
- alt2=1;
552
+ if ( ((LA6_0 >= '0' && LA6_0 <= '9')) ) {
553
+ alt6=1;
206
554
  }
207
555
 
208
556
 
209
- switch (alt2) {
557
+ switch (alt6) {
210
558
  case 1 :
211
559
  // antlr/UIQuery.g:
212
560
  {
@@ -224,12 +572,12 @@ public class UIQueryLexer extends Lexer {
224
572
  break;
225
573
 
226
574
  default :
227
- if ( cnt2 >= 1 ) break loop2;
575
+ if ( cnt6 >= 1 ) break loop6;
228
576
  EarlyExitException eee =
229
- new EarlyExitException(2, input);
577
+ new EarlyExitException(6, input);
230
578
  throw eee;
231
579
  }
232
- cnt2++;
580
+ cnt6++;
233
581
  } while (true);
234
582
 
235
583
 
@@ -249,26 +597,26 @@ public class UIQueryLexer extends Lexer {
249
597
  try {
250
598
  int _type = BOOL;
251
599
  int _channel = DEFAULT_TOKEN_CHANNEL;
252
- // antlr/UIQuery.g:63:6: ( 'true' | 'false' )
253
- int alt3=2;
254
- int LA3_0 = input.LA(1);
600
+ // antlr/UIQuery.g:75:6: ( 'true' | 'false' )
601
+ int alt7=2;
602
+ int LA7_0 = input.LA(1);
255
603
 
256
- if ( (LA3_0=='t') ) {
257
- alt3=1;
604
+ if ( (LA7_0=='t') ) {
605
+ alt7=1;
258
606
  }
259
- else if ( (LA3_0=='f') ) {
260
- alt3=2;
607
+ else if ( (LA7_0=='f') ) {
608
+ alt7=2;
261
609
  }
262
610
  else {
263
611
  NoViableAltException nvae =
264
- new NoViableAltException("", 3, 0, input);
612
+ new NoViableAltException("", 7, 0, input);
265
613
 
266
614
  throw nvae;
267
615
 
268
616
  }
269
- switch (alt3) {
617
+ switch (alt7) {
270
618
  case 1 :
271
- // antlr/UIQuery.g:63:8: 'true'
619
+ // antlr/UIQuery.g:75:8: 'true'
272
620
  {
273
621
  match("true");
274
622
 
@@ -277,7 +625,7 @@ public class UIQueryLexer extends Lexer {
277
625
  }
278
626
  break;
279
627
  case 2 :
280
- // antlr/UIQuery.g:63:17: 'false'
628
+ // antlr/UIQuery.g:75:17: 'false'
281
629
  {
282
630
  match("false");
283
631
 
@@ -301,22 +649,22 @@ public class UIQueryLexer extends Lexer {
301
649
  try {
302
650
  int _type = NIL;
303
651
  int _channel = DEFAULT_TOKEN_CHANNEL;
304
- // antlr/UIQuery.g:66:5: ( 'nil' | 'null' )
305
- int alt4=2;
306
- int LA4_0 = input.LA(1);
652
+ // antlr/UIQuery.g:78:5: ( 'nil' | 'null' )
653
+ int alt8=2;
654
+ int LA8_0 = input.LA(1);
307
655
 
308
- if ( (LA4_0=='n') ) {
309
- int LA4_1 = input.LA(2);
656
+ if ( (LA8_0=='n') ) {
657
+ int LA8_1 = input.LA(2);
310
658
 
311
- if ( (LA4_1=='i') ) {
312
- alt4=1;
659
+ if ( (LA8_1=='i') ) {
660
+ alt8=1;
313
661
  }
314
- else if ( (LA4_1=='u') ) {
315
- alt4=2;
662
+ else if ( (LA8_1=='u') ) {
663
+ alt8=2;
316
664
  }
317
665
  else {
318
666
  NoViableAltException nvae =
319
- new NoViableAltException("", 4, 1, input);
667
+ new NoViableAltException("", 8, 1, input);
320
668
 
321
669
  throw nvae;
322
670
 
@@ -324,14 +672,14 @@ public class UIQueryLexer extends Lexer {
324
672
  }
325
673
  else {
326
674
  NoViableAltException nvae =
327
- new NoViableAltException("", 4, 0, input);
675
+ new NoViableAltException("", 8, 0, input);
328
676
 
329
677
  throw nvae;
330
678
 
331
679
  }
332
- switch (alt4) {
680
+ switch (alt8) {
333
681
  case 1 :
334
- // antlr/UIQuery.g:66:7: 'nil'
682
+ // antlr/UIQuery.g:78:7: 'nil'
335
683
  {
336
684
  match("nil");
337
685
 
@@ -340,7 +688,7 @@ public class UIQueryLexer extends Lexer {
340
688
  }
341
689
  break;
342
690
  case 2 :
343
- // antlr/UIQuery.g:66:15: 'null'
691
+ // antlr/UIQuery.g:78:15: 'null'
344
692
  {
345
693
  match("null");
346
694
 
@@ -364,8 +712,8 @@ public class UIQueryLexer extends Lexer {
364
712
  try {
365
713
  int _type = NAME;
366
714
  int _channel = DEFAULT_TOKEN_CHANNEL;
367
- // antlr/UIQuery.g:69:7: ( ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' )* )
368
- // antlr/UIQuery.g:69:9: ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' )*
715
+ // antlr/UIQuery.g:81:7: ( ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' )* )
716
+ // antlr/UIQuery.g:81:9: ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' )*
369
717
  {
370
718
  if ( (input.LA(1) >= 'A' && input.LA(1) <= 'Z')||input.LA(1)=='_'||(input.LA(1) >= 'a' && input.LA(1) <= 'z') ) {
371
719
  input.consume();
@@ -377,18 +725,18 @@ public class UIQueryLexer extends Lexer {
377
725
  }
378
726
 
379
727
 
380
- // antlr/UIQuery.g:69:33: ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' )*
381
- loop5:
728
+ // antlr/UIQuery.g:81:33: ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' )*
729
+ loop9:
382
730
  do {
383
- int alt5=2;
384
- int LA5_0 = input.LA(1);
731
+ int alt9=2;
732
+ int LA9_0 = input.LA(1);
385
733
 
386
- if ( ((LA5_0 >= '0' && LA5_0 <= '9')||(LA5_0 >= 'A' && LA5_0 <= 'Z')||LA5_0=='_'||(LA5_0 >= 'a' && LA5_0 <= 'z')) ) {
387
- alt5=1;
734
+ if ( ((LA9_0 >= '0' && LA9_0 <= '9')||(LA9_0 >= 'A' && LA9_0 <= 'Z')||LA9_0=='_'||(LA9_0 >= 'a' && LA9_0 <= 'z')) ) {
735
+ alt9=1;
388
736
  }
389
737
 
390
738
 
391
- switch (alt5) {
739
+ switch (alt9) {
392
740
  case 1 :
393
741
  // antlr/UIQuery.g:
394
742
  {
@@ -406,7 +754,7 @@ public class UIQueryLexer extends Lexer {
406
754
  break;
407
755
 
408
756
  default :
409
- break loop5;
757
+ break loop9;
410
758
  }
411
759
  } while (true);
412
760
 
@@ -427,28 +775,28 @@ public class UIQueryLexer extends Lexer {
427
775
  try {
428
776
  int _type = STRING;
429
777
  int _channel = DEFAULT_TOKEN_CHANNEL;
430
- // antlr/UIQuery.g:73:5: ( '\\'' ( ESC_SEQ |~ ( '\\\\' | '\\'' ) )* '\\'' )
431
- // antlr/UIQuery.g:73:8: '\\'' ( ESC_SEQ |~ ( '\\\\' | '\\'' ) )* '\\''
778
+ // antlr/UIQuery.g:85:5: ( '\\'' ( ESC_SEQ |~ ( '\\\\' | '\\'' ) )* '\\'' )
779
+ // antlr/UIQuery.g:85:8: '\\'' ( ESC_SEQ |~ ( '\\\\' | '\\'' ) )* '\\''
432
780
  {
433
781
  match('\'');
434
782
 
435
- // antlr/UIQuery.g:73:13: ( ESC_SEQ |~ ( '\\\\' | '\\'' ) )*
436
- loop6:
783
+ // antlr/UIQuery.g:85:13: ( ESC_SEQ |~ ( '\\\\' | '\\'' ) )*
784
+ loop10:
437
785
  do {
438
- int alt6=3;
439
- int LA6_0 = input.LA(1);
786
+ int alt10=3;
787
+ int LA10_0 = input.LA(1);
440
788
 
441
- if ( (LA6_0=='\\') ) {
442
- alt6=1;
789
+ if ( (LA10_0=='\\') ) {
790
+ alt10=1;
443
791
  }
444
- else if ( ((LA6_0 >= '\u0000' && LA6_0 <= '&')||(LA6_0 >= '(' && LA6_0 <= '[')||(LA6_0 >= ']' && LA6_0 <= '\uFFFF')) ) {
445
- alt6=2;
792
+ else if ( ((LA10_0 >= '\u0000' && LA10_0 <= '&')||(LA10_0 >= '(' && LA10_0 <= '[')||(LA10_0 >= ']' && LA10_0 <= '\uFFFF')) ) {
793
+ alt10=2;
446
794
  }
447
795
 
448
796
 
449
- switch (alt6) {
797
+ switch (alt10) {
450
798
  case 1 :
451
- // antlr/UIQuery.g:73:15: ESC_SEQ
799
+ // antlr/UIQuery.g:85:15: ESC_SEQ
452
800
  {
453
801
  mESC_SEQ();
454
802
 
@@ -456,7 +804,7 @@ public class UIQueryLexer extends Lexer {
456
804
  }
457
805
  break;
458
806
  case 2 :
459
- // antlr/UIQuery.g:73:25: ~ ( '\\\\' | '\\'' )
807
+ // antlr/UIQuery.g:85:25: ~ ( '\\\\' | '\\'' )
460
808
  {
461
809
  if ( (input.LA(1) >= '\u0000' && input.LA(1) <= '&')||(input.LA(1) >= '(' && input.LA(1) <= '[')||(input.LA(1) >= ']' && input.LA(1) <= '\uFFFF') ) {
462
810
  input.consume();
@@ -472,7 +820,7 @@ public class UIQueryLexer extends Lexer {
472
820
  break;
473
821
 
474
822
  default :
475
- break loop6;
823
+ break loop10;
476
824
  }
477
825
  } while (true);
478
826
 
@@ -495,24 +843,24 @@ public class UIQueryLexer extends Lexer {
495
843
  try {
496
844
  int _type = WHITE;
497
845
  int _channel = DEFAULT_TOKEN_CHANNEL;
498
- // antlr/UIQuery.g:76:9: ( ( ' ' )+ )
499
- // antlr/UIQuery.g:76:11: ( ' ' )+
846
+ // antlr/UIQuery.g:88:9: ( ( ' ' )+ )
847
+ // antlr/UIQuery.g:88:11: ( ' ' )+
500
848
  {
501
- // antlr/UIQuery.g:76:11: ( ' ' )+
502
- int cnt7=0;
503
- loop7:
849
+ // antlr/UIQuery.g:88:11: ( ' ' )+
850
+ int cnt11=0;
851
+ loop11:
504
852
  do {
505
- int alt7=2;
506
- int LA7_0 = input.LA(1);
853
+ int alt11=2;
854
+ int LA11_0 = input.LA(1);
507
855
 
508
- if ( (LA7_0==' ') ) {
509
- alt7=1;
856
+ if ( (LA11_0==' ') ) {
857
+ alt11=1;
510
858
  }
511
859
 
512
860
 
513
- switch (alt7) {
861
+ switch (alt11) {
514
862
  case 1 :
515
- // antlr/UIQuery.g:76:11: ' '
863
+ // antlr/UIQuery.g:88:11: ' '
516
864
  {
517
865
  match(' ');
518
866
 
@@ -520,12 +868,12 @@ public class UIQueryLexer extends Lexer {
520
868
  break;
521
869
 
522
870
  default :
523
- if ( cnt7 >= 1 ) break loop7;
871
+ if ( cnt11 >= 1 ) break loop11;
524
872
  EarlyExitException eee =
525
- new EarlyExitException(7, input);
873
+ new EarlyExitException(11, input);
526
874
  throw eee;
527
875
  }
528
- cnt7++;
876
+ cnt11++;
529
877
  } while (true);
530
878
 
531
879
 
@@ -543,7 +891,7 @@ public class UIQueryLexer extends Lexer {
543
891
  // $ANTLR start "HEX_DIGIT"
544
892
  public final void mHEX_DIGIT() throws RecognitionException {
545
893
  try {
546
- // antlr/UIQuery.g:79:11: ( ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' ) )
894
+ // antlr/UIQuery.g:91:11: ( ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' ) )
547
895
  // antlr/UIQuery.g:
548
896
  {
549
897
  if ( (input.LA(1) >= '0' && input.LA(1) <= '9')||(input.LA(1) >= 'A' && input.LA(1) <= 'F')||(input.LA(1) >= 'a' && input.LA(1) <= 'f') ) {
@@ -569,11 +917,11 @@ public class UIQueryLexer extends Lexer {
569
917
  // $ANTLR start "ESC_SEQ"
570
918
  public final void mESC_SEQ() throws RecognitionException {
571
919
  try {
572
- // antlr/UIQuery.g:83:5: ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\'' | '\\\\' ) | UNICODE_ESC | OCTAL_ESC )
573
- int alt8=3;
574
- int LA8_0 = input.LA(1);
920
+ // antlr/UIQuery.g:95:5: ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\'' | '\\\\' ) | UNICODE_ESC | OCTAL_ESC )
921
+ int alt12=3;
922
+ int LA12_0 = input.LA(1);
575
923
 
576
- if ( (LA8_0=='\\') ) {
924
+ if ( (LA12_0=='\\') ) {
577
925
  switch ( input.LA(2) ) {
578
926
  case '\'':
579
927
  case '\\':
@@ -583,12 +931,12 @@ public class UIQueryLexer extends Lexer {
583
931
  case 'r':
584
932
  case 't':
585
933
  {
586
- alt8=1;
934
+ alt12=1;
587
935
  }
588
936
  break;
589
937
  case 'u':
590
938
  {
591
- alt8=2;
939
+ alt12=2;
592
940
  }
593
941
  break;
594
942
  case '0':
@@ -600,12 +948,12 @@ public class UIQueryLexer extends Lexer {
600
948
  case '6':
601
949
  case '7':
602
950
  {
603
- alt8=3;
951
+ alt12=3;
604
952
  }
605
953
  break;
606
954
  default:
607
955
  NoViableAltException nvae =
608
- new NoViableAltException("", 8, 1, input);
956
+ new NoViableAltException("", 12, 1, input);
609
957
 
610
958
  throw nvae;
611
959
 
@@ -614,14 +962,14 @@ public class UIQueryLexer extends Lexer {
614
962
  }
615
963
  else {
616
964
  NoViableAltException nvae =
617
- new NoViableAltException("", 8, 0, input);
965
+ new NoViableAltException("", 12, 0, input);
618
966
 
619
967
  throw nvae;
620
968
 
621
969
  }
622
- switch (alt8) {
970
+ switch (alt12) {
623
971
  case 1 :
624
- // antlr/UIQuery.g:83:9: '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\'' | '\\\\' )
972
+ // antlr/UIQuery.g:95:9: '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\'' | '\\\\' )
625
973
  {
626
974
  match('\\');
627
975
 
@@ -638,7 +986,7 @@ public class UIQueryLexer extends Lexer {
638
986
  }
639
987
  break;
640
988
  case 2 :
641
- // antlr/UIQuery.g:84:9: UNICODE_ESC
989
+ // antlr/UIQuery.g:96:9: UNICODE_ESC
642
990
  {
643
991
  mUNICODE_ESC();
644
992
 
@@ -646,7 +994,7 @@ public class UIQueryLexer extends Lexer {
646
994
  }
647
995
  break;
648
996
  case 3 :
649
- // antlr/UIQuery.g:85:9: OCTAL_ESC
997
+ // antlr/UIQuery.g:97:9: OCTAL_ESC
650
998
  {
651
999
  mOCTAL_ESC();
652
1000
 
@@ -666,43 +1014,43 @@ public class UIQueryLexer extends Lexer {
666
1014
  // $ANTLR start "OCTAL_ESC"
667
1015
  public final void mOCTAL_ESC() throws RecognitionException {
668
1016
  try {
669
- // antlr/UIQuery.g:90:5: ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) )
670
- int alt9=3;
671
- int LA9_0 = input.LA(1);
1017
+ // antlr/UIQuery.g:102:5: ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) )
1018
+ int alt13=3;
1019
+ int LA13_0 = input.LA(1);
672
1020
 
673
- if ( (LA9_0=='\\') ) {
674
- int LA9_1 = input.LA(2);
1021
+ if ( (LA13_0=='\\') ) {
1022
+ int LA13_1 = input.LA(2);
675
1023
 
676
- if ( ((LA9_1 >= '0' && LA9_1 <= '3')) ) {
677
- int LA9_2 = input.LA(3);
1024
+ if ( ((LA13_1 >= '0' && LA13_1 <= '3')) ) {
1025
+ int LA13_2 = input.LA(3);
678
1026
 
679
- if ( ((LA9_2 >= '0' && LA9_2 <= '7')) ) {
680
- int LA9_4 = input.LA(4);
1027
+ if ( ((LA13_2 >= '0' && LA13_2 <= '7')) ) {
1028
+ int LA13_4 = input.LA(4);
681
1029
 
682
- if ( ((LA9_4 >= '0' && LA9_4 <= '7')) ) {
683
- alt9=1;
1030
+ if ( ((LA13_4 >= '0' && LA13_4 <= '7')) ) {
1031
+ alt13=1;
684
1032
  }
685
1033
  else {
686
- alt9=2;
1034
+ alt13=2;
687
1035
  }
688
1036
  }
689
1037
  else {
690
- alt9=3;
1038
+ alt13=3;
691
1039
  }
692
1040
  }
693
- else if ( ((LA9_1 >= '4' && LA9_1 <= '7')) ) {
694
- int LA9_3 = input.LA(3);
1041
+ else if ( ((LA13_1 >= '4' && LA13_1 <= '7')) ) {
1042
+ int LA13_3 = input.LA(3);
695
1043
 
696
- if ( ((LA9_3 >= '0' && LA9_3 <= '7')) ) {
697
- alt9=2;
1044
+ if ( ((LA13_3 >= '0' && LA13_3 <= '7')) ) {
1045
+ alt13=2;
698
1046
  }
699
1047
  else {
700
- alt9=3;
1048
+ alt13=3;
701
1049
  }
702
1050
  }
703
1051
  else {
704
1052
  NoViableAltException nvae =
705
- new NoViableAltException("", 9, 1, input);
1053
+ new NoViableAltException("", 13, 1, input);
706
1054
 
707
1055
  throw nvae;
708
1056
 
@@ -710,14 +1058,14 @@ public class UIQueryLexer extends Lexer {
710
1058
  }
711
1059
  else {
712
1060
  NoViableAltException nvae =
713
- new NoViableAltException("", 9, 0, input);
1061
+ new NoViableAltException("", 13, 0, input);
714
1062
 
715
1063
  throw nvae;
716
1064
 
717
1065
  }
718
- switch (alt9) {
1066
+ switch (alt13) {
719
1067
  case 1 :
720
- // antlr/UIQuery.g:90:9: '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' )
1068
+ // antlr/UIQuery.g:102:9: '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' )
721
1069
  {
722
1070
  match('\\');
723
1071
 
@@ -754,7 +1102,7 @@ public class UIQueryLexer extends Lexer {
754
1102
  }
755
1103
  break;
756
1104
  case 2 :
757
- // antlr/UIQuery.g:91:9: '\\\\' ( '0' .. '7' ) ( '0' .. '7' )
1105
+ // antlr/UIQuery.g:103:9: '\\\\' ( '0' .. '7' ) ( '0' .. '7' )
758
1106
  {
759
1107
  match('\\');
760
1108
 
@@ -781,7 +1129,7 @@ public class UIQueryLexer extends Lexer {
781
1129
  }
782
1130
  break;
783
1131
  case 3 :
784
- // antlr/UIQuery.g:92:9: '\\\\' ( '0' .. '7' )
1132
+ // antlr/UIQuery.g:104:9: '\\\\' ( '0' .. '7' )
785
1133
  {
786
1134
  match('\\');
787
1135
 
@@ -810,8 +1158,8 @@ public class UIQueryLexer extends Lexer {
810
1158
  // $ANTLR start "UNICODE_ESC"
811
1159
  public final void mUNICODE_ESC() throws RecognitionException {
812
1160
  try {
813
- // antlr/UIQuery.g:97:5: ( '\\\\' 'u' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT )
814
- // antlr/UIQuery.g:97:9: '\\\\' 'u' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT
1161
+ // antlr/UIQuery.g:109:5: ( '\\\\' 'u' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT )
1162
+ // antlr/UIQuery.g:109:9: '\\\\' 'u' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT
815
1163
  {
816
1164
  match('\\');
817
1165
 
@@ -840,10 +1188,10 @@ public class UIQueryLexer extends Lexer {
840
1188
  // $ANTLR end "UNICODE_ESC"
841
1189
 
842
1190
  public void mTokens() throws RecognitionException {
843
- // antlr/UIQuery.g:1:8: ( WILDCARD | QUALIFIED_NAME | ALL | VISIBLE | FILTER_COLON | INT | BOOL | NIL | NAME | STRING | WHITE )
844
- int alt10=11;
845
- alt10 = dfa10.predict(input);
846
- switch (alt10) {
1191
+ // antlr/UIQuery.g:1:8: ( WILDCARD | QUALIFIED_NAME | ALL | VISIBLE | FILTER_COLON | BEGINPRED | ENDPRED | RELATION | INT | BOOL | NIL | NAME | STRING | WHITE )
1192
+ int alt14=14;
1193
+ alt14 = dfa14.predict(input);
1194
+ switch (alt14) {
847
1195
  case 1 :
848
1196
  // antlr/UIQuery.g:1:10: WILDCARD
849
1197
  {
@@ -885,47 +1233,71 @@ public class UIQueryLexer extends Lexer {
885
1233
  }
886
1234
  break;
887
1235
  case 6 :
888
- // antlr/UIQuery.g:1:59: INT
1236
+ // antlr/UIQuery.g:1:59: BEGINPRED
889
1237
  {
890
- mINT();
1238
+ mBEGINPRED();
891
1239
 
892
1240
 
893
1241
  }
894
1242
  break;
895
1243
  case 7 :
896
- // antlr/UIQuery.g:1:63: BOOL
1244
+ // antlr/UIQuery.g:1:69: ENDPRED
897
1245
  {
898
- mBOOL();
1246
+ mENDPRED();
899
1247
 
900
1248
 
901
1249
  }
902
1250
  break;
903
1251
  case 8 :
904
- // antlr/UIQuery.g:1:68: NIL
1252
+ // antlr/UIQuery.g:1:77: RELATION
905
1253
  {
906
- mNIL();
1254
+ mRELATION();
907
1255
 
908
1256
 
909
1257
  }
910
1258
  break;
911
1259
  case 9 :
912
- // antlr/UIQuery.g:1:72: NAME
1260
+ // antlr/UIQuery.g:1:86: INT
913
1261
  {
914
- mNAME();
1262
+ mINT();
915
1263
 
916
1264
 
917
1265
  }
918
1266
  break;
919
1267
  case 10 :
920
- // antlr/UIQuery.g:1:77: STRING
1268
+ // antlr/UIQuery.g:1:90: BOOL
921
1269
  {
922
- mSTRING();
1270
+ mBOOL();
923
1271
 
924
1272
 
925
1273
  }
926
1274
  break;
927
1275
  case 11 :
928
- // antlr/UIQuery.g:1:84: WHITE
1276
+ // antlr/UIQuery.g:1:95: NIL
1277
+ {
1278
+ mNIL();
1279
+
1280
+
1281
+ }
1282
+ break;
1283
+ case 12 :
1284
+ // antlr/UIQuery.g:1:99: NAME
1285
+ {
1286
+ mNAME();
1287
+
1288
+
1289
+ }
1290
+ break;
1291
+ case 13 :
1292
+ // antlr/UIQuery.g:1:104: STRING
1293
+ {
1294
+ mSTRING();
1295
+
1296
+
1297
+ }
1298
+ break;
1299
+ case 14 :
1300
+ // antlr/UIQuery.g:1:111: WHITE
929
1301
  {
930
1302
  mWHITE();
931
1303
 
@@ -938,118 +1310,237 @@ public class UIQueryLexer extends Lexer {
938
1310
  }
939
1311
 
940
1312
 
941
- protected DFA10 dfa10 = new DFA10(this);
942
- static final String DFA10_eotS =
943
- "\2\uffff\3\16\2\uffff\3\16\2\uffff\2\16\2\uffff\5\16\1\33\3\16\1"+
944
- "\37\1\16\1\uffff\1\16\1\42\1\16\1\uffff\1\37\1\16\1\uffff\1\42\1"+
945
- "\16\1\46\1\uffff";
946
- static final String DFA10_eofS =
947
- "\47\uffff";
948
- static final String DFA10_minS =
949
- "\1\40\1\uffff\3\56\2\uffff\3\56\2\uffff\2\56\2\uffff\13\56\1\uffff"+
950
- "\3\56\1\uffff\2\56\1\uffff\3\56\1\uffff";
951
- static final String DFA10_maxS =
952
- "\1\172\1\uffff\3\172\2\uffff\3\172\2\uffff\2\172\2\uffff\13\172"+
953
- "\1\uffff\3\172\1\uffff\2\172\1\uffff\3\172\1\uffff";
954
- static final String DFA10_acceptS =
955
- "\1\uffff\1\1\3\uffff\1\5\1\6\3\uffff\1\12\1\13\2\uffff\1\11\1\2"+
956
- "\13\uffff\1\3\3\uffff\1\10\2\uffff\1\7\3\uffff\1\4";
957
- static final String DFA10_specialS =
958
- "\47\uffff}>";
959
- static final String[] DFA10_transitionS = {
960
- "\1\13\6\uffff\1\12\2\uffff\1\1\5\uffff\12\6\1\5\6\uffff\32\11"+
961
- "\4\uffff\1\11\1\uffff\1\2\4\11\1\7\7\11\1\10\5\11\1\4\1\11\1"+
962
- "\3\4\11",
1313
+ protected DFA14 dfa14 = new DFA14(this);
1314
+ static final String DFA14_eotS =
1315
+ "\1\10\1\uffff\3\31\4\uffff\10\31\1\uffff\3\31\2\uffff\2\31\2\uffff"+
1316
+ "\15\31\1\66\13\31\1\102\1\31\1\uffff\4\31\1\10\3\31\1\10\1\113\1"+
1317
+ "\31\1\uffff\1\102\7\31\1\uffff\1\113\7\31\1\133\6\31\1\uffff\1\31"+
1318
+ "\2\10\1\31\2\10\2\31\2\10";
1319
+ static final String DFA14_eofS =
1320
+ "\146\uffff";
1321
+ static final String DFA14_minS =
1322
+ "\1\40\1\uffff\3\56\4\uffff\10\56\1\uffff\3\56\2\uffff\2\56\2\uffff"+
1323
+ "\33\56\1\uffff\13\56\1\uffff\10\56\1\uffff\17\56\1\uffff\12\56";
1324
+ static final String DFA14_maxS =
1325
+ "\1\175\1\uffff\3\172\4\uffff\10\172\1\uffff\3\172\2\uffff\2\172"+
1326
+ "\2\uffff\33\172\1\uffff\13\172\1\uffff\10\172\1\uffff\17\172\1\uffff"+
1327
+ "\12\172";
1328
+ static final String DFA14_acceptS =
1329
+ "\1\uffff\1\1\3\uffff\1\5\1\6\1\7\1\10\10\uffff\1\11\3\uffff\1\15"+
1330
+ "\1\16\2\uffff\1\14\1\2\33\uffff\1\3\13\uffff\1\13\10\uffff\1\12"+
1331
+ "\17\uffff\1\4\12\uffff";
1332
+ static final String DFA14_specialS =
1333
+ "\146\uffff}>";
1334
+ static final String[] DFA14_transitionS = {
1335
+ "\1\26\6\uffff\1\25\2\uffff\1\1\5\uffff\12\21\1\5\6\uffff\1\24"+
1336
+ "\1\4\1\12\1\24\1\11\6\24\1\13\16\24\4\uffff\1\24\1\uffff\1\2"+
1337
+ "\1\14\1\16\1\24\1\15\1\22\5\24\1\17\1\24\1\23\5\24\1\20\1\24"+
1338
+ "\1\3\4\24\1\6\1\uffff\1\7",
1339
+ "",
1340
+ "\1\32\1\uffff\12\30\7\uffff\32\30\4\uffff\1\30\1\uffff\13\30"+
1341
+ "\1\27\16\30",
1342
+ "\1\32\1\uffff\12\30\7\uffff\32\30\4\uffff\1\30\1\uffff\10\30"+
1343
+ "\1\33\21\30",
1344
+ "\1\32\1\uffff\12\30\7\uffff\4\30\1\34\25\30\4\uffff\1\30\1"+
1345
+ "\uffff\32\30",
1346
+ "",
1347
+ "",
1348
+ "",
963
1349
  "",
964
- "\1\17\1\uffff\12\15\7\uffff\32\15\4\uffff\1\15\1\uffff\13\15"+
965
- "\1\14\16\15",
966
- "\1\17\1\uffff\12\15\7\uffff\32\15\4\uffff\1\15\1\uffff\10\15"+
967
- "\1\20\21\15",
968
- "\1\17\1\uffff\12\15\7\uffff\32\15\4\uffff\1\15\1\uffff\21\15"+
969
- "\1\21\10\15",
1350
+ "\1\32\1\uffff\12\30\7\uffff\15\30\1\35\14\30\4\uffff\1\30\1"+
1351
+ "\uffff\32\30",
1352
+ "\1\32\1\uffff\12\30\7\uffff\16\30\1\36\13\30\4\uffff\1\30\1"+
1353
+ "\uffff\32\30",
1354
+ "\1\32\1\uffff\12\30\7\uffff\10\30\1\37\21\30\4\uffff\1\30\1"+
1355
+ "\uffff\32\30",
1356
+ "\1\32\1\uffff\12\30\7\uffff\32\30\4\uffff\1\30\1\uffff\4\30"+
1357
+ "\1\40\25\30",
1358
+ "\1\32\1\uffff\12\30\7\uffff\32\30\4\uffff\1\30\1\uffff\15\30"+
1359
+ "\1\41\14\30",
1360
+ "\1\32\1\uffff\12\30\7\uffff\32\30\4\uffff\1\30\1\uffff\16\30"+
1361
+ "\1\42\13\30",
1362
+ "\1\32\1\uffff\12\30\7\uffff\32\30\4\uffff\1\30\1\uffff\10\30"+
1363
+ "\1\43\21\30",
1364
+ "\1\32\1\uffff\12\30\7\uffff\32\30\4\uffff\1\30\1\uffff\21\30"+
1365
+ "\1\44\10\30",
970
1366
  "",
1367
+ "\1\32\1\uffff\12\30\7\uffff\32\30\4\uffff\1\30\1\uffff\1\45"+
1368
+ "\31\30",
1369
+ "\1\32\1\uffff\12\30\7\uffff\32\30\4\uffff\1\30\1\uffff\10\30"+
1370
+ "\1\46\13\30\1\47\5\30",
1371
+ "\1\32\1\uffff\12\30\7\uffff\32\30\4\uffff\1\30\1\uffff\32\30",
971
1372
  "",
972
- "\1\17\1\uffff\12\15\7\uffff\32\15\4\uffff\1\15\1\uffff\1\22"+
973
- "\31\15",
974
- "\1\17\1\uffff\12\15\7\uffff\32\15\4\uffff\1\15\1\uffff\10\15"+
975
- "\1\23\13\15\1\24\5\15",
976
- "\1\17\1\uffff\12\15\7\uffff\32\15\4\uffff\1\15\1\uffff\32\15",
977
1373
  "",
1374
+ "\1\32\1\uffff\12\30\7\uffff\32\30\4\uffff\1\30\1\uffff\13\30"+
1375
+ "\1\50\16\30",
1376
+ "\1\32\1\uffff\12\30\7\uffff\32\30\4\uffff\1\30\1\uffff\32\30",
978
1377
  "",
979
- "\1\17\1\uffff\12\15\7\uffff\32\15\4\uffff\1\15\1\uffff\13\15"+
980
- "\1\25\16\15",
981
- "\1\17\1\uffff\12\15\7\uffff\32\15\4\uffff\1\15\1\uffff\32\15",
982
1378
  "",
1379
+ "\1\32\1\uffff\12\30\7\uffff\32\30\4\uffff\1\30\1\uffff\22\30"+
1380
+ "\1\51\7\30",
1381
+ "\1\32\1\uffff\12\30\7\uffff\6\30\1\52\23\30\4\uffff\1\30\1"+
1382
+ "\uffff\32\30",
1383
+ "\1\32\1\uffff\12\30\7\uffff\3\30\1\53\26\30\4\uffff\1\30\1"+
1384
+ "\uffff\32\30",
1385
+ "\1\32\1\uffff\12\30\7\uffff\15\30\1\54\14\30\4\uffff\1\30\1"+
1386
+ "\uffff\32\30",
1387
+ "\1\32\1\uffff\12\30\7\uffff\12\30\1\55\17\30\4\uffff\1\30\1"+
1388
+ "\uffff\32\30",
1389
+ "\1\32\1\uffff\12\30\7\uffff\32\30\4\uffff\1\30\1\uffff\6\30"+
1390
+ "\1\56\23\30",
1391
+ "\1\32\1\uffff\12\30\7\uffff\32\30\4\uffff\1\30\1\uffff\3\30"+
1392
+ "\1\57\26\30",
1393
+ "\1\32\1\uffff\12\30\7\uffff\32\30\4\uffff\1\30\1\uffff\15\30"+
1394
+ "\1\60\14\30",
1395
+ "\1\32\1\uffff\12\30\7\uffff\32\30\4\uffff\1\30\1\uffff\12\30"+
1396
+ "\1\61\17\30",
1397
+ "\1\32\1\uffff\12\30\7\uffff\32\30\4\uffff\1\30\1\uffff\24\30"+
1398
+ "\1\62\5\30",
1399
+ "\1\32\1\uffff\12\30\7\uffff\32\30\4\uffff\1\30\1\uffff\13\30"+
1400
+ "\1\63\16\30",
1401
+ "\1\32\1\uffff\12\30\7\uffff\32\30\4\uffff\1\30\1\uffff\13\30"+
1402
+ "\1\64\16\30",
1403
+ "\1\32\1\uffff\12\30\7\uffff\32\30\4\uffff\1\30\1\uffff\13\30"+
1404
+ "\1\65\16\30",
1405
+ "\1\32\1\uffff\12\30\7\uffff\32\30\4\uffff\1\30\1\uffff\32\30",
1406
+ "\1\32\1\uffff\12\30\7\uffff\32\30\4\uffff\1\30\1\uffff\10\30"+
1407
+ "\1\67\21\30",
1408
+ "\1\32\1\uffff\12\30\7\uffff\10\30\1\70\21\30\4\uffff\1\30\1"+
1409
+ "\uffff\32\30",
1410
+ "\1\32\1\uffff\12\30\7\uffff\22\30\1\71\7\30\4\uffff\1\30\1"+
1411
+ "\uffff\32\30",
1412
+ "\1\32\1\uffff\12\30\7\uffff\23\30\1\72\6\30\4\uffff\1\30\1"+
1413
+ "\uffff\32\30",
1414
+ "\1\32\1\uffff\12\30\7\uffff\4\30\1\73\25\30\4\uffff\1\30\1"+
1415
+ "\uffff\32\30",
1416
+ "\1\32\1\uffff\12\30\7\uffff\32\30\4\uffff\1\30\1\uffff\10\30"+
1417
+ "\1\74\21\30",
1418
+ "\1\32\1\uffff\12\30\7\uffff\32\30\4\uffff\1\30\1\uffff\22\30"+
1419
+ "\1\75\7\30",
1420
+ "\1\32\1\uffff\12\30\7\uffff\32\30\4\uffff\1\30\1\uffff\23\30"+
1421
+ "\1\76\6\30",
1422
+ "\1\32\1\uffff\12\30\7\uffff\32\30\4\uffff\1\30\1\uffff\4\30"+
1423
+ "\1\77\25\30",
1424
+ "\1\32\1\uffff\12\30\7\uffff\32\30\4\uffff\1\30\1\uffff\4\30"+
1425
+ "\1\100\25\30",
1426
+ "\1\32\1\uffff\12\30\7\uffff\32\30\4\uffff\1\30\1\uffff\22\30"+
1427
+ "\1\101\7\30",
1428
+ "\1\32\1\uffff\12\30\7\uffff\32\30\4\uffff\1\30\1\uffff\32\30",
1429
+ "\1\32\1\uffff\12\30\7\uffff\32\30\4\uffff\1\30\1\uffff\13\30"+
1430
+ "\1\103\16\30",
983
1431
  "",
984
- "\1\17\1\uffff\12\15\7\uffff\32\15\4\uffff\1\15\1\uffff\22\15"+
985
- "\1\26\7\15",
986
- "\1\17\1\uffff\12\15\7\uffff\32\15\4\uffff\1\15\1\uffff\24\15"+
987
- "\1\27\5\15",
988
- "\1\17\1\uffff\12\15\7\uffff\32\15\4\uffff\1\15\1\uffff\13\15"+
989
- "\1\30\16\15",
990
- "\1\17\1\uffff\12\15\7\uffff\32\15\4\uffff\1\15\1\uffff\13\15"+
991
- "\1\31\16\15",
992
- "\1\17\1\uffff\12\15\7\uffff\32\15\4\uffff\1\15\1\uffff\13\15"+
993
- "\1\32\16\15",
994
- "\1\17\1\uffff\12\15\7\uffff\32\15\4\uffff\1\15\1\uffff\32\15",
995
- "\1\17\1\uffff\12\15\7\uffff\32\15\4\uffff\1\15\1\uffff\10\15"+
996
- "\1\34\21\15",
997
- "\1\17\1\uffff\12\15\7\uffff\32\15\4\uffff\1\15\1\uffff\4\15"+
998
- "\1\35\25\15",
999
- "\1\17\1\uffff\12\15\7\uffff\32\15\4\uffff\1\15\1\uffff\22\15"+
1000
- "\1\36\7\15",
1001
- "\1\17\1\uffff\12\15\7\uffff\32\15\4\uffff\1\15\1\uffff\32\15",
1002
- "\1\17\1\uffff\12\15\7\uffff\32\15\4\uffff\1\15\1\uffff\13\15"+
1003
- "\1\40\16\15",
1432
+ "\1\32\1\uffff\12\30\7\uffff\32\30\4\uffff\1\30\1\uffff\1\30"+
1433
+ "\1\104\30\30",
1434
+ "\1\32\1\uffff\12\30\7\uffff\15\30\1\105\14\30\4\uffff\1\30"+
1435
+ "\1\uffff\32\30",
1436
+ "\1\32\1\uffff\12\30\7\uffff\26\30\1\106\3\30\4\uffff\1\30\1"+
1437
+ "\uffff\32\30",
1438
+ "\1\32\1\uffff\12\30\7\uffff\1\107\31\30\4\uffff\1\30\1\uffff"+
1439
+ "\32\30",
1440
+ "\1\32\1\uffff\12\30\7\uffff\32\30\4\uffff\1\30\1\uffff\32\30",
1441
+ "\1\32\1\uffff\12\30\7\uffff\32\30\4\uffff\1\30\1\uffff\15\30"+
1442
+ "\1\110\14\30",
1443
+ "\1\32\1\uffff\12\30\7\uffff\32\30\4\uffff\1\30\1\uffff\26\30"+
1444
+ "\1\111\3\30",
1445
+ "\1\32\1\uffff\12\30\7\uffff\32\30\4\uffff\1\30\1\uffff\1\112"+
1446
+ "\31\30",
1447
+ "\1\32\1\uffff\12\30\7\uffff\32\30\4\uffff\1\30\1\uffff\32\30",
1448
+ "\1\32\1\uffff\12\30\7\uffff\32\30\4\uffff\1\30\1\uffff\32\30",
1449
+ "\1\32\1\uffff\12\30\7\uffff\32\30\4\uffff\1\30\1\uffff\4\30"+
1450
+ "\1\114\25\30",
1004
1451
  "",
1005
- "\1\17\1\uffff\12\15\7\uffff\32\15\4\uffff\1\15\1\uffff\1\15"+
1006
- "\1\41\30\15",
1007
- "\1\17\1\uffff\12\15\7\uffff\32\15\4\uffff\1\15\1\uffff\32\15",
1008
- "\1\17\1\uffff\12\15\7\uffff\32\15\4\uffff\1\15\1\uffff\4\15"+
1009
- "\1\43\25\15",
1452
+ "\1\32\1\uffff\12\30\7\uffff\32\30\4\uffff\1\30\1\uffff\32\30",
1453
+ "\1\32\1\uffff\12\30\7\uffff\32\30\4\uffff\1\30\1\uffff\13\30"+
1454
+ "\1\115\16\30",
1455
+ "\1\32\1\uffff\12\30\7\uffff\22\30\1\116\7\30\4\uffff\1\30\1"+
1456
+ "\uffff\32\30",
1457
+ "\1\32\1\uffff\12\30\7\uffff\10\30\1\117\21\30\4\uffff\1\30"+
1458
+ "\1\uffff\32\30",
1459
+ "\1\32\1\uffff\12\30\7\uffff\10\30\1\120\21\30\4\uffff\1\30"+
1460
+ "\1\uffff\32\30",
1461
+ "\1\32\1\uffff\12\30\7\uffff\32\30\4\uffff\1\30\1\uffff\22\30"+
1462
+ "\1\121\7\30",
1463
+ "\1\32\1\uffff\12\30\7\uffff\32\30\4\uffff\1\30\1\uffff\10\30"+
1464
+ "\1\122\21\30",
1465
+ "\1\32\1\uffff\12\30\7\uffff\32\30\4\uffff\1\30\1\uffff\10\30"+
1466
+ "\1\123\21\30",
1010
1467
  "",
1011
- "\1\17\1\uffff\12\15\7\uffff\32\15\4\uffff\1\15\1\uffff\32\15",
1012
- "\1\17\1\uffff\12\15\7\uffff\32\15\4\uffff\1\15\1\uffff\13\15"+
1013
- "\1\44\16\15",
1468
+ "\1\32\1\uffff\12\30\7\uffff\32\30\4\uffff\1\30\1\uffff\32\30",
1469
+ "\1\32\1\uffff\12\30\7\uffff\32\30\4\uffff\1\30\1\uffff\4\30"+
1470
+ "\1\124\25\30",
1471
+ "\1\32\1\uffff\12\30\7\uffff\26\30\1\125\3\30\4\uffff\1\30\1"+
1472
+ "\uffff\32\30",
1473
+ "\1\32\1\uffff\12\30\7\uffff\23\30\1\126\6\30\4\uffff\1\30\1"+
1474
+ "\uffff\32\30",
1475
+ "\1\32\1\uffff\12\30\7\uffff\15\30\1\127\14\30\4\uffff\1\30"+
1476
+ "\1\uffff\32\30",
1477
+ "\1\32\1\uffff\12\30\7\uffff\32\30\4\uffff\1\30\1\uffff\26\30"+
1478
+ "\1\130\3\30",
1479
+ "\1\32\1\uffff\12\30\7\uffff\32\30\4\uffff\1\30\1\uffff\23\30"+
1480
+ "\1\131\6\30",
1481
+ "\1\32\1\uffff\12\30\7\uffff\32\30\4\uffff\1\30\1\uffff\15\30"+
1482
+ "\1\132\14\30",
1483
+ "\1\32\1\uffff\12\30\7\uffff\32\30\4\uffff\1\30\1\uffff\32\30",
1484
+ "\1\32\1\uffff\12\30\7\uffff\10\30\1\134\21\30\4\uffff\1\30"+
1485
+ "\1\uffff\32\30",
1486
+ "\1\32\1\uffff\12\30\7\uffff\7\30\1\135\22\30\4\uffff\1\30\1"+
1487
+ "\uffff\32\30",
1488
+ "\1\32\1\uffff\12\30\7\uffff\22\30\1\136\7\30\4\uffff\1\30\1"+
1489
+ "\uffff\32\30",
1490
+ "\1\32\1\uffff\12\30\7\uffff\32\30\4\uffff\1\30\1\uffff\10\30"+
1491
+ "\1\137\21\30",
1492
+ "\1\32\1\uffff\12\30\7\uffff\32\30\4\uffff\1\30\1\uffff\7\30"+
1493
+ "\1\140\22\30",
1494
+ "\1\32\1\uffff\12\30\7\uffff\32\30\4\uffff\1\30\1\uffff\22\30"+
1495
+ "\1\141\7\30",
1014
1496
  "",
1015
- "\1\17\1\uffff\12\15\7\uffff\32\15\4\uffff\1\15\1\uffff\32\15",
1016
- "\1\17\1\uffff\12\15\7\uffff\32\15\4\uffff\1\15\1\uffff\4\15"+
1017
- "\1\45\25\15",
1018
- "\1\17\1\uffff\12\15\7\uffff\32\15\4\uffff\1\15\1\uffff\32\15",
1019
- ""
1497
+ "\1\32\1\uffff\12\30\7\uffff\23\30\1\142\6\30\4\uffff\1\30\1"+
1498
+ "\uffff\32\30",
1499
+ "\1\32\1\uffff\12\30\7\uffff\32\30\4\uffff\1\30\1\uffff\32\30",
1500
+ "\1\32\1\uffff\12\30\7\uffff\32\30\4\uffff\1\30\1\uffff\32\30",
1501
+ "\1\32\1\uffff\12\30\7\uffff\32\30\4\uffff\1\30\1\uffff\23\30"+
1502
+ "\1\143\6\30",
1503
+ "\1\32\1\uffff\12\30\7\uffff\32\30\4\uffff\1\30\1\uffff\32\30",
1504
+ "\1\32\1\uffff\12\30\7\uffff\32\30\4\uffff\1\30\1\uffff\32\30",
1505
+ "\1\32\1\uffff\12\30\7\uffff\7\30\1\144\22\30\4\uffff\1\30\1"+
1506
+ "\uffff\32\30",
1507
+ "\1\32\1\uffff\12\30\7\uffff\32\30\4\uffff\1\30\1\uffff\7\30"+
1508
+ "\1\145\22\30",
1509
+ "\1\32\1\uffff\12\30\7\uffff\32\30\4\uffff\1\30\1\uffff\32\30",
1510
+ "\1\32\1\uffff\12\30\7\uffff\32\30\4\uffff\1\30\1\uffff\32\30"
1020
1511
  };
1021
1512
 
1022
- static final short[] DFA10_eot = DFA.unpackEncodedString(DFA10_eotS);
1023
- static final short[] DFA10_eof = DFA.unpackEncodedString(DFA10_eofS);
1024
- static final char[] DFA10_min = DFA.unpackEncodedStringToUnsignedChars(DFA10_minS);
1025
- static final char[] DFA10_max = DFA.unpackEncodedStringToUnsignedChars(DFA10_maxS);
1026
- static final short[] DFA10_accept = DFA.unpackEncodedString(DFA10_acceptS);
1027
- static final short[] DFA10_special = DFA.unpackEncodedString(DFA10_specialS);
1028
- static final short[][] DFA10_transition;
1513
+ static final short[] DFA14_eot = DFA.unpackEncodedString(DFA14_eotS);
1514
+ static final short[] DFA14_eof = DFA.unpackEncodedString(DFA14_eofS);
1515
+ static final char[] DFA14_min = DFA.unpackEncodedStringToUnsignedChars(DFA14_minS);
1516
+ static final char[] DFA14_max = DFA.unpackEncodedStringToUnsignedChars(DFA14_maxS);
1517
+ static final short[] DFA14_accept = DFA.unpackEncodedString(DFA14_acceptS);
1518
+ static final short[] DFA14_special = DFA.unpackEncodedString(DFA14_specialS);
1519
+ static final short[][] DFA14_transition;
1029
1520
 
1030
1521
  static {
1031
- int numStates = DFA10_transitionS.length;
1032
- DFA10_transition = new short[numStates][];
1522
+ int numStates = DFA14_transitionS.length;
1523
+ DFA14_transition = new short[numStates][];
1033
1524
  for (int i=0; i<numStates; i++) {
1034
- DFA10_transition[i] = DFA.unpackEncodedString(DFA10_transitionS[i]);
1525
+ DFA14_transition[i] = DFA.unpackEncodedString(DFA14_transitionS[i]);
1035
1526
  }
1036
1527
  }
1037
1528
 
1038
- class DFA10 extends DFA {
1529
+ class DFA14 extends DFA {
1039
1530
 
1040
- public DFA10(BaseRecognizer recognizer) {
1531
+ public DFA14(BaseRecognizer recognizer) {
1041
1532
  this.recognizer = recognizer;
1042
- this.decisionNumber = 10;
1043
- this.eot = DFA10_eot;
1044
- this.eof = DFA10_eof;
1045
- this.min = DFA10_min;
1046
- this.max = DFA10_max;
1047
- this.accept = DFA10_accept;
1048
- this.special = DFA10_special;
1049
- this.transition = DFA10_transition;
1533
+ this.decisionNumber = 14;
1534
+ this.eot = DFA14_eot;
1535
+ this.eof = DFA14_eof;
1536
+ this.min = DFA14_min;
1537
+ this.max = DFA14_max;
1538
+ this.accept = DFA14_accept;
1539
+ this.special = DFA14_special;
1540
+ this.transition = DFA14_transition;
1050
1541
  }
1051
1542
  public String getDescription() {
1052
- return "1:1: Tokens : ( WILDCARD | QUALIFIED_NAME | ALL | VISIBLE | FILTER_COLON | INT | BOOL | NIL | NAME | STRING | WHITE );";
1543
+ return "1:1: Tokens : ( WILDCARD | QUALIFIED_NAME | ALL | VISIBLE | FILTER_COLON | BEGINPRED | ENDPRED | RELATION | INT | BOOL | NIL | NAME | STRING | WHITE );";
1053
1544
  }
1054
1545
  }
1055
1546