calabash-android 0.4.0.pre6 → 0.4.0.pre7

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 (50) hide show
  1. data/bin/calabash-android +7 -0
  2. data/bin/calabash-android-build.rb +1 -1
  3. data/bin/calabash-android-console.rb +1 -1
  4. data/bin/calabash-android-run.rb +1 -1
  5. data/calabash-android.gemspec +1 -0
  6. data/irbrc +2 -0
  7. data/lib/calabash-android/helpers.rb +4 -2
  8. data/lib/calabash-android/lib/TestServer.apk +0 -0
  9. data/lib/calabash-android/operations.rb +31 -22
  10. data/lib/calabash-android/version.rb +1 -1
  11. data/test-server/instrumentation-backend/.classpath +0 -1
  12. data/test-server/instrumentation-backend/antlr/UIQuery.g +11 -2
  13. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/Command.java +4 -3
  14. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/FranklyResult.java +95 -0
  15. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/Result.java +7 -1
  16. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/HttpServer.java +15 -23
  17. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/location/FakeGPSLocation.java +13 -10
  18. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/CalabashChromeClient.java +136 -36
  19. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/DumpBodyHtml.java +38 -18
  20. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/DumpHtml.java +38 -16
  21. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/EnterTextByCssSelector.java +94 -66
  22. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/ExecuteAsyncJavascript.java +55 -33
  23. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/ExecuteJavascript.java +54 -31
  24. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/JavaScriptOperation.java +44 -0
  25. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/PressByCssSelector.java +52 -27
  26. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/QueryHelper.java +39 -32
  27. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/ScrollTo.java +56 -41
  28. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/SetPropertyByCssSelector.java +50 -25
  29. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/SetText.java +19 -22
  30. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/CompletedFuture.java +40 -0
  31. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/InvocationOperation.java +201 -0
  32. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/Operation.java +7 -0
  33. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/PropertyOperation.java +56 -0
  34. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/Query.java +144 -72
  35. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/UIQuery.tokens +15 -12
  36. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/UIQueryResultVoid.java +22 -0
  37. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ViewMapper.java +38 -11
  38. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/antlr/UIQueryLexer.java +226 -109
  39. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/antlr/UIQueryParser.java +237 -84
  40. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/PartialFutureList.java +100 -0
  41. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryAST.java +1 -1
  42. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryASTClassName.java +26 -22
  43. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryASTWith.java +170 -102
  44. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryEvaluator.java +54 -155
  45. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryUtils.java +97 -2
  46. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/query/ast/UIQueryVisibility.java +32 -0
  47. metadata +27 -5
  48. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/Query.java +0 -24
  49. data/test-server/instrumentation-backend/src/sh/calaba/instrumentationbackend/actions/webview/Touch.java +0 -44
  50. data/test-server/instrumentation-backend/tests/sh/calaba/instrumentationbackend/query/tests/UIQueryTest.java +0 -134
@@ -0,0 +1,7 @@
1
+ package sh.calaba.instrumentationbackend.query;
2
+
3
+ public interface Operation {
4
+
5
+ public Object apply(Object o) throws Exception;
6
+ public String getName();
7
+ }
@@ -0,0 +1,56 @@
1
+ package sh.calaba.instrumentationbackend.query;
2
+
3
+ import java.lang.reflect.Method;
4
+ import java.util.Map;
5
+
6
+ import sh.calaba.instrumentationbackend.query.ast.UIQueryUtils;
7
+ import android.view.View;
8
+
9
+ public class PropertyOperation implements Operation {
10
+
11
+ public final String propertyName;
12
+
13
+ public PropertyOperation(String propertyName) {
14
+ super();
15
+ this.propertyName = propertyName;
16
+ }
17
+
18
+
19
+ @SuppressWarnings({ "rawtypes" })
20
+ @Override
21
+ public Object apply(Object o) throws Exception {
22
+ if (o instanceof Map) {
23
+ Map objAsMap = (Map) o;
24
+ if (objAsMap.containsKey(propertyName)) {
25
+ return objAsMap.get(propertyName);
26
+ } else {
27
+ return UIQueryResultVoid.instance.asMap(
28
+ propertyName, o, "No key for "
29
+ + propertyName + ". Keys: "
30
+ + (objAsMap.keySet().toString()));
31
+ }
32
+ } else {
33
+ if (o instanceof View && "id".equals(propertyName)) {
34
+ return UIQueryUtils.getId((View) o);
35
+ } else {
36
+ Method m = UIQueryUtils
37
+ .hasProperty(o, propertyName);
38
+ if (m != null) {
39
+ return m.invoke(o);
40
+ } else {
41
+ return UIQueryResultVoid.instance
42
+ .asMap(propertyName, o,
43
+ "NO accessor for "
44
+ + propertyName);
45
+ }
46
+ }
47
+ }
48
+
49
+ }
50
+
51
+ @Override
52
+ public String getName() {
53
+ return "Property["+this.propertyName+"]";
54
+ }
55
+
56
+ }
@@ -6,96 +6,168 @@ import java.util.ArrayList;
6
6
  import java.util.Collections;
7
7
  import java.util.HashSet;
8
8
  import java.util.List;
9
+ import java.util.Map;
9
10
  import java.util.Set;
10
- import java.util.concurrent.atomic.AtomicReference;
11
11
 
