r - utils.go
1 package r
2
3 // WrapQuery takes one of many types and wraps it in a *QueryExpression
4 //
5 // The accepted types/pointers are as follows:
6 //
7 // QueryExpression
8 // *QueryExpression
9 // AssignmentExpression
10 // *AssignmentExpression
11 // FormulaeExpression
12 // *FormulaeExpression
13 // OrExpression
14 // *OrExpression
15 // AndExpression
16 // *AndExpression
17 // NotExpression
18 // *NotExpression
19 // RelationalExpression
20 // *RelationalExpression
21 // AdditionExpression
22 // *AdditionExpression
23 // MultiplicationExpression
24 // *MultiplicationExpression
25 // PipeOrSpecialExpression
26 // *PipeOrSpecialExpression
27 // SequenceExpression
28 // *SequenceExpression
29 // UnaryExpression
30 // *UnaryExpression
31 // ExponentiationExpression
32 // *ExponentiationExpression
33 // SubsetExpression
34 // *SubsetExpression
35 // ScopeExpression
36 // *ScopeExpression
37 // IndexOrCallExpression
38 // *IndexOrCallExpression
39 // SimpleExpression
40 // *SimpleExpression
41 // CompoundExpression
42 // *CompoundExpression
43 func WrapQuery(p QueryWrappable) *QueryExpression {
44 if q, ok := p.(*QueryExpression); ok {
45 return q
46 }
47
48 if q, ok := p.(QueryExpression); ok {
49 return &q
50 }
51
52 q := new(QueryExpression)
53
54 switch p := p.(type) {
55 case *AssignmentExpression:
56 q.AssignmentExpression = p
57
58 goto AssignmentExpression
59 case AssignmentExpression:
60 q.AssignmentExpression = &p
61
62 goto AssignmentExpression
63 default:
64 q.AssignmentExpression = new(AssignmentExpression)
65
66 switch p := p.(type) {
67 case *FormulaeExpression:
68 q.AssignmentExpression.FormulaeExpression = *p
69
70 goto FormulaeExpression
71 case FormulaeExpression:
72 q.AssignmentExpression.FormulaeExpression = p
73
74 goto FormulaeExpression
75 case *OrExpression:
76 q.AssignmentExpression.FormulaeExpression.OrExpression = p
77
78 goto OrExpression
79 case OrExpression:
80 q.AssignmentExpression.FormulaeExpression.OrExpression = &p
81
82 goto OrExpression
83 default:
84 q.AssignmentExpression.FormulaeExpression.OrExpression = new(OrExpression)
85
86 switch p := p.(type) {
87 case *AndExpression:
88 q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression = *p
89
90 goto AndExpression
91 case AndExpression:
92 q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression = p
93
94 goto AndExpression
95 case *NotExpression:
96 q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression = *p
97
98 goto NotExpression
99 case NotExpression:
100 q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression = p
101
102 goto NotExpression
103 case *RelationalExpression:
104 q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression = *p
105
106 goto RelationalExpression
107 case RelationalExpression:
108 q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression = p
109
110 goto RelationalExpression
111 case *AdditionExpression:
112 q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression = *p
113
114 goto AdditionExpression
115 case AdditionExpression:
116 q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression = p
117
118 goto AdditionExpression
119 case *MultiplicationExpression:
120 q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.MultiplicationExpression = *p
121
122 goto MultiplicationExpression
123 case MultiplicationExpression:
124 q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.MultiplicationExpression = p
125
126 goto MultiplicationExpression
127 case *PipeOrSpecialExpression:
128 q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.MultiplicationExpression.PipeOrSpecialExpression = *p
129
130 goto PipeOrSpecialExpression
131 case PipeOrSpecialExpression:
132 q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.MultiplicationExpression.PipeOrSpecialExpression = p
133
134 goto PipeOrSpecialExpression
135 case *SequenceExpression:
136 q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.MultiplicationExpression.PipeOrSpecialExpression.SequenceExpression = *p
137
138 goto SequenceExpression
139 case SequenceExpression:
140 q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.MultiplicationExpression.PipeOrSpecialExpression.SequenceExpression = p
141
142 goto SequenceExpression
143 case *UnaryExpression:
144 q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.MultiplicationExpression.PipeOrSpecialExpression.SequenceExpression.UnaryExpression = *p
145
146 goto UnaryExpression
147 case UnaryExpression:
148 q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.MultiplicationExpression.PipeOrSpecialExpression.SequenceExpression.UnaryExpression = p
149
150 goto UnaryExpression
151 case *ExponentiationExpression:
152 q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.MultiplicationExpression.PipeOrSpecialExpression.SequenceExpression.UnaryExpression.ExponentiationExpression = *p
153
154 goto ExponentiationExpression
155 case ExponentiationExpression:
156 q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.MultiplicationExpression.PipeOrSpecialExpression.SequenceExpression.UnaryExpression.ExponentiationExpression = p
157
158 goto ExponentiationExpression
159 case *SubsetExpression:
160 q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.MultiplicationExpression.PipeOrSpecialExpression.SequenceExpression.UnaryExpression.ExponentiationExpression.SubsetExpression = *p
161
162 goto SubsetExpression
163 case SubsetExpression:
164 q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.MultiplicationExpression.PipeOrSpecialExpression.SequenceExpression.UnaryExpression.ExponentiationExpression.SubsetExpression = p
165
166 goto SubsetExpression
167 case *ScopeExpression:
168 q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.MultiplicationExpression.PipeOrSpecialExpression.SequenceExpression.UnaryExpression.ExponentiationExpression.SubsetExpression.ScopeExpression = *p
169
170 goto ScopeExpression
171 case ScopeExpression:
172 q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.MultiplicationExpression.PipeOrSpecialExpression.SequenceExpression.UnaryExpression.ExponentiationExpression.SubsetExpression.ScopeExpression = p
173
174 goto ScopeExpression
175 case *IndexOrCallExpression:
176 q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.MultiplicationExpression.PipeOrSpecialExpression.SequenceExpression.UnaryExpression.ExponentiationExpression.SubsetExpression.ScopeExpression.IndexOrCallExpression = *p
177
178 goto IndexOrCallExpression
179 case IndexOrCallExpression:
180 q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.MultiplicationExpression.PipeOrSpecialExpression.SequenceExpression.UnaryExpression.ExponentiationExpression.SubsetExpression.ScopeExpression.IndexOrCallExpression = p
181
182 goto IndexOrCallExpression
183 case *SimpleExpression:
184 q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.MultiplicationExpression.PipeOrSpecialExpression.SequenceExpression.UnaryExpression.ExponentiationExpression.SubsetExpression.ScopeExpression.IndexOrCallExpression.SimpleExpression = p
185
186 goto SimpleExpression
187 case SimpleExpression:
188 q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.MultiplicationExpression.PipeOrSpecialExpression.SequenceExpression.UnaryExpression.ExponentiationExpression.SubsetExpression.ScopeExpression.IndexOrCallExpression.SimpleExpression = &p
189
190 goto SimpleExpression
191 case *CompoundExpression:
192 q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.MultiplicationExpression.PipeOrSpecialExpression.SequenceExpression.UnaryExpression.ExponentiationExpression.SubsetExpression.ScopeExpression.IndexOrCallExpression.SimpleExpression = &SimpleExpression{
193 CompoundExpression: p,
194 Tokens: p.Tokens,
195 }
196
197 goto SimpleExpression
198 case CompoundExpression:
199 q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.MultiplicationExpression.PipeOrSpecialExpression.SequenceExpression.UnaryExpression.ExponentiationExpression.SubsetExpression.ScopeExpression.IndexOrCallExpression.SimpleExpression = &SimpleExpression{
200 CompoundExpression: &p,
201 Tokens: p.Tokens,
202 }
203
204 goto SimpleExpression
205 }
206 }
207 }
208
209 SimpleExpression:
210 q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.MultiplicationExpression.PipeOrSpecialExpression.SequenceExpression.UnaryExpression.ExponentiationExpression.SubsetExpression.ScopeExpression.IndexOrCallExpression.Tokens = q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.MultiplicationExpression.PipeOrSpecialExpression.SequenceExpression.UnaryExpression.ExponentiationExpression.SubsetExpression.ScopeExpression.IndexOrCallExpression.SimpleExpression.Tokens
211 IndexOrCallExpression:
212 q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.MultiplicationExpression.PipeOrSpecialExpression.SequenceExpression.UnaryExpression.ExponentiationExpression.SubsetExpression.ScopeExpression.Tokens = q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.MultiplicationExpression.PipeOrSpecialExpression.SequenceExpression.UnaryExpression.ExponentiationExpression.SubsetExpression.ScopeExpression.IndexOrCallExpression.Tokens
213 ScopeExpression:
214 q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.MultiplicationExpression.PipeOrSpecialExpression.SequenceExpression.UnaryExpression.ExponentiationExpression.SubsetExpression.Tokens = q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.MultiplicationExpression.PipeOrSpecialExpression.SequenceExpression.UnaryExpression.ExponentiationExpression.SubsetExpression.ScopeExpression.Tokens
215 SubsetExpression:
216 q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.MultiplicationExpression.PipeOrSpecialExpression.SequenceExpression.UnaryExpression.ExponentiationExpression.Tokens = q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.MultiplicationExpression.PipeOrSpecialExpression.SequenceExpression.UnaryExpression.ExponentiationExpression.SubsetExpression.Tokens
217 ExponentiationExpression:
218 q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.MultiplicationExpression.PipeOrSpecialExpression.SequenceExpression.UnaryExpression.Tokens = q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.MultiplicationExpression.PipeOrSpecialExpression.SequenceExpression.UnaryExpression.ExponentiationExpression.Tokens
219 UnaryExpression:
220 q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.MultiplicationExpression.PipeOrSpecialExpression.SequenceExpression.Tokens = q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.MultiplicationExpression.PipeOrSpecialExpression.SequenceExpression.UnaryExpression.Tokens
221 SequenceExpression:
222 q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.MultiplicationExpression.PipeOrSpecialExpression.Tokens = q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.MultiplicationExpression.PipeOrSpecialExpression.SequenceExpression.Tokens
223 PipeOrSpecialExpression:
224 q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.MultiplicationExpression.Tokens = q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.MultiplicationExpression.PipeOrSpecialExpression.Tokens
225 MultiplicationExpression:
226 q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.Tokens = q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.MultiplicationExpression.Tokens
227 AdditionExpression:
228 q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.Tokens = q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.Tokens
229 RelationalExpression:
230 q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.Tokens = q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.Tokens
231 NotExpression:
232 q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.Tokens = q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.Tokens
233 AndExpression:
234 q.AssignmentExpression.FormulaeExpression.OrExpression.Tokens = q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.Tokens
235 OrExpression:
236 q.AssignmentExpression.FormulaeExpression.Tokens = q.AssignmentExpression.FormulaeExpression.OrExpression.Tokens
237 FormulaeExpression:
238 q.AssignmentExpression.Tokens = q.AssignmentExpression.FormulaeExpression.Tokens
239 AssignmentExpression:
240 q.Tokens = q.AssignmentExpression.Tokens
241
242 return q
243 }
244
245 // UnwrapQuery returns the first value up the QueryExpression chain that
246 // contains all of the information required to rebuild the lower chain.
247 //
248 // Possible returns types are as follows:
249 //
250 // *QueryExpression
251 // *AssignmentExpression
252 // *FormulaeExpression
253 // *OrExpression
254 // *AndExpression
255 // *NotExpression
256 // *RelationalExpression
257 // *AdditionExpression
258 // *MultiplicationExpression
259 // *PipeOrSpecialExpression
260 // *SequenceExpression
261 // *UnaryExpression
262 // *ExponentiationExpression
263 // *SubsetExpression
264 // *ScopeExpression
265 // *IndexOrCallExpression
266 // *SimpleExpression
267 // *CompoundExpression
268 func UnwrapQuery(q *QueryExpression) QueryWrappable {
269 if q == nil {
270 return nil
271 } else if q.QueryExpression != nil {
272 return q
273 } else if q.AssignmentExpression.AssignmentExpression != nil {
274 return q.AssignmentExpression
275 } else if q.AssignmentExpression.FormulaeExpression.FormulaeExpression != nil {
276 return &q.AssignmentExpression.FormulaeExpression
277 } else if q.AssignmentExpression.FormulaeExpression.OrExpression == nil {
278 return nil
279 } else if q.AssignmentExpression.FormulaeExpression.OrExpression.OrExpression != nil {
280 return q.AssignmentExpression.FormulaeExpression.OrExpression
281 } else if q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.AndExpression != nil {
282 return &q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression
283 } else if q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.Nots != 0 {
284 return &q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression
285 } else if q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.RelationalExpression != nil {
286 return &q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression
287 } else if q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.AdditionExpression != nil {
288 return &q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression
289 } else if q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.MultiplicationExpression.MultiplicationExpression != nil {
290 return &q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.MultiplicationExpression
291 } else if q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.MultiplicationExpression.PipeOrSpecialExpression.PipeOrSpecialExpression != nil {
292 return &q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.MultiplicationExpression.PipeOrSpecialExpression
293 } else if q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.MultiplicationExpression.PipeOrSpecialExpression.SequenceExpression.SequenceExpression != nil {
294 return &q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.MultiplicationExpression.PipeOrSpecialExpression.SequenceExpression
295 } else if len(q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.MultiplicationExpression.PipeOrSpecialExpression.SequenceExpression.UnaryExpression.UnaryType) != 0 {
296 return &q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.MultiplicationExpression.PipeOrSpecialExpression.SequenceExpression.UnaryExpression
297 } else if q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.MultiplicationExpression.PipeOrSpecialExpression.SequenceExpression.UnaryExpression.ExponentiationExpression.ExponentiationExpression != nil {
298 return &q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.MultiplicationExpression.PipeOrSpecialExpression.SequenceExpression.UnaryExpression.ExponentiationExpression
299 } else if q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.MultiplicationExpression.PipeOrSpecialExpression.SequenceExpression.UnaryExpression.ExponentiationExpression.SubsetExpression.SubsetExpression != nil {
300 return &q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.MultiplicationExpression.PipeOrSpecialExpression.SequenceExpression.UnaryExpression.ExponentiationExpression.SubsetExpression
301 } else if q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.MultiplicationExpression.PipeOrSpecialExpression.SequenceExpression.UnaryExpression.ExponentiationExpression.SubsetExpression.ScopeExpression.ScopeExpression != nil {
302 return &q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.MultiplicationExpression.PipeOrSpecialExpression.SequenceExpression.UnaryExpression.ExponentiationExpression.SubsetExpression.ScopeExpression
303 } else if q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.MultiplicationExpression.PipeOrSpecialExpression.SequenceExpression.UnaryExpression.ExponentiationExpression.SubsetExpression.ScopeExpression.IndexOrCallExpression.Call != nil || q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.MultiplicationExpression.PipeOrSpecialExpression.SequenceExpression.UnaryExpression.ExponentiationExpression.SubsetExpression.ScopeExpression.IndexOrCallExpression.Index != nil || q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.MultiplicationExpression.PipeOrSpecialExpression.SequenceExpression.UnaryExpression.ExponentiationExpression.SubsetExpression.ScopeExpression.IndexOrCallExpression.IndexOrCallExpression != nil {
304 return &q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.MultiplicationExpression.PipeOrSpecialExpression.SequenceExpression.UnaryExpression.ExponentiationExpression.SubsetExpression.ScopeExpression.IndexOrCallExpression
305 } else if q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.MultiplicationExpression.PipeOrSpecialExpression.SequenceExpression.UnaryExpression.ExponentiationExpression.SubsetExpression.ScopeExpression.IndexOrCallExpression.SimpleExpression == nil {
306 return nil
307 } else if q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.MultiplicationExpression.PipeOrSpecialExpression.SequenceExpression.UnaryExpression.ExponentiationExpression.SubsetExpression.ScopeExpression.IndexOrCallExpression.SimpleExpression.CompoundExpression != nil {
308 return q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.MultiplicationExpression.PipeOrSpecialExpression.SequenceExpression.UnaryExpression.ExponentiationExpression.SubsetExpression.ScopeExpression.IndexOrCallExpression.SimpleExpression.CompoundExpression
309 }
310
311 return q.AssignmentExpression.FormulaeExpression.OrExpression.AndExpression.NotExpression.RelationalExpression.AdditionExpression.MultiplicationExpression.PipeOrSpecialExpression.SequenceExpression.UnaryExpression.ExponentiationExpression.SubsetExpression.ScopeExpression.IndexOrCallExpression.SimpleExpression
312 }
313