calabash-android 0.4.0.pre10 → 0.4.0.pre11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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