12
- import sh.calaba.instrumentationbackend.InstrumentationBackend;
12
+ import org.antlr.runtime.ANTLRStringStream;
13
+ import org.antlr.runtime.CommonTokenStream;
14
+ import org.antlr.runtime.RecognitionException;
15
+ import org.antlr.runtime.tree.CommonTree;
16
+
17
+ import sh.calaba.instrumentationbackend.query.antlr.UIQueryLexer;
18
+ import sh.calaba.instrumentationbackend.query.antlr.UIQueryParser;
19
+ import sh.calaba.instrumentationbackend.query.ast.InvalidUIQueryException;
20
+ import sh.calaba.instrumentationbackend.query.ast.UIQueryAST;
21
+ import sh.calaba.instrumentationbackend.query.ast.UIQueryASTClassName;
22
+ import sh.calaba.instrumentationbackend.query.ast.UIQueryASTWith;
13
23
  import sh.calaba.instrumentationbackend.query.ast.UIQueryEvaluator;
14
- import sh.calaba.instrumentationbackend.query.ast.UIQueryUtils;
15
- import android.os.Looper;
24
+ import sh.calaba.instrumentationbackend.query.ast.UIQueryVisibility;
16
25
  import android.view.View;
17
26
 
18
27
  public class Query {
19
28
 
20
- private String queryString;
29
+ private String queryString;
21
30
  @SuppressWarnings("rawtypes")
22
- private List arguments;
31
+ private List operations;
23
32
 
24
- public Query(String queryString) {
25
- this.queryString = queryString;
26
- this.arguments = Collections.EMPTY_LIST;
27
- if (this.queryString == null || this.queryString.trim().equals(""))
28
- {
29
- throw new IllegalArgumentException("Illegal query: "+this.queryString);
30
- }
31
- }
33
+ public Query(String queryString) {
34
+ this.queryString = queryString;
35
+ this.operations = Collections.EMPTY_LIST;
36
+ if (this.queryString == null || this.queryString.trim().equals("")) {
37
+ throw new IllegalArgumentException("Illegal query: "
38
+ + this.queryString);
39
+ }
40
+ }
32
41
 
33
- @SuppressWarnings("rawtypes")
34
- public Query(String queryString,List args) {
35
- this(queryString);
36
- this.arguments = args;
37
- }
42
+ @SuppressWarnings("rawtypes")
43
+ public Query(String queryString, List args) {
44
+ this(queryString);
45
+ this.operations = args;
46
+ }
38
47
 
39
- public QueryResult executeInMainThread()
40
- {
41
- if ( Looper.getMainLooper().getThread() != Thread.currentThread()) {
42
- return execute();
43
- }
48
+ @SuppressWarnings("rawtypes")
49
+ public List executeQuery() {
50
+ return UIQueryEvaluator.evaluateQueryWithOptions(parseQuery(this.queryString), rootViews(), parseOperations(this.operations));
51
+ }
52
+
53
+ @SuppressWarnings("rawtypes")
54
+ public static List<Operation> parseOperations(List ops) {
55
+ List<Operation> result = new ArrayList<Operation>(ops.size());
56
+ for (Object o : ops) {
57
+ Operation op = null;
58
+ if (o instanceof Operation) {
59
+ op = (Operation) o;
60
+ }
61
+ else if (o instanceof String) {
62
+ op = new PropertyOperation((String) o);
63
+ }
64
+ else if (o instanceof Map) {
65
+ Map mapOp = (Map) o;
66
+ String methodName = (String) mapOp.get("method_name");
67
+ if (methodName == null) {
68
+ throw new IllegalArgumentException("Trying to convert a Map without method_name to an operation. " + mapOp.toString());
69
+ }
70
+ List arguments = (List) mapOp.get("arguments");
71
+ if (arguments == null) {
72
+ throw new IllegalArgumentException("Trying to convert a Map without arguments to an operation. " + mapOp.toString());
73
+ }
74
+ op = new InvocationOperation(methodName, arguments);
75
+ }
76
+ result.add(op);
77
+ }
78
+ return result;
79
+ }
44
80
 
45
- final AtomicReference<QueryResult> result = new AtomicReference<QueryResult>();
46
- InstrumentationBackend.instrumentation.runOnMainSync(new Runnable() {
47
- @Override
48
- public void run() {
49
- result.set(execute());
50
- }
51
- });
52
- return result.get();
81
+ @SuppressWarnings("unchecked")
82
+ public static List<UIQueryAST> parseQuery(String query) {
83
+ UIQueryLexer lexer = new UIQueryLexer(new ANTLRStringStream(query));
84
+ UIQueryParser parser = new UIQueryParser(new CommonTokenStream(lexer));
53
85
 
54
- }
86
+ UIQueryParser.query_return q;
87
+ try {
88
+ q = parser.query();
89
+ } catch (RecognitionException e) {
90
+ throw new InvalidUIQueryException(e.getMessage());
91
+ }
92
+ if (q == null) {
93
+ throw new InvalidUIQueryException(query);
94
+ }
95
+ CommonTree rootNode = (CommonTree) q.getTree();
96
+ List<CommonTree> queryPath = rootNode.getChildren();
97
+
98
+ if (queryPath == null || queryPath.isEmpty()) {
99
+ queryPath = Collections.singletonList(rootNode);
100
+ }
55
101
 
56
- @SuppressWarnings({"unchecked", "rawtypes" })
57
- public QueryResult execute() {
58
- List result = new ArrayList();
59
- View decorView = InstrumentationBackend.solo
60
- .getCurrentActivity().getWindow().getDecorView();
61
- if (decorView == null) { throw new IllegalStateException("Unable to find window decorView."); }
62
- View rootView = decorView
63
- .findViewById(android.R.id.content);
64
- if (rootView == null) { throw new IllegalStateException("Unable to find root view."); }
102
+ return mapUIQueryFromAstNodes(queryPath);
103
+ }
104
+
105
+
106
+ public static List<UIQueryAST> mapUIQueryFromAstNodes(List<CommonTree> nodes) {
107
+ List<UIQueryAST> mapped = new ArrayList<UIQueryAST>(nodes.size());
108
+ for (CommonTree t : nodes) {
109
+ mapped.add(uiQueryFromAst(t));
110
+ }
111
+ return mapped;
112
+ }
113
+
114
+ public static UIQueryAST uiQueryFromAst(CommonTree step) {
115
+ String stepType = UIQueryParser.tokenNames[step.getType()];
116
+ switch (step.getType()) {
117
+ case UIQueryParser.QUALIFIED_NAME:
118
+ try {
119
+ return new UIQueryASTClassName(Class.forName(step.getText()));
120
+ } catch (ClassNotFoundException e) {
121
+ // TODO Auto-generated catch block
122
+ throw new InvalidUIQueryException("Qualified class name: "
123
+ + step.getText() + " not found. (" + e.getMessage()
124
+ + ")");
125
+ }
126
+ case UIQueryParser.NAME:
127
+ return new UIQueryASTClassName(step.getText());
65
128
 
66
- long before = System.currentTimeMillis();
67
- List queryResults = UIQueryEvaluator.evaluateQueryWithOptions(this.queryString, rootViews(), this.arguments);
68
- long after = System.currentTimeMillis();
69
-
70
- String action = "EvaluateQuery";
71
- System.out.println(action+ " took: "+ (after-before) + "ms");
72
-
73
- for (Object v : queryResults) {
74
- if (UIQueryUtils.isVisible(v)) {
75
- System.out.println("Query result: "+v);
76
- result.add(ViewMapper.extractDataFromView(v));
77
- }
78
-
79
- }
80
-
81
- return new QueryResult(result);
82
- }
129
+ case UIQueryParser.WILDCARD:
130
+ try {
131
+ return new UIQueryASTClassName(Class.forName("android.view.View"));
132
+ } catch (ClassNotFoundException e) {
133
+ //Cannot happen
134
+ throw new IllegalStateException(e);
135
+ }
83
136
 
137
+
138
+ case UIQueryParser.FILTER_COLON:
139
+ return UIQueryASTWith.fromAST(step);
140
+
141
+ case UIQueryParser.ALL:
142
+ return UIQueryVisibility.ALL;
143
+
144
+ case UIQueryParser.VISIBLE:
145
+ return UIQueryVisibility.VISIBLE;
146
+
147
+ default:
148
+ throw new InvalidUIQueryException("Unknown query: " + stepType
149
+ + " with text: " + step.getText());
84
150
 
85
- public List<View> allVisibleViews() {
86
- return viewFetcher.getAllViews(false);
87
- }
151
+ }
152
+
153
+ }
154
+
155
+ public List<View> allVisibleViews() {
156
+ return viewFetcher.getAllViews(false);
157
+ }
88
158
 
89
159
  public List<View> rootViews() {
90
- Set<View> parents = new HashSet<View>(8);
91
- for (View v : allVisibleViews())
92
- {
93
- View parent = viewFetcher.getTopParent(v);
94
- System.out.println(parent);
95
- parents.add(parent);
96
- }
97
- List<View> results = new ArrayList<View>();
98
- results.addAll(parents);
99
- return results;
160
+ Set<View> parents = new HashSet<View>();
161
+ for (View v : allVisibleViews())
162
+ {
163
+ View parent = viewFetcher.getTopParent(v);
164
+ System.out.println(parent);
165
+ parents.add(parent);
166
+ }
167
+ List<View> results = new ArrayList<View>();
168
+ results.addAll(parents);
169
+ return results;
100
170
  }
171
+
172
+
101
173
  }
