atlas  0.6
parse_types.h
Go to the documentation of this file.
1 /*1:*/
2 #line 39 "parsetree.w"
3 #ifndef PARSE_TYPES_H
4 #define PARSE_TYPES_H/*6:*/
5 #line 145 "parsetree.w"
6 #include "buffer.h" /*:6*//*38:*/
7 #line 602 "parsetree.w"
8 #include "sl_list.h" /*:38*//*101:*/
9 #line 1612 "parsetree.w"
10 #include "axis-types.h" /*:101*//*133:*/
11 #line 1915 "parsetree.w"
12 #include "bitset.h"/*:133*/
13 #line 41 "parsetree.w"
14 
15 struct YYLTYPE;
16 
17 namespace atlas
18 {
19 namespace interpreter
20 {/*4:*//*5:*/
21 #line 137 "parsetree.w"
22 struct expr;/*:5*//*7:*/
23 #line 152 "parsetree.w"
24 typedef Hash_table::id_type id_type;/*:7*//*8:*/
25 #line 159 "parsetree.w"
27 {unsigned int start_line;
28 unsigned short extent,first_col,last_col;
29 id_type file;
31 source_location():start_line(~0u){}
32 
34 (const source_location&left,const source_location&right);
35 
36 bool undefined()const{return start_line==~0u;}
37 };/*:8*//*39:*/
38 #line 617 "parsetree.w"
41 
42 
45 #line 818 "parsetree.w"
46 typedef struct application_node*app;/*:53*//*82:*/
47 #line 1296 "parsetree.w"
50 
51 struct raw_id_pat
52 {id_type name;
53 unsigned char kind;
54 
55 raw_patlist sublist;
56 };
57 struct id_pat
58 {id_type name;
59 unsigned char kind;
60 
61 patlist sublist;
62 
63 id_pat():name(),kind(0x0),sublist(){}
64 explicit id_pat(const raw_id_pat&x)
65 :name(x.name),kind(x.kind)
66 ,sublist((kind&0x2)==0?nullptr:x.sublist)
67 {}
68 id_pat(id_type n):name(n),kind(0x1),sublist(){}
69 
70 id_pat(patlist&&l):name(),kind(0x2),sublist(std::move(l)){}
71 
72 id_pat(id_type n,unsigned char k,patlist&&l)
73 :name(n),kind(k),sublist(std::move(l)){}
74 
75 id_pat(const id_pat&x)=delete;
76 id_pat&operator=(const id_pat&x)=delete;
77 #ifdef incompletecpp11
78 id_pat(id_pat&&x)
79 :name(x.name),kind(x.kind),sublist(std::move(x.sublist)){}
80 id_pat&operator=(id_pat&&x)
81 {name=x.name;kind=x.kind;sublist=std::move(x.sublist);
82 return*this;
83 }
84 #else
85 id_pat(id_pat&&x)=default;
86 id_pat&operator=(id_pat&&x)=default;
87 #endif
89 {return{name,kind,sublist.release()};}
90 };/*:82*//*89:*/
91 #line 1428 "parsetree.w"
92 typedef struct let_expr_node*let;/*:89*//*104:*/
93 #line 1632 "parsetree.w"
94 typedef struct lambda_node*lambda;/*:104*//*115:*/
95 #line 1742 "parsetree.w"
96 typedef struct conditional_node*cond;/*:115*//*132:*/
97 #line 1907 "parsetree.w"
98 typedef struct while_node*w_loop;
99 typedef struct for_node*f_loop;
100 typedef struct cfor_node*c_loop;/*:132*//*143:*/
101 #line 2092 "parsetree.w"
102 typedef struct subscription_node*sub;
103 typedef struct slice_node*slc;/*:143*//*153:*/
104 #line 2225 "parsetree.w"
105 typedef struct cast_node*cast;/*:153*//*163:*/
106 #line 2293 "parsetree.w"
107 typedef struct op_cast_node*op_cast;/*:163*//*173:*/
108 #line 2362 "parsetree.w"
109 typedef struct assignment_node*assignment;/*:173*//*183:*/
110 #line 2456 "parsetree.w"
111 typedef struct comp_assignment_node*comp_assignment;/*:183*//*196:*/
112 #line 2637 "parsetree.w"
113 typedef struct sequence_node*sequence;/*:196*/
114 #line 117 "parsetree.w"
115 
116 
118 {/*23:*/
119 #line 378 "parsetree.w"
121 #line 501 "parsetree.w"
124 die_expr,/*:30*//*41:*/
125 #line 638 "parsetree.w"
127 #line 841 "parsetree.w"
128 function_call,/*:55*//*66:*/
129 #line 1004 "parsetree.w"
130 negation_expr,/*:66*//*91:*/
131 #line 1464 "parsetree.w"
132 let_expr,/*:91*//*106:*/
133 #line 1652 "parsetree.w"
134 lambda_expr,/*:106*//*117:*/
135 #line 1769 "parsetree.w"
136 conditional_expr,/*:117*//*125:*/
137 #line 1840 "parsetree.w"
138 int_case_expr,/*:125*//*135:*/
139 #line 1967 "parsetree.w"
140 while_expr,for_expr,cfor_expr,/*:135*//*145:*/
141 #line 2121 "parsetree.w"
142 subscription,slice,/*:145*//*155:*/
143 #line 2242 "parsetree.w"
144 cast_expr,/*:155*//*165:*/
145 #line 2311 "parsetree.w"
146 op_cast_expr,/*:165*//*175:*/
147 #line 2390 "parsetree.w"
148 ass_stat,/*:175*//*185:*/
149 #line 2485 "parsetree.w"
150 comp_ass_stat,/*:185*//*198:*/
151 #line 2663 "parsetree.w"
153 #line 120 "parsetree.w"
155 typedef struct expr*expr_p;
156 struct expr{
158 union{/*22:*/
159 #line 367 "parsetree.w"
162 #ifdef incompletecpp11
163 const char*str_denotation_variant;
164 #else
166 #endif/*:22*//*31:*/
167 #line 509 "parsetree.w"
169 unsigned break_variant;
170 expr_p return_variant;/*:31*//*40:*/
171 #line 629 "parsetree.w"
172 raw_expr_list sublist;/*:40*//*56:*/
173 #line 847 "parsetree.w"
174 app call_variant;/*:56*//*67:*/
175 #line 1008 "parsetree.w"
176 expr*negation_variant;/*:67*//*92:*/
177 #line 1470 "parsetree.w"
178 let let_variant;/*:92*//*107:*/
179 #line 1656 "parsetree.w"
180 lambda lambda_variant;/*:107*//*118:*/
181 #line 1775 "parsetree.w"
182 cond if_variant;/*:118*//*136:*/
183 #line 1973 "parsetree.w"
185 f_loop for_variant;
186 c_loop cfor_variant;/*:136*//*146:*/
187 #line 2126 "parsetree.w"
189 slc slice_variant;/*:146*//*156:*/
190 #line 2246 "parsetree.w"
191 cast cast_variant;/*:156*//*166:*/
192 #line 2315 "parsetree.w"
193 op_cast op_cast_variant;/*:166*//*176:*/
194 #line 2394 "parsetree.w"
195 assignment assign_variant;/*:176*//*186:*/
196 #line 2489 "parsetree.w"
197 comp_assignment comp_assign_variant;/*:186*//*199:*/
198 #line 2667 "parsetree.w"
199 sequence sequence_variant;/*:199*/
200 #line 124 "parsetree.w"
201 };
203 #line 243 "parsetree.w"
204 expr():kind(no_expr),loc(){}
205 expr(const expr&x)=delete;
206 expr&operator=(const expr&x)=delete;
207 ~expr();/*:13*//*17:*/
208 #line 284 "parsetree.w"
209 void set_from(expr&other);
210 expr(expr&&other);
211 void operator=(expr&&other);
212 void swap(expr&other);/*:17*//*24:*/
213 #line 391 "parsetree.w"
214 struct int_tag{};
215 struct bool_tag{};
216 expr(int n,const YYLTYPE&loc,int_tag)
217 :kind(integer_denotation),int_denotation_variant(n),loc(loc){}
218 expr(bool b,const YYLTYPE&loc,bool_tag)
219 :kind(boolean_denotation),bool_denotation_variant(b),loc(loc){}
220 expr(std::string&&s,const YYLTYPE&loc)
221 :kind(string_denotation)
222 #ifdef incompletecpp11
223 ,str_denotation_variant(std::strcpy(new char[s.size()+1],s.c_str()))
224 #else
225 ,str_denotation_variant(std::move(s))
226 #endif
227 ,loc(loc){}/*:24*//*32:*/
228 #line 517 "parsetree.w"
229 struct identifier_tag{};
230 struct dollar_tag{};
231 struct break_tag{unsigned depth;};
232 struct return_tag{};
233 struct die_tag{};
234 
235 expr(id_type id,const YYLTYPE&loc,identifier_tag)
236 :kind(applied_identifier),identifier_variant(id),loc(loc){}
238 :kind(last_value_computed),loc(loc){}
239 expr(const YYLTYPE&loc,break_tag t)
240 :kind(break_expr),break_variant(t.depth),loc(loc){}
241 expr(expr_p exp,const YYLTYPE&loc,return_tag t)
242 :kind(return_expr),return_variant(exp),loc(loc){}
243 expr(const YYLTYPE&loc,die_tag)
244 :kind(die_expr),loc(loc){}/*:32*//*42:*/
245 #line 649 "parsetree.w"
247 expr(expr_list&&nodes,tuple_display_tag,const YYLTYPE&loc)
248 :kind(tuple_display)
249 ,sublist(nodes.release())
250 ,loc(loc)
251 {}
252 expr(expr_list&&nodes,list_display_tag,const YYLTYPE&loc)
253 :kind(list_display)
254 ,sublist(nodes.release())
255 ,loc(loc)
256 {}
257 expr(expr_list&&nodes,tuple_display_tag,const source_location&loc)
258 :kind(tuple_display)
259 ,sublist(nodes.release())
260 ,loc(loc)
261 {}
262 expr(expr_list&&nodes,tuple_display_tag);/*:42*//*57:*/
263 #line 856 "parsetree.w"
264 expr(app&&fx,const YYLTYPE&loc)
265 :kind(function_call)
266 ,call_variant(std::move(fx))
267 ,loc(loc)
268 {}
269 expr(app&&fx,const source_location&loc)
270 :kind(function_call)
271 ,call_variant(std::move(fx))
272 ,loc(loc)
273 {}/*:57*//*68:*/
274 #line 1012 "parsetree.w"
275 struct negate_tag{};
277 :kind(negation_expr)
278 ,negation_variant(p)
279 ,loc(loc)
280 {}/*:68*//*93:*/
281 #line 1474 "parsetree.w"
282 expr(let&&declaration,const YYLTYPE&loc)
283 :kind(let_expr)
284 ,let_variant(std::move(declaration))
285 ,loc(loc)
286 {}/*:93*//*108:*/
287 #line 1660 "parsetree.w"
288 expr(lambda&&fun,const YYLTYPE&loc)
289 :kind(lambda_expr)
290 ,lambda_variant(std::move(fun))
291 ,loc(loc)
292 {}/*:108*//*119:*/
293 #line 1781 "parsetree.w"
294 expr(expr_kind which,cond&&conditional,const YYLTYPE&loc)
295 :kind(which)
296 ,if_variant(std::move(conditional))
297 ,loc(loc)
298 {}/*:119*//*137:*/
299 #line 1979 "parsetree.w"
300 expr(w_loop&&loop,const YYLTYPE&loc)
301 :kind(while_expr)
302 ,while_variant(std::move(loop))
303 ,loc(loc)
304 {}
305 expr(f_loop&&loop,const YYLTYPE&loc)
306 :kind(for_expr)
307 ,for_variant(std::move(loop))
308 ,loc(loc)
309 {}
310 expr(c_loop&&loop,const YYLTYPE&loc)
311 :kind(cfor_expr)
312 ,cfor_variant(std::move(loop))
313 ,loc(loc)
314 {}/*:137*//*147:*/
315 #line 2132 "parsetree.w"
316 expr(sub&&s,const YYLTYPE&loc)
317 :kind(subscription)
318 ,subscription_variant(std::move(s))
319 ,loc(loc)
320 {}
321 expr(sub&&s,const source_location&loc)
322 :kind(subscription)
323 ,subscription_variant(std::move(s))
324 ,loc(loc)
325 {}
326 expr(slc&&s,const YYLTYPE&loc)
327 :kind(slice)
328 ,slice_variant(std::move(s))
329 ,loc(loc)
330 {}/*:147*//*157:*/
331 #line 2250 "parsetree.w"
332 expr(cast&&c,const YYLTYPE&loc)
333 :kind(cast_expr)
334 ,cast_variant(std::move(c))
335 ,loc(loc)
336 {}/*:157*//*167:*/
337 #line 2319 "parsetree.w"
338 expr(op_cast&&c,const YYLTYPE&loc)
339 :kind(op_cast_expr)
340 ,op_cast_variant(std::move(c))
341 ,loc(loc)
342 {}/*:167*//*177:*/
343 #line 2398 "parsetree.w"
344 expr(assignment&&a,const YYLTYPE&loc)
345 :kind(ass_stat)
346 ,assign_variant(std::move(a))
347 ,loc(loc)
348 {}/*:177*//*187:*/
349 #line 2493 "parsetree.w"
350 expr(comp_assignment&&ca,const YYLTYPE&loc)
351 :kind(comp_ass_stat)
352 ,comp_assign_variant(std::move(ca))
353 ,loc(loc)
354 {}/*:187*//*200:*/
355 #line 2671 "parsetree.w"
356 expr(sequence&&s,unsigned which,const YYLTYPE&loc)
357 :kind(which==0?seq_expr:which==1?next_expr:do_expr)
358 ,sequence_variant(std::move(s))
359 ,loc(loc)
360 {}/*:200*/
361 #line 127 "parsetree.w"
362 
363 };
364 typedef std::unique_ptr<expr>expr_ptr;/*54:*/
365 #line 830 "parsetree.w"
367 {expr fun;expr arg;
368 
370 :fun(std::move(fun)),arg(std::move(arg)){}
371 };/*:54*//*75:*/
372 #line 1161 "parsetree.w"
373 struct formula_node{expr left_subtree;expr op_exp;int prio;
374 formula_node(expr&&l,expr&&o,int prio)
375 :left_subtree(std::move(l)),op_exp(std::move(o)),prio(prio){}
376 #ifdef incompletecpp11
377 formula_node(const formula_node&x)=delete;
378 formula_node operator=(const formula_node&x)=delete;
379 #endif
380 };
381 
384 #line 1442 "parsetree.w"
386 #ifdef incompletecpp11
387 let_pair(const let_pair&)=delete;
388 let_pair&operator=(const let_pair&)=delete;
389 let_pair(let_pair&&x)
390 :pattern(std::move(x.pattern)),val(std::move(x.val)){}
392 :pattern(std::move(p)),val(std::move(v)){}
393 #endif
394 };
397 
400 
401 let_expr_node(id_pat&&pattern,expr&&val,expr&&body)
402 :pattern(std::move(pattern)),val(std::move(val)),body(std::move(body)){}
403 };/*:90*//*105:*/
404 #line 1640 "parsetree.w"
406 {id_pat pattern;type_expr parameter_type;expr body;
407 
408 lambda_node(id_pat&&pattern,type_expr&&type,expr&&body)
409 :pattern(std::move(pattern))
410 ,parameter_type(std::move(type))
411 ,body(std::move(body))
412 {}
413 };/*:105*//*116:*/
414 #line 1755 "parsetree.w"
417 
418 conditional_node(expr&&condition,expr&&then_branch,expr&&else_branch)
419 :condition(std::move(condition))
420 ,branches(std::move(then_branch))
421 {branches.next.reset(new
422 containers::sl_node<expr>(std::move(else_branch)));
423 }/*126:*/
424 #line 1845 "parsetree.w"
426 :condition(std::move(condition))
427 ,branches(std::move(branches))
428 {}/*:126*/
429 #line 1764 "parsetree.w"
430 
431 };/*:116*//*134:*/
432 #line 1932 "parsetree.w"
435 BitSet<2>flags;
436 
437 while_node(expr&&body,unsigned flags)
438 :body(std::move(body))
439 ,flags(flags){}
440 
441 };
442 struct for_node
444 BitSet<2>flags;
445 
446 for_node(id_pat&&id,expr&&in_part,expr&&body,unsigned flags)
447 :id(std::move(id))
448 ,in_part(std::move(in_part))
449 ,body(std::move(body))
450 ,flags(flags){}
451 };
452 struct cfor_node
453 {id_type id;expr count;expr bound;expr body;
454 BitSet<3>flags;
455 
456 cfor_node
457 (id_type id,expr&&count,expr&&bound,expr&&body,unsigned flags)
458 :id(id)
459 ,count(std::move(count))
460 ,bound(std::move(bound))
461 ,body(std::move(body))
462 ,flags(flags){}
463 };/*:134*//*144:*/
464 #line 2100 "parsetree.w"
466 {expr array;expr index;bool reversed;
467 
468 subscription_node(expr&&array,expr&&index,bool reversed)
469 :array(std::move(array))
470 ,index(std::move(index))
471 ,reversed(reversed){}
472 };
474 {expr array;expr lower,upper;BitSet<3>flags;
475 
476 slice_node(expr&&array,expr&&lower,expr&&upper,unsigned flags)
477 :array(std::move(array))
478 ,lower(std::move(lower))
479 ,upper(std::move(upper))
480 ,flags(flags)
481 {}
482 };/*:144*//*154:*/
483 #line 2230 "parsetree.w"
484 struct cast_node
486 
488 :type(std::move(type))
489 ,exp(std::move(exp)){}
490 
491 };/*:154*//*164:*/
492 #line 2299 "parsetree.w"
494 {id_type oper;type_expr type;
495 
496 op_cast_node(id_type oper,type_expr&&type)
497 :oper(oper)
498 ,type(std::move(type)){}
499 
500 };/*:164*//*174:*/
501 #line 2369 "parsetree.w"
504 
505 assignment_node(id_type lhs,expr&&rhs)
506 :lhs(lhs)
507 ,rhs(std::move(rhs)){}
509 :lhs(std::move(lhs))
510 ,rhs(std::move(rhs)){}
511 #ifdef incompletecpp11
512 assignment_node(const assignment_node&x)=delete;
514 :lhs(x.lhs)
515 ,rhs(std::move(x.rhs))
516 {}
517 #endif
518 };/*:174*//*184:*/
519 #line 2462 "parsetree.w"
521 {id_type aggr;expr index;expr rhs;bool reversed;
522 
523 comp_assignment_node(id_type aggr,expr&&index,expr&&rhs,bool reversed)
524 :aggr(aggr)
525 ,index(std::move(index))
526 ,rhs(std::move(rhs))
527 ,reversed(reversed)
528 {}
529 #ifdef incompletecpp11
532 :aggr(x.aggr)
533 ,index(std::move(x.index))
534 ,rhs(std::move(x.rhs))
535 ,reversed(x.reversed)
536 {}
537 #endif
538 };/*:184*//*197:*/
539 #line 2646 "parsetree.w"
541 {expr first;expr last;
542 
543 sequence_node(expr&&first,expr&&last)
544 :first(std::move(first))
545 ,last(std::move(last)){}
546 
547 };/*:197*//*:4*/
548 #line 48 "parsetree.w"
549 
550 }
551 }
552 #endif/*:1*/
struct op_cast_node * op_cast
Definition: parse_types.h:107
Definition: parse_types.h:415
Definition: parse_types.h:398
id_pat pattern
Definition: parse_types.h:406
Definition: parse_types.h:120
expr(lambda &&fun, const YYLTYPE &loc)
Definition: parse_types.h:288
struct let_expr_node * let
Definition: parse_types.h:92
bool reversed
Definition: parse_types.h:521
char * loc
Definition: common.c:89
source_location()
Definition: parse_types.h:31
expr(expr_list &&nodes, list_display_tag, const YYLTYPE &loc)
Definition: parse_types.h:252
Definition: parse_types.h:142
expr val
Definition: parse_types.h:399
sequence sequence_variant
Definition: parse_types.h:199
expr val
Definition: parse_types.h:385
unsigned long size
Definition: testprint.cpp:46
struct expr * expr_p
Definition: parse_types.h:155
Definition: parse_types.h:520
expr(const YYLTYPE &loc, break_tag t)
Definition: parse_types.h:239
for_node(id_pat &&id, expr &&in_part, expr &&body, unsigned flags)
Definition: parse_types.h:446
lambda lambda_variant
Definition: parse_types.h:180
Definition: parse_types.h:405
Definition: parse_types.h:51
unsigned int start_line
Definition: parse_types.h:27
unsigned depth
Definition: parse_types.h:231
id_pat(const raw_id_pat &x)
Definition: parse_types.h:64
Hash_table::id_type id_type
Definition: parse_types.h:22
std::string str_denotation_variant
Definition: parse_types.h:165
while_node(expr &&body, unsigned flags)
Definition: parse_types.h:437
BitSet< 2 > flags
Definition: parse_types.h:444
cast cast_variant
Definition: parse_types.h:191
sequence_node(expr &&first, expr &&last)
Definition: parse_types.h:543
struct application_node * app
Definition: parse_types.h:46
id_pat(patlist &&l)
Definition: parse_types.h:70
uA p
Definition: lists.cpp:26
lambda_node(id_pat &&pattern, type_expr &&type, expr &&body)
Definition: parse_types.h:408
expr fun
Definition: parse_types.h:367
Definition: parse_types.h:140
Definition: parse_types.h:152
id_pat(id_type n)
Definition: parse_types.h:68
type_expr type
Definition: parse_types.h:485
expr(expr_list &&nodes, tuple_display_tag, const YYLTYPE &loc)
Definition: parse_types.h:247
assignment_node(id_type lhs, expr &&rhs)
Definition: parse_types.h:505
Definition: parse_types.h:442
expr(expr_p exp, const YYLTYPE &loc, return_tag t)
Definition: parse_types.h:241
Definition: parse_types.h:126
assignment assign_variant
Definition: parse_types.h:195
struct assignment_node * assignment
Definition: parse_types.h:109
Definition: parse_types.h:136
const id_pat & pattern
Definition: axis.cpp:21
sub subscription_variant
Definition: parse_types.h:188
struct for_node * f_loop
Definition: parse_types.h:99
expr(const YYLTYPE &loc, dollar_tag)
Definition: parse_types.h:237
Definition: parse_types.h:140
unsigned char kind
Definition: parse_types.h:59
std::unique_ptr< expr > expr_ptr
Definition: parse_types.h:364
Definition: parse_types.h:123
Definition: parse_types.h:142
id_pat()
Definition: parse_types.h:63
containers::simple_list< struct id_pat > patlist
Definition: parse_types.h:48
Definition: parse_types.h:232
expr(app &&fx, const YYLTYPE &loc)
Definition: parse_types.h:264
Definition: parse_types.h:120
raw_id_pat release()
Definition: parse_types.h:88
Definition: parse_types.h:465
void swap(simple_list< T, Alloc > &x, simple_list< T, Alloc > &y)
Definition: sl_list.h:674
expr index
Definition: parse_types.h:521
Definition: parse_types.h:123
w_loop while_variant
Definition: parse_types.h:184
let_expr_node(id_pat &&pattern, expr &&val, expr &&body)
Definition: parse_types.h:401
conditional_node(expr &&condition, containers::sl_node< expr > &&branches)
Definition: parse_types.h:425
unsigned short first_col
Definition: parse_types.h:28
op_cast_node(id_type oper, type_expr &&type)
Definition: parse_types.h:496
id_pat lhs
Definition: parse_types.h:503
Definition: parse_types.h:152
c_loop cfor_variant
Definition: parse_types.h:186
int prio
Definition: parse_types.h:373
expr * negation_variant
Definition: parse_types.h:176
id_type id
Definition: parse_types.h:453
op_cast op_cast_variant
Definition: parse_types.h:193
expr(expr_list &&nodes, tuple_display_tag, const source_location &loc)
Definition: parse_types.h:257
struct slice_node * slc
Definition: parse_types.h:103
expr(expr *p, const YYLTYPE &loc, negate_tag)
Definition: parse_types.h:276
unsigned short last_col
Definition: parse_types.h:28
expr last
Definition: parse_types.h:541
id_type file
Definition: parse_types.h:29
expr(app &&fx, const source_location &loc)
Definition: parse_types.h:269
struct conditional_node * cond
Definition: parse_types.h:96
Definition: parse_types.h:215
slice_node(expr &&array, expr &&lower, expr &&upper, unsigned flags)
Definition: parse_types.h:476
Definition: parse_types.h:275
bool bool_denotation_variant
Definition: parse_types.h:161
Definition: parse_types.h:26
application_node(expr &&fun, expr &&arg)
Definition: parse_types.h:369
Definition: parse_types.h:452
Definition: axis-types.h:51
Definition: parse_types.h:124
Definition: parse_types.h:152
Definition: parse_types.h:146
Definition: sl_list.h:1204
app call_variant
Definition: parse_types.h:174
source_location loc
Definition: parse_types.h:202
containers::sl_node< struct id_pat > * raw_patlist
Definition: parse_types.h:49
expr(comp_assignment &&ca, const YYLTYPE &loc)
Definition: parse_types.h:350
Definition: parser.tab.h:139
raw_patlist sublist
Definition: parse_types.h:55
Definition: parse_types.h:134
containers::weak_sl_list_iterator< expr > wel_iterator
Definition: parse_types.h:44
comp_assignment_node(id_type aggr, expr &&index, expr &&rhs, bool reversed)
Definition: parse_types.h:523
conditional_node(expr &&condition, expr &&then_branch, expr &&else_branch)
Definition: parse_types.h:418
expr()
Definition: parse_types.h:204
expr(expr_kind which, cond &&conditional, const YYLTYPE &loc)
Definition: parse_types.h:294
expr condition
Definition: parse_types.h:416
expr(id_type id, const YYLTYPE &loc, identifier_tag)
Definition: parse_types.h:235
unsigned short id_type
Definition: buffer.h:44
id_type name
Definition: parse_types.h:52
expr(sub &&s, const YYLTYPE &loc)
Definition: parse_types.h:316
expr upper
Definition: parse_types.h:474
expr_kind
Definition: parse_types.h:117
expr(sub &&s, const source_location &loc)
Definition: parse_types.h:321
Definition: parse_types.h:229
expr(std::string &&s, const YYLTYPE &loc)
Definition: parse_types.h:220
comp_assignment comp_assign_variant
Definition: parse_types.h:197
f_loop for_variant
Definition: parse_types.h:185
expr_kind kind
Definition: parse_types.h:157
containers::mirrored_simple_list< formula_node > form_stack
Definition: parse_types.h:382
Definition: cweave.c:324
id_type aggr
Definition: parse_types.h:521
patlist sublist
Definition: parse_types.h:61
expr rhs
Definition: parse_types.h:521
expr(w_loop &&loop, const YYLTYPE &loc)
Definition: parse_types.h:300
Definition: parse_types.h:233
Definition: sl_list.h:28
containers::sl_node< let_pair > * raw_let_list
Definition: parse_types.h:396
Definition: parse_types.h:373
id_type name
Definition: parse_types.h:58
Definition: parse_types.h:246
raw_expr_list sublist
Definition: parse_types.h:172
expr body
Definition: parse_types.h:434
Definition: parse_types.h:540
Definition: parse_types.h:493
expr(sequence &&s, unsigned which, const YYLTYPE &loc)
Definition: parse_types.h:356
Definition: parse_types.h:126
BitSet< 2 > flags
Definition: parse_types.h:435
expr(cast &&c, const YYLTYPE &loc)
Definition: parse_types.h:332
BitSet< 3 > flags
Definition: parse_types.h:454
struct subscription_node * sub
Definition: parse_types.h:102
containers::sl_node< expr > * raw_expr_list
Definition: parse_types.h:40
type_expr type
Definition: parse_types.h:494
int int_denotation_variant
Definition: parse_types.h:160
containers::sl_node< formula_node > * raw_form_stack
Definition: parse_types.h:383
containers::simple_list< let_pair > let_list
Definition: parse_types.h:395
Definition: parse_types.h:130
Definition: parse_types.h:123
expr(c_loop &&loop, const YYLTYPE &loc)
Definition: parse_types.h:310
expr(assignment &&a, const YYLTYPE &loc)
Definition: parse_types.h:344
Definition: parse_types.h:473
Definition: parse_types.h:433
Definition: parse_types.h:246
formula_node(expr &&l, expr &&o, int prio)
Definition: parse_types.h:374
Definition: parse_types.h:122
expr in_part
Definition: parse_types.h:443
Definition: parse_types.h:128
Definition: parse_types.h:214
Definition: parse_types.h:138
struct while_node * w_loop
Definition: parse_types.h:98
expr_p return_variant
Definition: parse_types.h:170
Definition: parse_types.h:231
Definition: parse_types.h:144
Definition: parse_types.h:484
struct cfor_node * c_loop
Definition: parse_types.h:100
id_pat(id_type n, unsigned char k, patlist &&l)
Definition: parse_types.h:72
Definition: parse_types.h:120
char * name
Definition: common.c:103
let let_variant
Definition: parse_types.h:178
unsigned long n
Definition: axis.cpp:77
struct lambda_node * lambda
Definition: parse_types.h:94
struct comp_assignment_node * comp_assignment
Definition: parse_types.h:111
cond if_variant
Definition: parse_types.h:182
assignment_node(id_pat &&lhs, expr &&rhs)
Definition: parse_types.h:508
boolean flags[UCHAR_MAX+1]
Definition: common.c:136
Definition: Atlas.h:38
cast_node(type_expr &&type, expr &&exp)
Definition: parse_types.h:487
unsigned short extent
Definition: parse_types.h:28
expr(int n, const YYLTYPE &loc, int_tag)
Definition: parse_types.h:216
unsigned break_variant
Definition: parse_types.h:169
expr(let &&declaration, const YYLTYPE &loc)
Definition: parse_types.h:282
Definition: parse_types.h:148
slc slice_variant
Definition: parse_types.h:189
expr(op_cast &&c, const YYLTYPE &loc)
Definition: parse_types.h:338
link_type next
Definition: sl_list.h:91
Class definitions and function declarations for the BitSet class.
Definition: parse_types.h:502
bool reversed
Definition: parse_types.h:466
expr(const YYLTYPE &loc, die_tag)
Definition: parse_types.h:243
Definition: parse_types.h:57
Definition: parse_types.h:385
expr rhs
Definition: parse_types.h:503
expr(slc &&s, const YYLTYPE &loc)
Definition: parse_types.h:326
containers::weak_sl_list_const_iterator< expr > wel_const_iterator
Definition: parse_types.h:43
containers::simple_list< expr > expr_list
Definition: parse_types.h:39
Definition: cweave.c:262
Definition: parse_types.h:366
Definition: parse_types.h:156
Definition: parse_types.h:140
subscription_node(expr &&array, expr &&index, bool reversed)
Definition: parse_types.h:468
Definition: parse_types.h:230
unsigned int depth
Definition: output.cpp:74
expr(bool b, const YYLTYPE &loc, bool_tag)
Definition: parse_types.h:218
struct cast_node * cast
Definition: parse_types.h:105
struct sequence_node * sequence
Definition: parse_types.h:113
Definition: parse_types.h:150
id_type identifier_variant
Definition: parse_types.h:168
expr(f_loop &&loop, const YYLTYPE &loc)
Definition: parse_types.h:305
unsigned char kind
Definition: parse_types.h:53
Vertex v
Definition: graph.cpp:116
node_type * release()
Definition: sl_list.h:428
Definition: parse_types.h:154
Definition: parse_types.h:132
bool undefined() const
Definition: parse_types.h:36