@@ -1,12 +1,15 @@
1
- BOOL=4
2
- ESC_SEQ=5
3
- FILTER_COLON=6
4
- HEX_DIGIT=7
5
- INT=8
6
- NAME=9
7
- NIL=10
8
- OCTAL_ESC=11
9
- QUALIFIED_NAME=12
10
- STRING=13
11
- UNICODE_ESC=14
12
- WHITE=15
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
@@ -0,0 +1,22 @@
1
+ package sh.calaba.instrumentationbackend.query;
2
+
3
+ import java.util.HashMap;
4
+ import java.util.Map;
5
+
6
+
7
+ public class UIQueryResultVoid {
8
+ public static final UIQueryResultVoid instance = new UIQueryResultVoid();
9
+
10
+ private UIQueryResultVoid() {}
11
+
12
+ @SuppressWarnings({ "rawtypes", "unchecked" })
13
+ public Object asMap(String methodName, Object receiver,
14
+ String errorMessage) {
15
+ Map map = new HashMap();
16
+ map.put("error", errorMessage);
17
+ map.put("methodName", methodName);
18
+ map.put("receiverClass", receiver.getClass().getName());
19
+ map.put("receiverString", receiver.toString());
20
+ return map;
21
+ }
22
+ }
@@ -2,8 +2,10 @@ package sh.calaba.instrumentationbackend.query;
2
2
 
3
3
  import java.util.HashMap;
4
4
  import java.util.Map;
5
+ import java.util.Map.Entry;
5
6
 
6
7
  import sh.calaba.instrumentationbackend.InstrumentationBackend;
8
+ import sh.calaba.instrumentationbackend.query.ast.UIQueryUtils;
7
9
  import android.content.res.Resources;
8
10
  import android.view.View;
9
11
  import android.widget.Button;
@@ -13,12 +15,10 @@ import android.widget.TextView;
13
15
  public class ViewMapper {
14
16
 
15
17
  @SuppressWarnings({ "rawtypes", "unchecked" })
16
- public static Object extractDataFromView(Object obj) {
17
- if (!(obj instanceof View)) {return obj;}
18
- View v = (View) obj;
18
+ public static Object extractDataFromView(View v) {
19
+
19
20
  Map data = new HashMap();
20
- data.put("class", v.getClass().getSimpleName());
21
- data.put("qualified_class", v.getClass().getName());
21
+ data.put("class", v.getClass().getName());
22
22
  data.put("description", v.toString());
23
23
  CharSequence description = v.getContentDescription();
24
24
  data.put("contentDescription", description != null ? description.toString() : null);
@@ -33,16 +33,20 @@ public class ViewMapper {
33
33
  }
34
34
  data.put("id", id);
35
35
 
36
- Map frame = new HashMap();
36
+ Map rect = new HashMap();
37
37
  int[] location = new int[2];
38
38
  v.getLocationOnScreen(location);
39
39
 
40
- frame.put("x", location[0]);
41
- frame.put("y", location[1]);
42
- frame.put("width", v.getWidth());
43
- frame.put("height", v.getHeight());
40
+ rect.put("x", location[0]);
41
+ rect.put("y", location[1]);
42
+
43
+ rect.put("center_x", location[0] + v.getWidth()/2.0);
44
+ rect.put("center_y", location[1] + v.getHeight()/2.0);
45
+
46
+ rect.put("width", v.getWidth());
47
+ rect.put("height", v.getHeight());
44
48
 
45
- data.put("frame", frame);
49
+ data.put("rect", rect);
46
50
 
47
51
  if (v instanceof Button) {
48
52
  Button b = (Button) v;
@@ -60,4 +64,27 @@ public class ViewMapper {
60
64
 
61
65
  }
62
66
 
67
+ @SuppressWarnings({ "unchecked", "rawtypes" })
68
+ public static Object mapView(Object o) {
69
+ if (o instanceof View) {
70
+ return extractDataFromView((View) o);
71
+ }
72
+ else if (o instanceof Map) {
73
+ Map copy = new HashMap();
74
+ for (Object e : ((Map) o).entrySet()) {
75
+ Map.Entry entry = (Entry) e;
76
+ Object value = entry.getValue();
77
+ if (value instanceof View) {
78
+ copy.put(entry.getKey(), UIQueryUtils.getId((View) value));
79
+ }
80
+ else {
81
+ copy.put(entry.getKey(),entry.getValue());
82
+ }
83
+ }
84
+
85
+ return copy;
86
+ }
87
+ return o;
88
+ }
89
+
63
90
  }
@@ -1,4 +1,4 @@
1
- // $ANTLR 3.4 antlr/UIQuery.g 2012-12-27 13:48:21
1
+ // $ANTLR 3.4 antlr/UIQuery.g 2013-01-07 13:26:07
2
2
 
3
3
  package sh.calaba.instrumentationbackend.query.antlr;
4
4
 
@@ -11,18 +11,21 @@ import java.util.ArrayList;
11
11
  @SuppressWarnings({"all", "warnings", "unchecked"})
12
12
  public class UIQueryLexer extends Lexer {
13
13
  public static final int EOF=-1;
14
- public static final int BOOL=4;
15
- public static final int ESC_SEQ=5;
16
- public static final int FILTER_COLON=6;
17
- public static final int HEX_DIGIT=7;
18
- public static final int INT=8;
19
- public static final int NAME=9;
20
- public static final int NIL=10;
21
- public static final int OCTAL_ESC=11;
22
- public static final int QUALIFIED_NAME=12;
23
- public static final int STRING=13;
24
- public static final int UNICODE_ESC=14;
25
- public static final int WHITE=15;
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;
26
29
 
27
30
  // delegates
28
31
  // delegators
@@ -39,18 +42,39 @@ public class UIQueryLexer extends Lexer {
39
42
  }
40
43
  public String getGrammarFileName() { return "antlr/UIQuery.g"; }
41
44
 
45
+ // $ANTLR start "WILDCARD"
46
+ public final void mWILDCARD() throws RecognitionException {
47
+ try {
48
+ int _type = WILDCARD;
49
+ int _channel = DEFAULT_TOKEN_CHANNEL;
50
+ // antlr/UIQuery.g:43:10: ( '*' )
51
+ // antlr/UIQuery.g:43:12: '*'
52
+ {
53
+ match('*');
54
+
55
+ }
56
+
57
+ state.type = _type;
58
+ state.channel = _channel;
59
+ }
60
+ finally {
61
+ // do for sure before leaving
62
+ }
63
+ }
64
+ // $ANTLR end "WILDCARD"
65
+
42
66
  // $ANTLR start "QUALIFIED_NAME"
43
67
  public final void mQUALIFIED_NAME() throws RecognitionException {
44
68
  try {
45
69
  int _type = QUALIFIED_NAME;
46
70
  int _channel = DEFAULT_TOKEN_CHANNEL;
47
- // antlr/UIQuery.g:43:16: ( NAME ( '.' NAME )+ )
48
- // antlr/UIQuery.g:43:18: NAME ( '.' NAME )+
71
+ // antlr/UIQuery.g:45:16: ( NAME ( '.' NAME )+ )
72
+ // antlr/UIQuery.g:45:18: NAME ( '.' NAME )+
49
73
  {
50
74
  mNAME();
51
75
 
52
76
 
53
- // antlr/UIQuery.g:43:23: ( '.' NAME )+
77
+ // antlr/UIQuery.g:45:23: ( '.' NAME )+
54
78
  int cnt1=0;
55
79
  loop1:
56
80
  do {
@@ -64,7 +88,7 @@ public class UIQueryLexer extends Lexer {
64
88
 
65
89
  switch (alt1) {
66
90
  case 1 :
67
- // antlr/UIQuery.g:43:24: '.' NAME
91
+ // antlr/UIQuery.g:45:24: '.' NAME
68
92
  {
69
93
  match('.');
70
94
 
@@ -95,13 +119,59 @@ public class UIQueryLexer extends Lexer {
95
119
  }
96
120
  // $ANTLR end "QUALIFIED_NAME"
97
121
 
122
+ // $ANTLR start "ALL"
123
+ public final void mALL() throws RecognitionException {
124
+ try {
125
+ int _type = ALL;
126
+ int _channel = DEFAULT_TOKEN_CHANNEL;
127
+ // antlr/UIQuery.g:49:5: ( 'all' )
128
+ // antlr/UIQuery.g:49:7: 'all'
129
+ {
130
+ match("all");
131
+
132
+
133
+
134
+ }
135
+
136
+ state.type = _type;
137
+ state.channel = _channel;
138
+ }
139
+ finally {
140
+ // do for sure before leaving
141
+ }
142
+ }
143
+ // $ANTLR end "ALL"
144
+
145
+ // $ANTLR start "VISIBLE"
146
+ public final void mVISIBLE() throws RecognitionException {
147
+ try {
148
+ int _type = VISIBLE;
149
+ int _channel = DEFAULT_TOKEN_CHANNEL;
150
+ // antlr/UIQuery.g:51:9: ( 'visible' )
151
+ // antlr/UIQuery.g:51:11: 'visible'
152
+ {
153
+ match("visible");
154
+
155
+
156
+
157
+ }
158
+
159
+ state.type = _type;
160
+ state.channel = _channel;
161
+ }
162
+ finally {
163
+ // do for sure before leaving
164
+ }
165
+ }
166
+ // $ANTLR end "VISIBLE"
167
+
98
168
  // $ANTLR start "FILTER_COLON"
99
169
  public final void mFILTER_COLON() throws RecognitionException {
100
170
  try {
101
171
  int _type = FILTER_COLON;
102
172
  int _channel = DEFAULT_TOKEN_CHANNEL;
103
- // antlr/UIQuery.g:47:15: ( ':' )
104
- // antlr/UIQuery.g:47:17: ':'
173
+ // antlr/UIQuery.g:56:15: ( ':' )
174
+ // antlr/UIQuery.g:56:17: ':'
105
175
  {
106
176
  match(':');
107
177
 
@@ -121,10 +191,10 @@ public class UIQueryLexer extends Lexer {
121
191
  try {
122
192
  int _type = INT;
123
193
  int _channel = DEFAULT_TOKEN_CHANNEL;
124
- // antlr/UIQuery.g:51:5: ( ( '0' .. '9' )+ )
125
- // antlr/UIQuery.g:51:7: ( '0' .. '9' )+
194
+ // antlr/UIQuery.g:60:5: ( ( '0' .. '9' )+ )
195
+ // antlr/UIQuery.g:60:7: ( '0' .. '9' )+
126
196
  {
127
- // antlr/UIQuery.g:51:7: ( '0' .. '9' )+
197
+ // antlr/UIQuery.g:60:7: ( '0' .. '9' )+
128
198
  int cnt2=0;
129
199
  loop2:
130
200
  do {
@@ -179,7 +249,7 @@ public class UIQueryLexer extends Lexer {
179
249
  try {
180
250
  int _type = BOOL;
181
251
  int _channel = DEFAULT_TOKEN_CHANNEL;
182
- // antlr/UIQuery.g:54:6: ( 'true' | 'false' )
252
+ // antlr/UIQuery.g:63:6: ( 'true' | 'false' )
183
253
  int alt3=2;
184
254
  int LA3_0 = input.LA(1);
185
255
 
@@ -198,7 +268,7 @@ public class UIQueryLexer extends Lexer {
198
268
  }
199
269
  switch (alt3) {
200
270
  case 1 :
201
- // antlr/UIQuery.g:54:8: 'true'
271
+ // antlr/UIQuery.g:63:8: 'true'
202
272
  {
203
273
  match("true");
204
274
 
@@ -207,7 +277,7 @@ public class UIQueryLexer extends Lexer {
207
277
  }
208
278
  break;
209
279
  case 2 :
210
- // antlr/UIQuery.g:54:17: 'false'
280
+ // antlr/UIQuery.g:63:17: 'false'
211
281
  {
212
282
  match("false");
213
283
 
@@ -231,7 +301,7 @@ public class UIQueryLexer extends Lexer {
231
301
  try {
232
302
  int _type = NIL;
233
303
  int _channel = DEFAULT_TOKEN_CHANNEL;
234
- // antlr/UIQuery.g:57:5: ( 'nil' | 'null' )
304
+ // antlr/UIQuery.g:66:5: ( 'nil' | 'null' )
235
305
  int alt4=2;
236
306
  int LA4_0 = input.LA(1);
237
307
 
@@ -261,7 +331,7 @@ public class UIQueryLexer extends Lexer {
261
331
  }
262
332
  switch (alt4) {
263
333
  case 1 :
264
- // antlr/UIQuery.g:57:7: 'nil'
334
+ // antlr/UIQuery.g:66:7: 'nil'
265
335
  {
266
336
  match("nil");
267
337
 
@@ -270,7 +340,7 @@ public class UIQueryLexer extends Lexer {
270
340
  }
271
341
  break;
272
342
  case 2 :
273
- // antlr/UIQuery.g:57:15: 'null'
343
+ // antlr/UIQuery.g:66:15: 'null'
274
344
  {
275
345
  match("null");
276
346
 
@@ -294,8 +364,8 @@ public class UIQueryLexer extends Lexer {
294
364
  try {
295
365
  int _type = NAME;
296
366
  int _channel = DEFAULT_TOKEN_CHANNEL;
297
- // antlr/UIQuery.g:60:7: ( ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' )* )
298
- // antlr/UIQuery.g:60:9: ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' )*
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' | '_' )*
299
369
  {
300
370
  if ( (input.LA(1) >= 'A' && input.LA(1) <= 'Z')||input.LA(1)=='_'||(input.LA(1) >= 'a' && input.LA(1) <= 'z') ) {
301
371
  input.consume();
@@ -307,7 +377,7 @@ public class UIQueryLexer extends Lexer {
307
377
  }
308
378
 
309
379
 
310
- // antlr/UIQuery.g:60:33: ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' )*
380
+ // antlr/UIQuery.g:69:33: ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' )*
311
381
  loop5:
312
382
  do {
313
383
  int alt5=2;
@@ -357,12 +427,12 @@ public class UIQueryLexer extends Lexer {
357
427
  try {
358
428
  int _type = STRING;
359
429
  int _channel = DEFAULT_TOKEN_CHANNEL;
360
- // antlr/UIQuery.g:64:5: ( '\\'' ( ESC_SEQ |~ ( '\\\\' | '\\'' ) )* '\\'' )
361
- // antlr/UIQuery.g:64:8: '\\'' ( ESC_SEQ |~ ( '\\\\' | '\\'' ) )* '\\''
430
+ // antlr/UIQuery.g:73:5: ( '\\'' ( ESC_SEQ |~ ( '\\\\' | '\\'' ) )* '\\'' )
431
+ // antlr/UIQuery.g:73:8: '\\'' ( ESC_SEQ |~ ( '\\\\' | '\\'' ) )* '\\''
362
432
  {
363
433
  match('\'');
364
434
 
365
- // antlr/UIQuery.g:64:13: ( ESC_SEQ |~ ( '\\\\' | '\\'' ) )*
435
+ // antlr/UIQuery.g:73:13: ( ESC_SEQ |~ ( '\\\\' | '\\'' ) )*
366
436
  loop6:
367
437
  do {
368
438
  int alt6=3;
@@ -378,7 +448,7 @@ public class UIQueryLexer extends Lexer {
378
448
 
379
449
  switch (alt6) {
380
450
  case 1 :
381
- // antlr/UIQuery.g:64:15: ESC_SEQ
451
+ // antlr/UIQuery.g:73:15: ESC_SEQ
382
452
  {
383
453
  mESC_SEQ();
384
454
 
@@ -386,7 +456,7 @@ public class UIQueryLexer extends Lexer {
386
456
  }
387
457
  break;
388
458
  case 2 :
389
- // antlr/UIQuery.g:64:25: ~ ( '\\\\' | '\\'' )
459
+ // antlr/UIQuery.g:73:25: ~ ( '\\\\' | '\\'' )
390
460
  {
391
461
  if ( (input.LA(1) >= '\u0000' && input.LA(1) <= '&')||(input.LA(1) >= '(' && input.LA(1) <= '[')||(input.LA(1) >= ']' && input.LA(1) <= '\uFFFF') ) {
392
462
  input.consume();
@@ -425,10 +495,10 @@ public class UIQueryLexer extends Lexer {
425
495
  try {
426
496
  int _type = WHITE;
427
497
  int _channel = DEFAULT_TOKEN_CHANNEL;
428
- // antlr/UIQuery.g:67:9: ( ( ' ' )+ )
429
- // antlr/UIQuery.g:67:11: ( ' ' )+
498
+ // antlr/UIQuery.g:76:9: ( ( ' ' )+ )
499
+ // antlr/UIQuery.g:76:11: ( ' ' )+
430
500
  {
431
- // antlr/UIQuery.g:67:11: ( ' ' )+
501
+ // antlr/UIQuery.g:76:11: ( ' ' )+
432
502
  int cnt7=0;
433
503
  loop7:
434
504
  do {
@@ -442,7 +512,7 @@ public class UIQueryLexer extends Lexer {
442
512
 
443
513
  switch (alt7) {
444
514
  case 1 :
445
- // antlr/UIQuery.g:67:11: ' '
515
+ // antlr/UIQuery.g:76:11: ' '
446
516
  {
447
517
  match(' ');
448
518
 
@@ -473,7 +543,7 @@ public class UIQueryLexer extends Lexer {
473
543
  // $ANTLR start "HEX_DIGIT"
474
544
  public final void mHEX_DIGIT() throws RecognitionException {
475
545
  try {
476
- // antlr/UIQuery.g:70:11: ( ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' ) )
546
+ // antlr/UIQuery.g:79:11: ( ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' ) )
477
547
  // antlr/UIQuery.g:
478
548
  {
479
549
  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') ) {
@@ -499,7 +569,7 @@ public class UIQueryLexer extends Lexer {
499
569
  // $ANTLR start "ESC_SEQ"
500
570
  public final void mESC_SEQ() throws RecognitionException {
501
571
  try {
502
- // antlr/UIQuery.g:74:5: ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\'' | '\\\\' ) | UNICODE_ESC | OCTAL_ESC )
572
+ // antlr/UIQuery.g:83:5: ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\'' | '\\\\' ) | UNICODE_ESC | OCTAL_ESC )
503
573
  int alt8=3;
504
574
  int LA8_0 = input.LA(1);
505
575
 
@@ -551,7 +621,7 @@ public class UIQueryLexer extends Lexer {
551
621
  }
552
622
  switch (alt8) {
553
623
  case 1 :
554
- // antlr/UIQuery.g:74:9: '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\'' | '\\\\' )
624
+ // antlr/UIQuery.g:83:9: '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\'' | '\\\\' )
555
625
  {
556
626
  match('\\');
557
627
 
@@ -568,7 +638,7 @@ public class UIQueryLexer extends Lexer {
568
638
  }
569
639
  break;
570
640
  case 2 :
571
- // antlr/UIQuery.g:75:9: UNICODE_ESC
641
+ // antlr/UIQuery.g:84:9: UNICODE_ESC
572
642
  {
573
643
  mUNICODE_ESC();
574
644
 
@@ -576,7 +646,7 @@ public class UIQueryLexer extends Lexer {
576
646
  }
577
647
  break;
578
648
  case 3 :
579
- // antlr/UIQuery.g:76:9: OCTAL_ESC
649
+ // antlr/UIQuery.g:85:9: OCTAL_ESC
580
650
  {
581
651
  mOCTAL_ESC();
582
652
 
@@ -596,7 +666,7 @@ public class UIQueryLexer extends Lexer {
596
666
  // $ANTLR start "OCTAL_ESC"
597
667
  public final void mOCTAL_ESC() throws RecognitionException {
598
668
  try {
599
- // antlr/UIQuery.g:81:5: ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) )
669
+ // antlr/UIQuery.g:90:5: ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) )
600
670
  int alt9=3;
601
671
  int LA9_0 = input.LA(1);
602
672
 
@@ -647,7 +717,7 @@ public class UIQueryLexer extends Lexer {
647
717
  }
648
718
  switch (alt9) {
649
719
  case 1 :
650
- // antlr/UIQuery.g:81:9: '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' )
720
+ // antlr/UIQuery.g:90:9: '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' )
651
721
  {
652
722
  match('\\');
653
723
 
@@ -684,7 +754,7 @@ public class UIQueryLexer extends Lexer {
684
754
  }
685
755
  break;
686
756
  case 2 :
687
- // antlr/UIQuery.g:82:9: '\\\\' ( '0' .. '7' ) ( '0' .. '7' )
757
+ // antlr/UIQuery.g:91:9: '\\\\' ( '0' .. '7' ) ( '0' .. '7' )
688
758
  {
689
759
  match('\\');
690
760
 
@@ -711,7 +781,7 @@ public class UIQueryLexer extends Lexer {
711
781
  }
712
782
  break;
713
783
  case 3 :
714
- // antlr/UIQuery.g:83:9: '\\\\' ( '0' .. '7' )
784
+ // antlr/UIQuery.g:92:9: '\\\\' ( '0' .. '7' )
715
785
  {
716
786
  match('\\');
717
787
 
@@ -740,8 +810,8 @@ public class UIQueryLexer extends Lexer {
740
810
  // $ANTLR start "UNICODE_ESC"
741
811
  public final void mUNICODE_ESC() throws RecognitionException {
742
812
  try {
743
- // antlr/UIQuery.g:88:5: ( '\\\\' 'u' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT )
744
- // antlr/UIQuery.g:88:9: '\\\\' 'u' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT
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
745
815
  {
746
816
  match('\\');
747
817
 
@@ -770,68 +840,92 @@ public class UIQueryLexer extends Lexer {
770
840
  // $ANTLR end "UNICODE_ESC"
771
841
 
772
842
  public void mTokens() throws RecognitionException {
773
- // antlr/UIQuery.g:1:8: ( QUALIFIED_NAME | FILTER_COLON | INT | BOOL | NIL | NAME | STRING | WHITE )
774
- int alt10=8;
843
+ // antlr/UIQuery.g:1:8: ( WILDCARD | QUALIFIED_NAME | ALL | VISIBLE | FILTER_COLON | INT | BOOL | NIL | NAME | STRING | WHITE )
844
+ int alt10=11;
775
845
  alt10 = dfa10.predict(input);
776
846
  switch (alt10) {
777
847
  case 1 :
778
- // antlr/UIQuery.g:1:10: QUALIFIED_NAME
848
+ // antlr/UIQuery.g:1:10: WILDCARD
779
849
  {
780
- mQUALIFIED_NAME();
850
+ mWILDCARD();
781
851
 
782
852
 
783
853
  }
784
854
  break;
785
855
  case 2 :
786
- // antlr/UIQuery.g:1:25: FILTER_COLON
856
+ // antlr/UIQuery.g:1:19: QUALIFIED_NAME
787
857
  {
788
- mFILTER_COLON();
858
+ mQUALIFIED_NAME();
789
859
 
790
860
 
791
861
  }
792
862
  break;
793
863
  case 3 :
794
- // antlr/UIQuery.g:1:38: INT
864
+ // antlr/UIQuery.g:1:34: ALL
795
865
  {
796
- mINT();
866
+ mALL();
797
867
 
798
868
 
799
869
  }
800
870
  break;
801
871
  case 4 :
802
- // antlr/UIQuery.g:1:42: BOOL
872
+ // antlr/UIQuery.g:1:38: VISIBLE
803
873
  {
804
- mBOOL();
874
+ mVISIBLE();
805
875
 
806
876
 
807
877
  }
808
878
  break;
809
879
  case 5 :
810
- // antlr/UIQuery.g:1:47: NIL
880
+ // antlr/UIQuery.g:1:46: FILTER_COLON
811
881
  {
812
- mNIL();
882
+ mFILTER_COLON();
813
883
 
814
884
 
815
885
  }
816
886
  break;
817
887
  case 6 :
818
- // antlr/UIQuery.g:1:51: NAME
888
+ // antlr/UIQuery.g:1:59: INT
819
889
  {
820
- mNAME();
890
+ mINT();
821
891
 
822
892
 
823
893
  }
824
894
  break;
825
895
  case 7 :
826
- // antlr/UIQuery.g:1:56: STRING
896
+ // antlr/UIQuery.g:1:63: BOOL
827
897
  {
828
- mSTRING();
898
+ mBOOL();
829
899
 
830
900
 
831
901
  }
832
902
  break;
833
903
  case 8 :
834
- // antlr/UIQuery.g:1:63: WHITE
904
+ // antlr/UIQuery.g:1:68: NIL
905
+ {
906
+ mNIL();
907
+
908
+
909
+ }
910
+ break;
911
+ case 9 :
912
+ // antlr/UIQuery.g:1:72: NAME
913
+ {
914
+ mNAME();
915
+
916
+
917
+ }
918
+ break;
919
+ case 10 :
920
+ // antlr/UIQuery.g:1:77: STRING
921
+ {
922
+ mSTRING();
923
+
924
+
925
+ }
926
+ break;
927
+ case 11 :
928
+ // antlr/UIQuery.g:1:84: WHITE
835
929
  {
836
930
  mWHITE();
837
931
 
@@ -846,60 +940,83 @@ public class UIQueryLexer extends Lexer {
846
940
 
847
941
  protected DFA10 dfa10 = new DFA10(this);
848
942
  static final String DFA10_eotS =
849
- "\1\uffff\1\13\2\uffff\3\13\2\uffff\2\13\2\uffff\5\13\1\26\1\13\1"+
850
- "\30\1\13\1\uffff\1\26\1\uffff\1\30";
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";
851
946
  static final String DFA10_eofS =
852
- "\32\uffff";
947
+ "\47\uffff";
853
948
  static final String DFA10_minS =
854
- "\1\40\1\56\2\uffff\3\56\2\uffff\2\56\2\uffff\11\56\1\uffff\1\56"+
855
- "\1\uffff\1\56";
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";
856
951
  static final String DFA10_maxS =
857
- "\2\172\2\uffff\3\172\2\uffff\2\172\2\uffff\11\172\1\uffff\1\172"+
858
- "\1\uffff\1\172";
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";
859
954
  static final String DFA10_acceptS =
860
- "\2\uffff\1\2\1\3\3\uffff\1\7\1\10\2\uffff\1\6\1\1\11\uffff\1\5\1"+
861
- "\uffff\1\4\1\uffff";
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";
862
957
  static final String DFA10_specialS =
863
- "\32\uffff}>";
958
+ "\47\uffff}>";
864
959
  static final String[] DFA10_transitionS = {
865
- "\1\10\6\uffff\1\7\10\uffff\12\3\1\2\6\uffff\32\6\4\uffff\1\6"+
866
- "\1\uffff\5\6\1\4\7\6\1\5\5\6\1\1\6\6",
867
- "\1\14\1\uffff\12\12\7\uffff\32\12\4\uffff\1\12\1\uffff\21\12"+
868
- "\1\11\10\12",
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",
963
+ "",
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",
970
+ "",
869
971
  "",
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",
870
977
  "",
871
- "\1\14\1\uffff\12\12\7\uffff\32\12\4\uffff\1\12\1\uffff\1\15"+
872
- "\31\12",
873
- "\1\14\1\uffff\12\12\7\uffff\32\12\4\uffff\1\12\1\uffff\10\12"+
874
- "\1\16\13\12\1\17\5\12",
875
- "\1\14\1\uffff\12\12\7\uffff\32\12\4\uffff\1\12\1\uffff\32\12",
876
978
  "",
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",
877
982
  "",
878
- "\1\14\1\uffff\12\12\7\uffff\32\12\4\uffff\1\12\1\uffff\24\12"+
879
- "\1\20\5\12",
880
- "\1\14\1\uffff\12\12\7\uffff\32\12\4\uffff\1\12\1\uffff\32\12",
881
983
  "",
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",
882
1004
  "",
883
- "\1\14\1\uffff\12\12\7\uffff\32\12\4\uffff\1\12\1\uffff\13\12"+
884
- "\1\21\16\12",
885
- "\1\14\1\uffff\12\12\7\uffff\32\12\4\uffff\1\12\1\uffff\13\12"+
886
- "\1\22\16\12",
887
- "\1\14\1\uffff\12\12\7\uffff\32\12\4\uffff\1\12\1\uffff\13\12"+
888
- "\1\23\16\12",
889
- "\1\14\1\uffff\12\12\7\uffff\32\12\4\uffff\1\12\1\uffff\4\12"+
890
- "\1\24\25\12",
891
- "\1\14\1\uffff\12\12\7\uffff\32\12\4\uffff\1\12\1\uffff\22\12"+
892
- "\1\25\7\12",
893
- "\1\14\1\uffff\12\12\7\uffff\32\12\4\uffff\1\12\1\uffff\32\12",
894
- "\1\14\1\uffff\12\12\7\uffff\32\12\4\uffff\1\12\1\uffff\13\12"+
895
- "\1\27\16\12",
896
- "\1\14\1\uffff\12\12\7\uffff\32\12\4\uffff\1\12\1\uffff\32\12",
897
- "\1\14\1\uffff\12\12\7\uffff\32\12\4\uffff\1\12\1\uffff\4\12"+
898
- "\1\31\25\12",
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",
899
1010
  "",
900
- "\1\14\1\uffff\12\12\7\uffff\32\12\4\uffff\1\12\1\uffff\32\12",
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",
901
1014
  "",
902
- "\1\14\1\uffff\12\12\7\uffff\32\12\4\uffff\1\12\1\uffff\32\12"
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
+ ""
903
1020
  };
904
1021
 
905
1022
  static final short[] DFA10_eot = DFA.unpackEncodedString(DFA10_eotS);
@@ -932,7 +1049,7 @@ public class UIQueryLexer extends Lexer {
932
1049
  this.transition = DFA10_transition;
933
1050
  }
934
1051
  public String getDescription() {
935
- return "1:1: Tokens : ( QUALIFIED_NAME | FILTER_COLON | INT | BOOL | NIL | NAME | STRING | WHITE );";
1052
+ return "1:1: Tokens : ( WILDCARD | QUALIFIED_NAME | ALL | VISIBLE | FILTER_COLON | INT | BOOL | NIL | NAME | STRING | WHITE );";
936
1053
  }
937
1054
  }
938
1055