OILS / _devbuild / gen / runtime_asdl.py View on Github | oilshell.org

2060 lines, 1509 significant
1from asdl import pybase
2from mycpp import mops
3from typing import Optional, List, Tuple, Dict, Any, cast, TYPE_CHECKING
4
5if TYPE_CHECKING:
6 from _devbuild.gen.syntax_asdl import loc_t, Token, expr_t, word_t, command_t, CompoundWord, DoubleQuoted, ArgList, re_t, redir_loc_t, proc_sig_t, LiteralBlock, Func
7 from _devbuild.gen.value_asdl import value_t
8
9from _devbuild.gen.id_kind_asdl import Id_t
10from _devbuild.gen.id_kind_asdl import Id_str
11
12
13from asdl import runtime # For runtime.NO_SPID
14from asdl.runtime import NewRecord, NewLeaf, TraversalState
15from _devbuild.gen.hnode_asdl import color_e, hnode, hnode_e, hnode_t, Field
16
17class cmd_value_e(object):
18 Argv = 1
19 Assign = 2
20
21_cmd_value_str = {
22 1: 'Argv',
23 2: 'Assign',
24}
25
26def cmd_value_str(tag, dot=True):
27 # type: (int, bool) -> str
28 v = _cmd_value_str[tag]
29 if dot:
30 return "cmd_value.%s" % v
31 else:
32 return v
33
34class cmd_value_t(pybase.CompoundObj):
35 def tag(self):
36 # type: () -> int
37 return self._type_tag
38 pass
39
40class cmd_value(object):
41 class Argv(cmd_value_t):
42 _type_tag = 1
43 __slots__ = ('argv', 'arg_locs', 'typed_args', 'pos_args', 'named_args')
44
45 def __init__(self, argv, arg_locs, typed_args, pos_args, named_args):
46 # type: (List[str], List[CompoundWord], Optional[ArgList], Optional[List[value_t]], Optional[Dict[str, value_t]]) -> None
47 self.argv = argv
48 self.arg_locs = arg_locs
49 self.typed_args = typed_args
50 self.pos_args = pos_args
51 self.named_args = named_args
52
53 @staticmethod
54 def CreateNull(alloc_lists=False):
55 # type: () -> cmd_value.Argv
56 return cmd_value.Argv([] if alloc_lists else cast('List[str]', None), [] if alloc_lists else cast('List[CompoundWord]', None), cast('Optional[ArgList]', None), cast('Optional[List[value_t]]', None), cast('Optional[Dict[str, value_t]]', None))
57
58 def PrettyTree(self, trav=None):
59 # type: (Optional[TraversalState]) -> hnode_t
60 trav = trav or TraversalState()
61 heap_id = id(self)
62 if heap_id in trav.seen:
63 return hnode.AlreadySeen(heap_id)
64 trav.seen[heap_id] = True
65 out_node = NewRecord('cmd_value.Argv')
66 L = out_node.fields
67
68 if self.argv is not None: # List
69 x0 = hnode.Array([])
70 for i0 in self.argv:
71 x0.children.append(NewLeaf(i0, color_e.StringConst))
72 L.append(Field('argv', x0))
73
74 if self.arg_locs is not None: # List
75 x1 = hnode.Array([])
76 for i1 in self.arg_locs:
77 h = (hnode.Leaf("_", color_e.OtherConst) if i1 is None else
78 i1.PrettyTree(trav=trav))
79 x1.children.append(h)
80 L.append(Field('arg_locs', x1))
81
82 if self.typed_args is not None: # Optional
83 x2 = self.typed_args.PrettyTree(trav=trav)
84 L.append(Field('typed_args', x2))
85
86 if self.pos_args is not None: # List
87 x3 = hnode.Array([])
88 for i3 in self.pos_args:
89 h = (hnode.Leaf("_", color_e.OtherConst) if i3 is None else
90 i3.PrettyTree(trav=trav))
91 x3.children.append(h)
92 L.append(Field('pos_args', x3))
93
94 if self.named_args is not None: # Dict
95 m = hnode.Leaf("Dict", color_e.OtherConst)
96 x4 = hnode.Array([m])
97 for k4, v4 in self.named_args.iteritems():
98 x4.children.append(NewLeaf(k4, color_e.StringConst))
99 x4.children.append(v4.PrettyTree(trav=trav))
100 L.append(Field('named_args', x4))
101
102 return out_node
103
104 def _AbbreviatedTree(self, trav=None):
105 # type: (Optional[TraversalState]) -> hnode_t
106 trav = trav or TraversalState()
107 heap_id = id(self)
108 if heap_id in trav.seen:
109 return hnode.AlreadySeen(heap_id)
110 trav.seen[heap_id] = True
111 out_node = NewRecord('cmd_value.Argv')
112 L = out_node.fields
113 if self.argv is not None: # List
114 x0 = hnode.Array([])
115 for i0 in self.argv:
116 x0.children.append(NewLeaf(i0, color_e.StringConst))
117 L.append(Field('argv', x0))
118
119 if self.arg_locs is not None: # List
120 x1 = hnode.Array([])
121 for i1 in self.arg_locs:
122 h = (hnode.Leaf("_", color_e.OtherConst) if i1 is None else
123 i1.AbbreviatedTree(trav=trav))
124 x1.children.append(h)
125 L.append(Field('arg_locs', x1))
126
127 if self.typed_args is not None: # Optional
128 x2 = self.typed_args.AbbreviatedTree(trav=trav)
129 L.append(Field('typed_args', x2))
130
131 if self.pos_args is not None: # List
132 x3 = hnode.Array([])
133 for i3 in self.pos_args:
134 h = (hnode.Leaf("_", color_e.OtherConst) if i3 is None else
135 i3.AbbreviatedTree(trav=trav))
136 x3.children.append(h)
137 L.append(Field('pos_args', x3))
138
139 if self.named_args is not None: # Dict
140 m = hnode.Leaf("Dict", color_e.OtherConst)
141 x4 = hnode.Array([m])
142 for k4, v4 in self.named_args.iteritems():
143 x4.children.append(NewLeaf(k4, color_e.StringConst))
144 x4.children.append(v4.AbbreviatedTree(trav=trav))
145 L.append(Field('named_args', x4))
146
147 return out_node
148
149 def AbbreviatedTree(self, trav=None):
150 # type: (Optional[TraversalState]) -> hnode_t
151 return self._AbbreviatedTree(trav=trav)
152
153 class Assign(cmd_value_t):
154 _type_tag = 2
155 __slots__ = ('builtin_id', 'argv', 'arg_locs', 'pairs')
156
157 def __init__(self, builtin_id, argv, arg_locs, pairs):
158 # type: (int, List[str], List[CompoundWord], List[AssignArg]) -> None
159 self.builtin_id = builtin_id
160 self.argv = argv
161 self.arg_locs = arg_locs
162 self.pairs = pairs
163
164 @staticmethod
165 def CreateNull(alloc_lists=False):
166 # type: () -> cmd_value.Assign
167 return cmd_value.Assign(-1, [] if alloc_lists else cast('List[str]', None), [] if alloc_lists else cast('List[CompoundWord]', None), [] if alloc_lists else cast('List[AssignArg]', None))
168
169 def PrettyTree(self, trav=None):
170 # type: (Optional[TraversalState]) -> hnode_t
171 trav = trav or TraversalState()
172 heap_id = id(self)
173 if heap_id in trav.seen:
174 return hnode.AlreadySeen(heap_id)
175 trav.seen[heap_id] = True
176 out_node = NewRecord('cmd_value.Assign')
177 L = out_node.fields
178
179 x0 = hnode.Leaf(str(self.builtin_id), color_e.OtherConst)
180 L.append(Field('builtin_id', x0))
181
182 if self.argv is not None: # List
183 x1 = hnode.Array([])
184 for i1 in self.argv:
185 x1.children.append(NewLeaf(i1, color_e.StringConst))
186 L.append(Field('argv', x1))
187
188 if self.arg_locs is not None: # List
189 x2 = hnode.Array([])
190 for i2 in self.arg_locs:
191 h = (hnode.Leaf("_", color_e.OtherConst) if i2 is None else
192 i2.PrettyTree(trav=trav))
193 x2.children.append(h)
194 L.append(Field('arg_locs', x2))
195
196 if self.pairs is not None: # List
197 x3 = hnode.Array([])
198 for i3 in self.pairs:
199 h = (hnode.Leaf("_", color_e.OtherConst) if i3 is None else
200 i3.PrettyTree(trav=trav))
201 x3.children.append(h)
202 L.append(Field('pairs', x3))
203
204 return out_node
205
206 def _AbbreviatedTree(self, trav=None):
207 # type: (Optional[TraversalState]) -> hnode_t
208 trav = trav or TraversalState()
209 heap_id = id(self)
210 if heap_id in trav.seen:
211 return hnode.AlreadySeen(heap_id)
212 trav.seen[heap_id] = True
213 out_node = NewRecord('cmd_value.Assign')
214 L = out_node.fields
215 x0 = hnode.Leaf(str(self.builtin_id), color_e.OtherConst)
216 L.append(Field('builtin_id', x0))
217
218 if self.argv is not None: # List
219 x1 = hnode.Array([])
220 for i1 in self.argv:
221 x1.children.append(NewLeaf(i1, color_e.StringConst))
222 L.append(Field('argv', x1))
223
224 if self.arg_locs is not None: # List
225 x2 = hnode.Array([])
226 for i2 in self.arg_locs:
227 h = (hnode.Leaf("_", color_e.OtherConst) if i2 is None else
228 i2.AbbreviatedTree(trav=trav))
229 x2.children.append(h)
230 L.append(Field('arg_locs', x2))
231
232 if self.pairs is not None: # List
233 x3 = hnode.Array([])
234 for i3 in self.pairs:
235 h = (hnode.Leaf("_", color_e.OtherConst) if i3 is None else
236 i3.AbbreviatedTree(trav=trav))
237 x3.children.append(h)
238 L.append(Field('pairs', x3))
239
240 return out_node
241
242 def AbbreviatedTree(self, trav=None):
243 # type: (Optional[TraversalState]) -> hnode_t
244 return self._AbbreviatedTree(trav=trav)
245
246 pass
247
248class part_value_e(object):
249 String = 1
250 Array = 2
251 ExtGlob = 3
252
253_part_value_str = {
254 1: 'String',
255 2: 'Array',
256 3: 'ExtGlob',
257}
258
259def part_value_str(tag, dot=True):
260 # type: (int, bool) -> str
261 v = _part_value_str[tag]
262 if dot:
263 return "part_value.%s" % v
264 else:
265 return v
266
267class part_value_t(pybase.CompoundObj):
268 def tag(self):
269 # type: () -> int
270 return self._type_tag
271 pass
272
273class part_value(object):
274 class String(part_value_t):
275 _type_tag = 1
276 __slots__ = ('s', 'quoted', 'do_split')
277
278 def __init__(self, s, quoted, do_split):
279 # type: (str, bool, bool) -> None
280 self.s = s
281 self.quoted = quoted
282 self.do_split = do_split
283
284 @staticmethod
285 def CreateNull(alloc_lists=False):
286 # type: () -> part_value.String
287 return part_value.String('', False, False)
288
289 def PrettyTree(self, trav=None):
290 # type: (Optional[TraversalState]) -> hnode_t
291 trav = trav or TraversalState()
292 heap_id = id(self)
293 if heap_id in trav.seen:
294 return hnode.AlreadySeen(heap_id)
295 trav.seen[heap_id] = True
296 out_node = NewRecord('part_value.String')
297 L = out_node.fields
298
299 x0 = NewLeaf(self.s, color_e.StringConst)
300 L.append(Field('s', x0))
301
302 x1 = hnode.Leaf('T' if self.quoted else 'F', color_e.OtherConst)
303 L.append(Field('quoted', x1))
304
305 x2 = hnode.Leaf('T' if self.do_split else 'F', color_e.OtherConst)
306 L.append(Field('do_split', x2))
307
308 return out_node
309
310 def _AbbreviatedTree(self, trav=None):
311 # type: (Optional[TraversalState]) -> hnode_t
312 trav = trav or TraversalState()
313 heap_id = id(self)
314 if heap_id in trav.seen:
315 return hnode.AlreadySeen(heap_id)
316 trav.seen[heap_id] = True
317 out_node = NewRecord('part_value.String')
318 L = out_node.fields
319 x0 = NewLeaf(self.s, color_e.StringConst)
320 L.append(Field('s', x0))
321
322 x1 = hnode.Leaf('T' if self.quoted else 'F', color_e.OtherConst)
323 L.append(Field('quoted', x1))
324
325 x2 = hnode.Leaf('T' if self.do_split else 'F', color_e.OtherConst)
326 L.append(Field('do_split', x2))
327
328 return out_node
329
330 def AbbreviatedTree(self, trav=None):
331 # type: (Optional[TraversalState]) -> hnode_t
332 return self._AbbreviatedTree(trav=trav)
333
334 class Array(part_value_t):
335 _type_tag = 2
336 __slots__ = ('strs',)
337
338 def __init__(self, strs):
339 # type: (List[str]) -> None
340 self.strs = strs
341
342 @staticmethod
343 def CreateNull(alloc_lists=False):
344 # type: () -> part_value.Array
345 return part_value.Array([] if alloc_lists else cast('List[str]', None))
346
347 def PrettyTree(self, trav=None):
348 # type: (Optional[TraversalState]) -> hnode_t
349 trav = trav or TraversalState()
350 heap_id = id(self)
351 if heap_id in trav.seen:
352 return hnode.AlreadySeen(heap_id)
353 trav.seen[heap_id] = True
354 out_node = NewRecord('part_value.Array')
355 L = out_node.fields
356
357 if self.strs is not None: # List
358 x0 = hnode.Array([])
359 for i0 in self.strs:
360 x0.children.append(NewLeaf(i0, color_e.StringConst))
361 L.append(Field('strs', x0))
362
363 return out_node
364
365 def _AbbreviatedTree(self, trav=None):
366 # type: (Optional[TraversalState]) -> hnode_t
367 trav = trav or TraversalState()
368 heap_id = id(self)
369 if heap_id in trav.seen:
370 return hnode.AlreadySeen(heap_id)
371 trav.seen[heap_id] = True
372 out_node = NewRecord('part_value.Array')
373 L = out_node.fields
374 if self.strs is not None: # List
375 x0 = hnode.Array([])
376 for i0 in self.strs:
377 x0.children.append(NewLeaf(i0, color_e.StringConst))
378 L.append(Field('strs', x0))
379
380 return out_node
381
382 def AbbreviatedTree(self, trav=None):
383 # type: (Optional[TraversalState]) -> hnode_t
384 return self._AbbreviatedTree(trav=trav)
385
386 class ExtGlob(part_value_t):
387 _type_tag = 3
388 __slots__ = ('part_vals',)
389
390 def __init__(self, part_vals):
391 # type: (List[part_value_t]) -> None
392 self.part_vals = part_vals
393
394 @staticmethod
395 def CreateNull(alloc_lists=False):
396 # type: () -> part_value.ExtGlob
397 return part_value.ExtGlob([] if alloc_lists else cast('List[part_value_t]', None))
398
399 def PrettyTree(self, trav=None):
400 # type: (Optional[TraversalState]) -> hnode_t
401 trav = trav or TraversalState()
402 heap_id = id(self)
403 if heap_id in trav.seen:
404 return hnode.AlreadySeen(heap_id)
405 trav.seen[heap_id] = True
406 out_node = NewRecord('part_value.ExtGlob')
407 L = out_node.fields
408
409 if self.part_vals is not None: # List
410 x0 = hnode.Array([])
411 for i0 in self.part_vals:
412 h = (hnode.Leaf("_", color_e.OtherConst) if i0 is None else
413 i0.PrettyTree(trav=trav))
414 x0.children.append(h)
415 L.append(Field('part_vals', x0))
416
417 return out_node
418
419 def _AbbreviatedTree(self, trav=None):
420 # type: (Optional[TraversalState]) -> hnode_t
421 trav = trav or TraversalState()
422 heap_id = id(self)
423 if heap_id in trav.seen:
424 return hnode.AlreadySeen(heap_id)
425 trav.seen[heap_id] = True
426 out_node = NewRecord('part_value.ExtGlob')
427 L = out_node.fields
428 if self.part_vals is not None: # List
429 x0 = hnode.Array([])
430 for i0 in self.part_vals:
431 h = (hnode.Leaf("_", color_e.OtherConst) if i0 is None else
432 i0.AbbreviatedTree(trav=trav))
433 x0.children.append(h)
434 L.append(Field('part_vals', x0))
435
436 return out_node
437
438 def AbbreviatedTree(self, trav=None):
439 # type: (Optional[TraversalState]) -> hnode_t
440 return self._AbbreviatedTree(trav=trav)
441
442 pass
443
444class coerced_t(pybase.SimpleObj):
445 pass
446
447class coerced_e(object):
448 Int = coerced_t(1)
449 Float = coerced_t(2)
450 Neither = coerced_t(3)
451
452_coerced_str = {
453 1: 'coerced.Int',
454 2: 'coerced.Float',
455 3: 'coerced.Neither',
456}
457
458def coerced_str(val):
459 # type: (coerced_t) -> str
460 return _coerced_str[val]
461
462class scope_t(pybase.SimpleObj):
463 pass
464
465class scope_e(object):
466 Shopt = scope_t(1)
467 Dynamic = scope_t(2)
468 LocalOrGlobal = scope_t(3)
469 LocalOnly = scope_t(4)
470 GlobalOnly = scope_t(5)
471
472_scope_str = {
473 1: 'scope.Shopt',
474 2: 'scope.Dynamic',
475 3: 'scope.LocalOrGlobal',
476 4: 'scope.LocalOnly',
477 5: 'scope.GlobalOnly',
478}
479
480def scope_str(val):
481 # type: (scope_t) -> str
482 return _scope_str[val]
483
484class a_index_e(object):
485 Str = 1
486 Int = 2
487
488_a_index_str = {
489 1: 'Str',
490 2: 'Int',
491}
492
493def a_index_str(tag, dot=True):
494 # type: (int, bool) -> str
495 v = _a_index_str[tag]
496 if dot:
497 return "a_index.%s" % v
498 else:
499 return v
500
501class a_index_t(pybase.CompoundObj):
502 def tag(self):
503 # type: () -> int
504 return self._type_tag
505 pass
506
507class a_index(object):
508 class Str(a_index_t):
509 _type_tag = 1
510 __slots__ = ('s',)
511
512 def __init__(self, s):
513 # type: (str) -> None
514 self.s = s
515
516 @staticmethod
517 def CreateNull(alloc_lists=False):
518 # type: () -> a_index.Str
519 return a_index.Str('')
520
521 def PrettyTree(self, trav=None):
522 # type: (Optional[TraversalState]) -> hnode_t
523 trav = trav or TraversalState()
524 heap_id = id(self)
525 if heap_id in trav.seen:
526 return hnode.AlreadySeen(heap_id)
527 trav.seen[heap_id] = True
528 out_node = NewRecord('a_index.Str')
529 L = out_node.fields
530
531 x0 = NewLeaf(self.s, color_e.StringConst)
532 L.append(Field('s', x0))
533
534 return out_node
535
536 def _AbbreviatedTree(self, trav=None):
537 # type: (Optional[TraversalState]) -> hnode_t
538 trav = trav or TraversalState()
539 heap_id = id(self)
540 if heap_id in trav.seen:
541 return hnode.AlreadySeen(heap_id)
542 trav.seen[heap_id] = True
543 out_node = NewRecord('a_index.Str')
544 L = out_node.fields
545 x0 = NewLeaf(self.s, color_e.StringConst)
546 L.append(Field('s', x0))
547
548 return out_node
549
550 def AbbreviatedTree(self, trav=None):
551 # type: (Optional[TraversalState]) -> hnode_t
552 return self._AbbreviatedTree(trav=trav)
553
554 class Int(a_index_t):
555 _type_tag = 2
556 __slots__ = ('i',)
557
558 def __init__(self, i):
559 # type: (int) -> None
560 self.i = i
561
562 @staticmethod
563 def CreateNull(alloc_lists=False):
564 # type: () -> a_index.Int
565 return a_index.Int(-1)
566
567 def PrettyTree(self, trav=None):
568 # type: (Optional[TraversalState]) -> hnode_t
569 trav = trav or TraversalState()
570 heap_id = id(self)
571 if heap_id in trav.seen:
572 return hnode.AlreadySeen(heap_id)
573 trav.seen[heap_id] = True
574 out_node = NewRecord('a_index.Int')
575 L = out_node.fields
576
577 x0 = hnode.Leaf(str(self.i), color_e.OtherConst)
578 L.append(Field('i', x0))
579
580 return out_node
581
582 def _AbbreviatedTree(self, trav=None):
583 # type: (Optional[TraversalState]) -> hnode_t
584 trav = trav or TraversalState()
585 heap_id = id(self)
586 if heap_id in trav.seen:
587 return hnode.AlreadySeen(heap_id)
588 trav.seen[heap_id] = True
589 out_node = NewRecord('a_index.Int')
590 L = out_node.fields
591 x0 = hnode.Leaf(str(self.i), color_e.OtherConst)
592 L.append(Field('i', x0))
593
594 return out_node
595
596 def AbbreviatedTree(self, trav=None):
597 # type: (Optional[TraversalState]) -> hnode_t
598 return self._AbbreviatedTree(trav=trav)
599
600 pass
601
602class redirect_arg_e(object):
603 Path = 1
604 CopyFd = 2
605 MoveFd = 3
606 CloseFd = 4
607 HereDoc = 5
608
609_redirect_arg_str = {
610 1: 'Path',
611 2: 'CopyFd',
612 3: 'MoveFd',
613 4: 'CloseFd',
614 5: 'HereDoc',
615}
616
617def redirect_arg_str(tag, dot=True):
618 # type: (int, bool) -> str
619 v = _redirect_arg_str[tag]
620 if dot:
621 return "redirect_arg.%s" % v
622 else:
623 return v
624
625class redirect_arg_t(pybase.CompoundObj):
626 def tag(self):
627 # type: () -> int
628 return self._type_tag
629 pass
630
631class redirect_arg__CloseFd(redirect_arg_t):
632 _type_tag = 4
633 __slots__ = ()
634
635 def __init__(self, ):
636 # type: () -> None
637 pass
638
639 def PrettyTree(self, trav=None):
640 # type: (Optional[TraversalState]) -> hnode_t
641 trav = trav or TraversalState()
642 heap_id = id(self)
643 if heap_id in trav.seen:
644 return hnode.AlreadySeen(heap_id)
645 trav.seen[heap_id] = True
646 out_node = NewRecord('redirect_arg__CloseFd')
647 L = out_node.fields
648
649 return out_node
650
651 def _AbbreviatedTree(self, trav=None):
652 # type: (Optional[TraversalState]) -> hnode_t
653 trav = trav or TraversalState()
654 heap_id = id(self)
655 if heap_id in trav.seen:
656 return hnode.AlreadySeen(heap_id)
657 trav.seen[heap_id] = True
658 out_node = NewRecord('redirect_arg__CloseFd')
659 L = out_node.fields
660 return out_node
661
662 def AbbreviatedTree(self, trav=None):
663 # type: (Optional[TraversalState]) -> hnode_t
664 return self._AbbreviatedTree(trav=trav)
665
666class redirect_arg(object):
667 class Path(redirect_arg_t):
668 _type_tag = 1
669 __slots__ = ('filename',)
670
671 def __init__(self, filename):
672 # type: (str) -> None
673 self.filename = filename
674
675 @staticmethod
676 def CreateNull(alloc_lists=False):
677 # type: () -> redirect_arg.Path
678 return redirect_arg.Path('')
679
680 def PrettyTree(self, trav=None):
681 # type: (Optional[TraversalState]) -> hnode_t
682 trav = trav or TraversalState()
683 heap_id = id(self)
684 if heap_id in trav.seen:
685 return hnode.AlreadySeen(heap_id)
686 trav.seen[heap_id] = True
687 out_node = NewRecord('redirect_arg.Path')
688 L = out_node.fields
689
690 x0 = NewLeaf(self.filename, color_e.StringConst)
691 L.append(Field('filename', x0))
692
693 return out_node
694
695 def _AbbreviatedTree(self, trav=None):
696 # type: (Optional[TraversalState]) -> hnode_t
697 trav = trav or TraversalState()
698 heap_id = id(self)
699 if heap_id in trav.seen:
700 return hnode.AlreadySeen(heap_id)
701 trav.seen[heap_id] = True
702 out_node = NewRecord('redirect_arg.Path')
703 L = out_node.fields
704 x0 = NewLeaf(self.filename, color_e.StringConst)
705 L.append(Field('filename', x0))
706
707 return out_node
708
709 def AbbreviatedTree(self, trav=None):
710 # type: (Optional[TraversalState]) -> hnode_t
711 return self._AbbreviatedTree(trav=trav)
712
713 class CopyFd(redirect_arg_t):
714 _type_tag = 2
715 __slots__ = ('target_fd',)
716
717 def __init__(self, target_fd):
718 # type: (int) -> None
719 self.target_fd = target_fd
720
721 @staticmethod
722 def CreateNull(alloc_lists=False):
723 # type: () -> redirect_arg.CopyFd
724 return redirect_arg.CopyFd(-1)
725
726 def PrettyTree(self, trav=None):
727 # type: (Optional[TraversalState]) -> hnode_t
728 trav = trav or TraversalState()
729 heap_id = id(self)
730 if heap_id in trav.seen:
731 return hnode.AlreadySeen(heap_id)
732 trav.seen[heap_id] = True
733 out_node = NewRecord('redirect_arg.CopyFd')
734 L = out_node.fields
735
736 x0 = hnode.Leaf(str(self.target_fd), color_e.OtherConst)
737 L.append(Field('target_fd', x0))
738
739 return out_node
740
741 def _AbbreviatedTree(self, trav=None):
742 # type: (Optional[TraversalState]) -> hnode_t
743 trav = trav or TraversalState()
744 heap_id = id(self)
745 if heap_id in trav.seen:
746 return hnode.AlreadySeen(heap_id)
747 trav.seen[heap_id] = True
748 out_node = NewRecord('redirect_arg.CopyFd')
749 L = out_node.fields
750 x0 = hnode.Leaf(str(self.target_fd), color_e.OtherConst)
751 L.append(Field('target_fd', x0))
752
753 return out_node
754
755 def AbbreviatedTree(self, trav=None):
756 # type: (Optional[TraversalState]) -> hnode_t
757 return self._AbbreviatedTree(trav=trav)
758
759 class MoveFd(redirect_arg_t):
760 _type_tag = 3
761 __slots__ = ('target_fd',)
762
763 def __init__(self, target_fd):
764 # type: (int) -> None
765 self.target_fd = target_fd
766
767 @staticmethod
768 def CreateNull(alloc_lists=False):
769 # type: () -> redirect_arg.MoveFd
770 return redirect_arg.MoveFd(-1)
771
772 def PrettyTree(self, trav=None):
773 # type: (Optional[TraversalState]) -> hnode_t
774 trav = trav or TraversalState()
775 heap_id = id(self)
776 if heap_id in trav.seen:
777 return hnode.AlreadySeen(heap_id)
778 trav.seen[heap_id] = True
779 out_node = NewRecord('redirect_arg.MoveFd')
780 L = out_node.fields
781
782 x0 = hnode.Leaf(str(self.target_fd), color_e.OtherConst)
783 L.append(Field('target_fd', x0))
784
785 return out_node
786
787 def _AbbreviatedTree(self, trav=None):
788 # type: (Optional[TraversalState]) -> hnode_t
789 trav = trav or TraversalState()
790 heap_id = id(self)
791 if heap_id in trav.seen:
792 return hnode.AlreadySeen(heap_id)
793 trav.seen[heap_id] = True
794 out_node = NewRecord('redirect_arg.MoveFd')
795 L = out_node.fields
796 x0 = hnode.Leaf(str(self.target_fd), color_e.OtherConst)
797 L.append(Field('target_fd', x0))
798
799 return out_node
800
801 def AbbreviatedTree(self, trav=None):
802 # type: (Optional[TraversalState]) -> hnode_t
803 return self._AbbreviatedTree(trav=trav)
804
805 CloseFd = redirect_arg__CloseFd()
806
807 class HereDoc(redirect_arg_t):
808 _type_tag = 5
809 __slots__ = ('body',)
810
811 def __init__(self, body):
812 # type: (str) -> None
813 self.body = body
814
815 @staticmethod
816 def CreateNull(alloc_lists=False):
817 # type: () -> redirect_arg.HereDoc
818 return redirect_arg.HereDoc('')
819
820 def PrettyTree(self, trav=None):
821 # type: (Optional[TraversalState]) -> hnode_t
822 trav = trav or TraversalState()
823 heap_id = id(self)
824 if heap_id in trav.seen:
825 return hnode.AlreadySeen(heap_id)
826 trav.seen[heap_id] = True
827 out_node = NewRecord('redirect_arg.HereDoc')
828 L = out_node.fields
829
830 x0 = NewLeaf(self.body, color_e.StringConst)
831 L.append(Field('body', x0))
832
833 return out_node
834
835 def _AbbreviatedTree(self, trav=None):
836 # type: (Optional[TraversalState]) -> hnode_t
837 trav = trav or TraversalState()
838 heap_id = id(self)
839 if heap_id in trav.seen:
840 return hnode.AlreadySeen(heap_id)
841 trav.seen[heap_id] = True
842 out_node = NewRecord('redirect_arg.HereDoc')
843 L = out_node.fields
844 x0 = NewLeaf(self.body, color_e.StringConst)
845 L.append(Field('body', x0))
846
847 return out_node
848
849 def AbbreviatedTree(self, trav=None):
850 # type: (Optional[TraversalState]) -> hnode_t
851 return self._AbbreviatedTree(trav=trav)
852
853 pass
854
855class wait_status_e(object):
856 Proc = 1
857 Pipeline = 2
858 Cancelled = 3
859
860_wait_status_str = {
861 1: 'Proc',
862 2: 'Pipeline',
863 3: 'Cancelled',
864}
865
866def wait_status_str(tag, dot=True):
867 # type: (int, bool) -> str
868 v = _wait_status_str[tag]
869 if dot:
870 return "wait_status.%s" % v
871 else:
872 return v
873
874class wait_status_t(pybase.CompoundObj):
875 def tag(self):
876 # type: () -> int
877 return self._type_tag
878 pass
879
880class wait_status(object):
881 class Proc(wait_status_t):
882 _type_tag = 1
883 __slots__ = ('code',)
884
885 def __init__(self, code):
886 # type: (int) -> None
887 self.code = code
888
889 @staticmethod
890 def CreateNull(alloc_lists=False):
891 # type: () -> wait_status.Proc
892 return wait_status.Proc(-1)
893
894 def PrettyTree(self, trav=None):
895 # type: (Optional[TraversalState]) -> hnode_t
896 trav = trav or TraversalState()
897 heap_id = id(self)
898 if heap_id in trav.seen:
899 return hnode.AlreadySeen(heap_id)
900 trav.seen[heap_id] = True
901 out_node = NewRecord('wait_status.Proc')
902 L = out_node.fields
903
904 x0 = hnode.Leaf(str(self.code), color_e.OtherConst)
905 L.append(Field('code', x0))
906
907 return out_node
908
909 def _AbbreviatedTree(self, trav=None):
910 # type: (Optional[TraversalState]) -> hnode_t
911 trav = trav or TraversalState()
912 heap_id = id(self)
913 if heap_id in trav.seen:
914 return hnode.AlreadySeen(heap_id)
915 trav.seen[heap_id] = True
916 out_node = NewRecord('wait_status.Proc')
917 L = out_node.fields
918 x0 = hnode.Leaf(str(self.code), color_e.OtherConst)
919 L.append(Field('code', x0))
920
921 return out_node
922
923 def AbbreviatedTree(self, trav=None):
924 # type: (Optional[TraversalState]) -> hnode_t
925 return self._AbbreviatedTree(trav=trav)
926
927 class Pipeline(wait_status_t):
928 _type_tag = 2
929 __slots__ = ('codes',)
930
931 def __init__(self, codes):
932 # type: (List[int]) -> None
933 self.codes = codes
934
935 @staticmethod
936 def CreateNull(alloc_lists=False):
937 # type: () -> wait_status.Pipeline
938 return wait_status.Pipeline([] if alloc_lists else cast('List[int]', None))
939
940 def PrettyTree(self, trav=None):
941 # type: (Optional[TraversalState]) -> hnode_t
942 trav = trav or TraversalState()
943 heap_id = id(self)
944 if heap_id in trav.seen:
945 return hnode.AlreadySeen(heap_id)
946 trav.seen[heap_id] = True
947 out_node = NewRecord('wait_status.Pipeline')
948 L = out_node.fields
949
950 if self.codes is not None: # List
951 x0 = hnode.Array([])
952 for i0 in self.codes:
953 x0.children.append(hnode.Leaf(str(i0), color_e.OtherConst))
954 L.append(Field('codes', x0))
955
956 return out_node
957
958 def _AbbreviatedTree(self, trav=None):
959 # type: (Optional[TraversalState]) -> hnode_t
960 trav = trav or TraversalState()
961 heap_id = id(self)
962 if heap_id in trav.seen:
963 return hnode.AlreadySeen(heap_id)
964 trav.seen[heap_id] = True
965 out_node = NewRecord('wait_status.Pipeline')
966 L = out_node.fields
967 if self.codes is not None: # List
968 x0 = hnode.Array([])
969 for i0 in self.codes:
970 x0.children.append(hnode.Leaf(str(i0), color_e.OtherConst))
971 L.append(Field('codes', x0))
972
973 return out_node
974
975 def AbbreviatedTree(self, trav=None):
976 # type: (Optional[TraversalState]) -> hnode_t
977 return self._AbbreviatedTree(trav=trav)
978
979 class Cancelled(wait_status_t):
980 _type_tag = 3
981 __slots__ = ('sig_num',)
982
983 def __init__(self, sig_num):
984 # type: (int) -> None
985 self.sig_num = sig_num
986
987 @staticmethod
988 def CreateNull(alloc_lists=False):
989 # type: () -> wait_status.Cancelled
990 return wait_status.Cancelled(-1)
991
992 def PrettyTree(self, trav=None):
993 # type: (Optional[TraversalState]) -> hnode_t
994 trav = trav or TraversalState()
995 heap_id = id(self)
996 if heap_id in trav.seen:
997 return hnode.AlreadySeen(heap_id)
998 trav.seen[heap_id] = True
999 out_node = NewRecord('wait_status.Cancelled')
1000 L = out_node.fields
1001
1002 x0 = hnode.Leaf(str(self.sig_num), color_e.OtherConst)
1003 L.append(Field('sig_num', x0))
1004
1005 return out_node
1006
1007 def _AbbreviatedTree(self, trav=None):
1008 # type: (Optional[TraversalState]) -> hnode_t
1009 trav = trav or TraversalState()
1010 heap_id = id(self)
1011 if heap_id in trav.seen:
1012 return hnode.AlreadySeen(heap_id)
1013 trav.seen[heap_id] = True
1014 out_node = NewRecord('wait_status.Cancelled')
1015 L = out_node.fields
1016 x0 = hnode.Leaf(str(self.sig_num), color_e.OtherConst)
1017 L.append(Field('sig_num', x0))
1018
1019 return out_node
1020
1021 def AbbreviatedTree(self, trav=None):
1022 # type: (Optional[TraversalState]) -> hnode_t
1023 return self._AbbreviatedTree(trav=trav)
1024
1025 pass
1026
1027class flow_t(pybase.SimpleObj):
1028 pass
1029
1030class flow_e(object):
1031 Nothing = flow_t(1)
1032 Break = flow_t(2)
1033 Raise = flow_t(3)
1034
1035_flow_str = {
1036 1: 'flow.Nothing',
1037 2: 'flow.Break',
1038 3: 'flow.Raise',
1039}
1040
1041def flow_str(val):
1042 # type: (flow_t) -> str
1043 return _flow_str[val]
1044
1045class span_t(pybase.SimpleObj):
1046 pass
1047
1048class span_e(object):
1049 Black = span_t(1)
1050 Delim = span_t(2)
1051 Backslash = span_t(3)
1052
1053_span_str = {
1054 1: 'span.Black',
1055 2: 'span.Delim',
1056 3: 'span.Backslash',
1057}
1058
1059def span_str(val):
1060 # type: (span_t) -> str
1061 return _span_str[val]
1062
1063emit_t = int # type alias for integer
1064
1065class emit_i(object):
1066 Part = 1
1067 Delim = 2
1068 Empty = 3
1069 Escape = 4
1070 Nothing = 5
1071 ARRAY_SIZE = 6
1072
1073_emit_str = {
1074 1: 'emit.Part',
1075 2: 'emit.Delim',
1076 3: 'emit.Empty',
1077 4: 'emit.Escape',
1078 5: 'emit.Nothing',
1079}
1080
1081def emit_str(val):
1082 # type: (emit_t) -> str
1083 return _emit_str[val]
1084
1085state_t = int # type alias for integer
1086
1087class state_i(object):
1088 Invalid = 1
1089 Start = 2
1090 DE_White1 = 3
1091 DE_Gray = 4
1092 DE_White2 = 5
1093 Black = 6
1094 Backslash = 7
1095 Done = 8
1096 ARRAY_SIZE = 9
1097
1098_state_str = {
1099 1: 'state.Invalid',
1100 2: 'state.Start',
1101 3: 'state.DE_White1',
1102 4: 'state.DE_Gray',
1103 5: 'state.DE_White2',
1104 6: 'state.Black',
1105 7: 'state.Backslash',
1106 8: 'state.Done',
1107}
1108
1109def state_str(val):
1110 # type: (state_t) -> str
1111 return _state_str[val]
1112
1113char_kind_t = int # type alias for integer
1114
1115class char_kind_i(object):
1116 DE_White = 1
1117 DE_Gray = 2
1118 Black = 3
1119 Backslash = 4
1120 Sentinel = 5
1121 ARRAY_SIZE = 6
1122
1123_char_kind_str = {
1124 1: 'char_kind.DE_White',
1125 2: 'char_kind.DE_Gray',
1126 3: 'char_kind.Black',
1127 4: 'char_kind.Backslash',
1128 5: 'char_kind.Sentinel',
1129}
1130
1131def char_kind_str(val):
1132 # type: (char_kind_t) -> str
1133 return _char_kind_str[val]
1134
1135class job_state_t(pybase.SimpleObj):
1136 pass
1137
1138class job_state_e(object):
1139 Running = job_state_t(1)
1140 Done = job_state_t(2)
1141 Stopped = job_state_t(3)
1142
1143_job_state_str = {
1144 1: 'job_state.Running',
1145 2: 'job_state.Done',
1146 3: 'job_state.Stopped',
1147}
1148
1149def job_state_str(val):
1150 # type: (job_state_t) -> str
1151 return _job_state_str[val]
1152
1153class flag_type_t(pybase.SimpleObj):
1154 pass
1155
1156class flag_type_e(object):
1157 Bool = flag_type_t(1)
1158 Int = flag_type_t(2)
1159 Float = flag_type_t(3)
1160 Str = flag_type_t(4)
1161
1162_flag_type_str = {
1163 1: 'flag_type.Bool',
1164 2: 'flag_type.Int',
1165 3: 'flag_type.Float',
1166 4: 'flag_type.Str',
1167}
1168
1169def flag_type_str(val):
1170 # type: (flag_type_t) -> str
1171 return _flag_type_str[val]
1172
1173class trace_e(object):
1174 External = 1
1175 CommandSub = 2
1176 ForkWait = 3
1177 Fork = 4
1178 PipelinePart = 5
1179 ProcessSub = 6
1180 HereDoc = 7
1181
1182_trace_str = {
1183 1: 'External',
1184 2: 'CommandSub',
1185 3: 'ForkWait',
1186 4: 'Fork',
1187 5: 'PipelinePart',
1188 6: 'ProcessSub',
1189 7: 'HereDoc',
1190}
1191
1192def trace_str(tag, dot=True):
1193 # type: (int, bool) -> str
1194 v = _trace_str[tag]
1195 if dot:
1196 return "trace.%s" % v
1197 else:
1198 return v
1199
1200class trace_t(pybase.CompoundObj):
1201 def tag(self):
1202 # type: () -> int
1203 return self._type_tag
1204 pass
1205
1206class trace__CommandSub(trace_t):
1207 _type_tag = 2
1208 __slots__ = ()
1209
1210 def __init__(self, ):
1211 # type: () -> None
1212 pass
1213
1214 def PrettyTree(self, trav=None):
1215 # type: (Optional[TraversalState]) -> hnode_t
1216 trav = trav or TraversalState()
1217 heap_id = id(self)
1218 if heap_id in trav.seen:
1219 return hnode.AlreadySeen(heap_id)
1220 trav.seen[heap_id] = True
1221 out_node = NewRecord('trace__CommandSub')
1222 L = out_node.fields
1223
1224 return out_node
1225
1226 def _AbbreviatedTree(self, trav=None):
1227 # type: (Optional[TraversalState]) -> hnode_t
1228 trav = trav or TraversalState()
1229 heap_id = id(self)
1230 if heap_id in trav.seen:
1231 return hnode.AlreadySeen(heap_id)
1232 trav.seen[heap_id] = True
1233 out_node = NewRecord('trace__CommandSub')
1234 L = out_node.fields
1235 return out_node
1236
1237 def AbbreviatedTree(self, trav=None):
1238 # type: (Optional[TraversalState]) -> hnode_t
1239 return self._AbbreviatedTree(trav=trav)
1240
1241class trace__ForkWait(trace_t):
1242 _type_tag = 3
1243 __slots__ = ()
1244
1245 def __init__(self, ):
1246 # type: () -> None
1247 pass
1248
1249 def PrettyTree(self, trav=None):
1250 # type: (Optional[TraversalState]) -> hnode_t
1251 trav = trav or TraversalState()
1252 heap_id = id(self)
1253 if heap_id in trav.seen:
1254 return hnode.AlreadySeen(heap_id)
1255 trav.seen[heap_id] = True
1256 out_node = NewRecord('trace__ForkWait')
1257 L = out_node.fields
1258
1259 return out_node
1260
1261 def _AbbreviatedTree(self, trav=None):
1262 # type: (Optional[TraversalState]) -> hnode_t
1263 trav = trav or TraversalState()
1264 heap_id = id(self)
1265 if heap_id in trav.seen:
1266 return hnode.AlreadySeen(heap_id)
1267 trav.seen[heap_id] = True
1268 out_node = NewRecord('trace__ForkWait')
1269 L = out_node.fields
1270 return out_node
1271
1272 def AbbreviatedTree(self, trav=None):
1273 # type: (Optional[TraversalState]) -> hnode_t
1274 return self._AbbreviatedTree(trav=trav)
1275
1276class trace__Fork(trace_t):
1277 _type_tag = 4
1278 __slots__ = ()
1279
1280 def __init__(self, ):
1281 # type: () -> None
1282 pass
1283
1284 def PrettyTree(self, trav=None):
1285 # type: (Optional[TraversalState]) -> hnode_t
1286 trav = trav or TraversalState()
1287 heap_id = id(self)
1288 if heap_id in trav.seen:
1289 return hnode.AlreadySeen(heap_id)
1290 trav.seen[heap_id] = True
1291 out_node = NewRecord('trace__Fork')
1292 L = out_node.fields
1293
1294 return out_node
1295
1296 def _AbbreviatedTree(self, trav=None):
1297 # type: (Optional[TraversalState]) -> hnode_t
1298 trav = trav or TraversalState()
1299 heap_id = id(self)
1300 if heap_id in trav.seen:
1301 return hnode.AlreadySeen(heap_id)
1302 trav.seen[heap_id] = True
1303 out_node = NewRecord('trace__Fork')
1304 L = out_node.fields
1305 return out_node
1306
1307 def AbbreviatedTree(self, trav=None):
1308 # type: (Optional[TraversalState]) -> hnode_t
1309 return self._AbbreviatedTree(trav=trav)
1310
1311class trace__PipelinePart(trace_t):
1312 _type_tag = 5
1313 __slots__ = ()
1314
1315 def __init__(self, ):
1316 # type: () -> None
1317 pass
1318
1319 def PrettyTree(self, trav=None):
1320 # type: (Optional[TraversalState]) -> hnode_t
1321 trav = trav or TraversalState()
1322 heap_id = id(self)
1323 if heap_id in trav.seen:
1324 return hnode.AlreadySeen(heap_id)
1325 trav.seen[heap_id] = True
1326 out_node = NewRecord('trace__PipelinePart')
1327 L = out_node.fields
1328
1329 return out_node
1330
1331 def _AbbreviatedTree(self, trav=None):
1332 # type: (Optional[TraversalState]) -> hnode_t
1333 trav = trav or TraversalState()
1334 heap_id = id(self)
1335 if heap_id in trav.seen:
1336 return hnode.AlreadySeen(heap_id)
1337 trav.seen[heap_id] = True
1338 out_node = NewRecord('trace__PipelinePart')
1339 L = out_node.fields
1340 return out_node
1341
1342 def AbbreviatedTree(self, trav=None):
1343 # type: (Optional[TraversalState]) -> hnode_t
1344 return self._AbbreviatedTree(trav=trav)
1345
1346class trace__ProcessSub(trace_t):
1347 _type_tag = 6
1348 __slots__ = ()
1349
1350 def __init__(self, ):
1351 # type: () -> None
1352 pass
1353
1354 def PrettyTree(self, trav=None):
1355 # type: (Optional[TraversalState]) -> hnode_t
1356 trav = trav or TraversalState()
1357 heap_id = id(self)
1358 if heap_id in trav.seen:
1359 return hnode.AlreadySeen(heap_id)
1360 trav.seen[heap_id] = True
1361 out_node = NewRecord('trace__ProcessSub')
1362 L = out_node.fields
1363
1364 return out_node
1365
1366 def _AbbreviatedTree(self, trav=None):
1367 # type: (Optional[TraversalState]) -> hnode_t
1368 trav = trav or TraversalState()
1369 heap_id = id(self)
1370 if heap_id in trav.seen:
1371 return hnode.AlreadySeen(heap_id)
1372 trav.seen[heap_id] = True
1373 out_node = NewRecord('trace__ProcessSub')
1374 L = out_node.fields
1375 return out_node
1376
1377 def AbbreviatedTree(self, trav=None):
1378 # type: (Optional[TraversalState]) -> hnode_t
1379 return self._AbbreviatedTree(trav=trav)
1380
1381class trace__HereDoc(trace_t):
1382 _type_tag = 7
1383 __slots__ = ()
1384
1385 def __init__(self, ):
1386 # type: () -> None
1387 pass
1388
1389 def PrettyTree(self, trav=None):
1390 # type: (Optional[TraversalState]) -> hnode_t
1391 trav = trav or TraversalState()
1392 heap_id = id(self)
1393 if heap_id in trav.seen:
1394 return hnode.AlreadySeen(heap_id)
1395 trav.seen[heap_id] = True
1396 out_node = NewRecord('trace__HereDoc')
1397 L = out_node.fields
1398
1399 return out_node
1400
1401 def _AbbreviatedTree(self, trav=None):
1402 # type: (Optional[TraversalState]) -> hnode_t
1403 trav = trav or TraversalState()
1404 heap_id = id(self)
1405 if heap_id in trav.seen:
1406 return hnode.AlreadySeen(heap_id)
1407 trav.seen[heap_id] = True
1408 out_node = NewRecord('trace__HereDoc')
1409 L = out_node.fields
1410 return out_node
1411
1412 def AbbreviatedTree(self, trav=None):
1413 # type: (Optional[TraversalState]) -> hnode_t
1414 return self._AbbreviatedTree(trav=trav)
1415
1416class trace(object):
1417 class External(trace_t):
1418 _type_tag = 1
1419 __slots__ = ('argv',)
1420
1421 def __init__(self, argv):
1422 # type: (List[str]) -> None
1423 self.argv = argv
1424
1425 @staticmethod
1426 def CreateNull(alloc_lists=False):
1427 # type: () -> trace.External
1428 return trace.External([] if alloc_lists else cast('List[str]', None))
1429
1430 def PrettyTree(self, trav=None):
1431 # type: (Optional[TraversalState]) -> hnode_t
1432 trav = trav or TraversalState()
1433 heap_id = id(self)
1434 if heap_id in trav.seen:
1435 return hnode.AlreadySeen(heap_id)
1436 trav.seen[heap_id] = True
1437 out_node = NewRecord('trace.External')
1438 L = out_node.fields
1439
1440 if self.argv is not None: # List
1441 x0 = hnode.Array([])
1442 for i0 in self.argv:
1443 x0.children.append(NewLeaf(i0, color_e.StringConst))
1444 L.append(Field('argv', x0))
1445
1446 return out_node
1447
1448 def _AbbreviatedTree(self, trav=None):
1449 # type: (Optional[TraversalState]) -> hnode_t
1450 trav = trav or TraversalState()
1451 heap_id = id(self)
1452 if heap_id in trav.seen:
1453 return hnode.AlreadySeen(heap_id)
1454 trav.seen[heap_id] = True
1455 out_node = NewRecord('trace.External')
1456 L = out_node.fields
1457 if self.argv is not None: # List
1458 x0 = hnode.Array([])
1459 for i0 in self.argv:
1460 x0.children.append(NewLeaf(i0, color_e.StringConst))
1461 L.append(Field('argv', x0))
1462
1463 return out_node
1464
1465 def AbbreviatedTree(self, trav=None):
1466 # type: (Optional[TraversalState]) -> hnode_t
1467 return self._AbbreviatedTree(trav=trav)
1468
1469 CommandSub = trace__CommandSub()
1470
1471 ForkWait = trace__ForkWait()
1472
1473 Fork = trace__Fork()
1474
1475 PipelinePart = trace__PipelinePart()
1476
1477 ProcessSub = trace__ProcessSub()
1478
1479 HereDoc = trace__HereDoc()
1480
1481 pass
1482
1483class word_style_t(pybase.SimpleObj):
1484 pass
1485
1486class word_style_e(object):
1487 Expr = word_style_t(1)
1488 Unquoted = word_style_t(2)
1489 DQ = word_style_t(3)
1490 SQ = word_style_t(4)
1491
1492_word_style_str = {
1493 1: 'word_style.Expr',
1494 2: 'word_style.Unquoted',
1495 3: 'word_style.DQ',
1496 4: 'word_style.SQ',
1497}
1498
1499def word_style_str(val):
1500 # type: (word_style_t) -> str
1501 return _word_style_str[val]
1502
1503class comp_action_t(pybase.SimpleObj):
1504 pass
1505
1506class comp_action_e(object):
1507 Other = comp_action_t(1)
1508 FileSystem = comp_action_t(2)
1509 BashFunc = comp_action_t(3)
1510
1511_comp_action_str = {
1512 1: 'comp_action.Other',
1513 2: 'comp_action.FileSystem',
1514 3: 'comp_action.BashFunc',
1515}
1516
1517def comp_action_str(val):
1518 # type: (comp_action_t) -> str
1519 return _comp_action_str[val]
1520
1521class AssignArg(pybase.CompoundObj):
1522 _type_tag = 64
1523 __slots__ = ('var_name', 'rval', 'plus_eq', 'blame_word')
1524
1525 def __init__(self, var_name, rval, plus_eq, blame_word):
1526 # type: (str, Optional[value_t], bool, CompoundWord) -> None
1527 self.var_name = var_name
1528 self.rval = rval
1529 self.plus_eq = plus_eq
1530 self.blame_word = blame_word
1531
1532 @staticmethod
1533 def CreateNull(alloc_lists=False):
1534 # type: () -> AssignArg
1535 return AssignArg('', cast('Optional[value_t]', None), False, cast(CompoundWord, None))
1536
1537 def PrettyTree(self, trav=None):
1538 # type: (Optional[TraversalState]) -> hnode_t
1539 trav = trav or TraversalState()
1540 heap_id = id(self)
1541 if heap_id in trav.seen:
1542 return hnode.AlreadySeen(heap_id)
1543 trav.seen[heap_id] = True
1544 out_node = NewRecord('AssignArg')
1545 L = out_node.fields
1546
1547 x0 = NewLeaf(self.var_name, color_e.StringConst)
1548 L.append(Field('var_name', x0))
1549
1550 if self.rval is not None: # Optional
1551 x1 = self.rval.PrettyTree(trav=trav)
1552 L.append(Field('rval', x1))
1553
1554 x2 = hnode.Leaf('T' if self.plus_eq else 'F', color_e.OtherConst)
1555 L.append(Field('plus_eq', x2))
1556
1557 assert self.blame_word is not None
1558 x3 = self.blame_word.PrettyTree(trav=trav)
1559 L.append(Field('blame_word', x3))
1560
1561 return out_node
1562
1563 def _AbbreviatedTree(self, trav=None):
1564 # type: (Optional[TraversalState]) -> hnode_t
1565 trav = trav or TraversalState()
1566 heap_id = id(self)
1567 if heap_id in trav.seen:
1568 return hnode.AlreadySeen(heap_id)
1569 trav.seen[heap_id] = True
1570 out_node = NewRecord('AssignArg')
1571 L = out_node.fields
1572 x0 = NewLeaf(self.var_name, color_e.StringConst)
1573 L.append(Field('var_name', x0))
1574
1575 if self.rval is not None: # Optional
1576 x1 = self.rval.AbbreviatedTree(trav=trav)
1577 L.append(Field('rval', x1))
1578
1579 x2 = hnode.Leaf('T' if self.plus_eq else 'F', color_e.OtherConst)
1580 L.append(Field('plus_eq', x2))
1581
1582 assert self.blame_word is not None
1583 x3 = self.blame_word.AbbreviatedTree(trav=trav)
1584 L.append(Field('blame_word', x3))
1585
1586 return out_node
1587
1588 def AbbreviatedTree(self, trav=None):
1589 # type: (Optional[TraversalState]) -> hnode_t
1590 return self._AbbreviatedTree(trav=trav)
1591
1592class VarSubState(pybase.CompoundObj):
1593 _type_tag = 65
1594 __slots__ = ('join_array', 'is_type_query')
1595
1596 def __init__(self, join_array, is_type_query):
1597 # type: (bool, bool) -> None
1598 self.join_array = join_array
1599 self.is_type_query = is_type_query
1600
1601 @staticmethod
1602 def CreateNull(alloc_lists=False):
1603 # type: () -> VarSubState
1604 return VarSubState(False, False)
1605
1606 def PrettyTree(self, trav=None):
1607 # type: (Optional[TraversalState]) -> hnode_t
1608 trav = trav or TraversalState()
1609 heap_id = id(self)
1610 if heap_id in trav.seen:
1611 return hnode.AlreadySeen(heap_id)
1612 trav.seen[heap_id] = True
1613 out_node = NewRecord('VarSubState')
1614 L = out_node.fields
1615
1616 x0 = hnode.Leaf('T' if self.join_array else 'F', color_e.OtherConst)
1617 L.append(Field('join_array', x0))
1618
1619 x1 = hnode.Leaf('T' if self.is_type_query else 'F', color_e.OtherConst)
1620 L.append(Field('is_type_query', x1))
1621
1622 return out_node
1623
1624 def _AbbreviatedTree(self, trav=None):
1625 # type: (Optional[TraversalState]) -> hnode_t
1626 trav = trav or TraversalState()
1627 heap_id = id(self)
1628 if heap_id in trav.seen:
1629 return hnode.AlreadySeen(heap_id)
1630 trav.seen[heap_id] = True
1631 out_node = NewRecord('VarSubState')
1632 L = out_node.fields
1633 x0 = hnode.Leaf('T' if self.join_array else 'F', color_e.OtherConst)
1634 L.append(Field('join_array', x0))
1635
1636 x1 = hnode.Leaf('T' if self.is_type_query else 'F', color_e.OtherConst)
1637 L.append(Field('is_type_query', x1))
1638
1639 return out_node
1640
1641 def AbbreviatedTree(self, trav=None):
1642 # type: (Optional[TraversalState]) -> hnode_t
1643 return self._AbbreviatedTree(trav=trav)
1644
1645class Cell(pybase.CompoundObj):
1646 _type_tag = 66
1647 __slots__ = ('exported', 'readonly', 'nameref', 'val')
1648
1649 def __init__(self, exported, readonly, nameref, val):
1650 # type: (bool, bool, bool, value_t) -> None
1651 self.exported = exported
1652 self.readonly = readonly
1653 self.nameref = nameref
1654 self.val = val
1655
1656 @staticmethod
1657 def CreateNull(alloc_lists=False):
1658 # type: () -> Cell
1659 return Cell(False, False, False, cast(value_t, None))
1660
1661 def PrettyTree(self, trav=None):
1662 # type: (Optional[TraversalState]) -> hnode_t
1663 trav = trav or TraversalState()
1664 heap_id = id(self)
1665 if heap_id in trav.seen:
1666 return hnode.AlreadySeen(heap_id)
1667 trav.seen[heap_id] = True
1668 out_node = NewRecord('Cell')
1669 L = out_node.fields
1670
1671 x0 = hnode.Leaf('T' if self.exported else 'F', color_e.OtherConst)
1672 L.append(Field('exported', x0))
1673
1674 x1 = hnode.Leaf('T' if self.readonly else 'F', color_e.OtherConst)
1675 L.append(Field('readonly', x1))
1676
1677 x2 = hnode.Leaf('T' if self.nameref else 'F', color_e.OtherConst)
1678 L.append(Field('nameref', x2))
1679
1680 assert self.val is not None
1681 x3 = self.val.PrettyTree(trav=trav)
1682 L.append(Field('val', x3))
1683
1684 return out_node
1685
1686 def _AbbreviatedTree(self, trav=None):
1687 # type: (Optional[TraversalState]) -> hnode_t
1688 trav = trav or TraversalState()
1689 heap_id = id(self)
1690 if heap_id in trav.seen:
1691 return hnode.AlreadySeen(heap_id)
1692 trav.seen[heap_id] = True
1693 out_node = NewRecord('Cell')
1694 L = out_node.fields
1695 x0 = hnode.Leaf('T' if self.exported else 'F', color_e.OtherConst)
1696 L.append(Field('exported', x0))
1697
1698 x1 = hnode.Leaf('T' if self.readonly else 'F', color_e.OtherConst)
1699 L.append(Field('readonly', x1))
1700
1701 x2 = hnode.Leaf('T' if self.nameref else 'F', color_e.OtherConst)
1702 L.append(Field('nameref', x2))
1703
1704 assert self.val is not None
1705 x3 = self.val.AbbreviatedTree(trav=trav)
1706 L.append(Field('val', x3))
1707
1708 return out_node
1709
1710 def AbbreviatedTree(self, trav=None):
1711 # type: (Optional[TraversalState]) -> hnode_t
1712 return self._AbbreviatedTree(trav=trav)
1713
1714class VTestPlace(pybase.CompoundObj):
1715 _type_tag = 67
1716 __slots__ = ('name', 'index')
1717
1718 def __init__(self, name, index):
1719 # type: (Optional[str], Optional[a_index_t]) -> None
1720 self.name = name
1721 self.index = index
1722
1723 @staticmethod
1724 def CreateNull(alloc_lists=False):
1725 # type: () -> VTestPlace
1726 return VTestPlace(cast('Optional[str]', None), cast('Optional[a_index_t]', None))
1727
1728 def PrettyTree(self, trav=None):
1729 # type: (Optional[TraversalState]) -> hnode_t
1730 trav = trav or TraversalState()
1731 heap_id = id(self)
1732 if heap_id in trav.seen:
1733 return hnode.AlreadySeen(heap_id)
1734 trav.seen[heap_id] = True
1735 out_node = NewRecord('VTestPlace')
1736 L = out_node.fields
1737
1738 if self.name is not None: # Optional
1739 x0 = NewLeaf(self.name, color_e.StringConst)
1740 L.append(Field('name', x0))
1741
1742 if self.index is not None: # Optional
1743 x1 = self.index.PrettyTree(trav=trav)
1744 L.append(Field('index', x1))
1745
1746 return out_node
1747
1748 def _AbbreviatedTree(self, trav=None):
1749 # type: (Optional[TraversalState]) -> hnode_t
1750 trav = trav or TraversalState()
1751 heap_id = id(self)
1752 if heap_id in trav.seen:
1753 return hnode.AlreadySeen(heap_id)
1754 trav.seen[heap_id] = True
1755 out_node = NewRecord('VTestPlace')
1756 L = out_node.fields
1757 if self.name is not None: # Optional
1758 x0 = NewLeaf(self.name, color_e.StringConst)
1759 L.append(Field('name', x0))
1760
1761 if self.index is not None: # Optional
1762 x1 = self.index.AbbreviatedTree(trav=trav)
1763 L.append(Field('index', x1))
1764
1765 return out_node
1766
1767 def AbbreviatedTree(self, trav=None):
1768 # type: (Optional[TraversalState]) -> hnode_t
1769 return self._AbbreviatedTree(trav=trav)
1770
1771class RedirValue(pybase.CompoundObj):
1772 _type_tag = 68
1773 __slots__ = ('op_id', 'op_loc', 'loc', 'arg')
1774
1775 def __init__(self, op_id, op_loc, loc, arg):
1776 # type: (Id_t, loc_t, redir_loc_t, redirect_arg_t) -> None
1777 self.op_id = op_id
1778 self.op_loc = op_loc
1779 self.loc = loc
1780 self.arg = arg
1781
1782 @staticmethod
1783 def CreateNull(alloc_lists=False):
1784 # type: () -> RedirValue
1785 return RedirValue(-1, cast(loc_t, None), cast(redir_loc_t, None), cast(redirect_arg_t, None))
1786
1787 def PrettyTree(self, trav=None):
1788 # type: (Optional[TraversalState]) -> hnode_t
1789 trav = trav or TraversalState()
1790 heap_id = id(self)
1791 if heap_id in trav.seen:
1792 return hnode.AlreadySeen(heap_id)
1793 trav.seen[heap_id] = True
1794 out_node = NewRecord('RedirValue')
1795 L = out_node.fields
1796
1797 x0 = hnode.Leaf(Id_str(self.op_id), color_e.UserType)
1798 L.append(Field('op_id', x0))
1799
1800 assert self.op_loc is not None
1801 x1 = self.op_loc.PrettyTree(trav=trav)
1802 L.append(Field('op_loc', x1))
1803
1804 assert self.loc is not None
1805 x2 = self.loc.PrettyTree(trav=trav)
1806 L.append(Field('loc', x2))
1807
1808 assert self.arg is not None
1809 x3 = self.arg.PrettyTree(trav=trav)
1810 L.append(Field('arg', x3))
1811
1812 return out_node
1813
1814 def _AbbreviatedTree(self, trav=None):
1815 # type: (Optional[TraversalState]) -> hnode_t
1816 trav = trav or TraversalState()
1817 heap_id = id(self)
1818 if heap_id in trav.seen:
1819 return hnode.AlreadySeen(heap_id)
1820 trav.seen[heap_id] = True
1821 out_node = NewRecord('RedirValue')
1822 L = out_node.fields
1823 x0 = hnode.Leaf(Id_str(self.op_id), color_e.UserType)
1824 L.append(Field('op_id', x0))
1825
1826 assert self.op_loc is not None
1827 x1 = self.op_loc.AbbreviatedTree(trav=trav)
1828 L.append(Field('op_loc', x1))
1829
1830 assert self.loc is not None
1831 x2 = self.loc.AbbreviatedTree(trav=trav)
1832 L.append(Field('loc', x2))
1833
1834 assert self.arg is not None
1835 x3 = self.arg.AbbreviatedTree(trav=trav)
1836 L.append(Field('arg', x3))
1837
1838 return out_node
1839
1840 def AbbreviatedTree(self, trav=None):
1841 # type: (Optional[TraversalState]) -> hnode_t
1842 return self._AbbreviatedTree(trav=trav)
1843
1844class StatusArray(pybase.CompoundObj):
1845 _type_tag = 69
1846 __slots__ = ('codes', 'locs')
1847
1848 def __init__(self, codes, locs):
1849 # type: (Optional[List[int]], Optional[List[loc_t]]) -> None
1850 self.codes = codes
1851 self.locs = locs
1852
1853 @staticmethod
1854 def CreateNull(alloc_lists=False):
1855 # type: () -> StatusArray
1856 return StatusArray(cast('Optional[List[int]]', None), cast('Optional[List[loc_t]]', None))
1857
1858 def PrettyTree(self, trav=None):
1859 # type: (Optional[TraversalState]) -> hnode_t
1860 trav = trav or TraversalState()
1861 heap_id = id(self)
1862 if heap_id in trav.seen:
1863 return hnode.AlreadySeen(heap_id)
1864 trav.seen[heap_id] = True
1865 out_node = NewRecord('StatusArray')
1866 L = out_node.fields
1867
1868 if self.codes is not None: # List
1869 x0 = hnode.Array([])
1870 for i0 in self.codes:
1871 x0.children.append(hnode.Leaf(str(i0), color_e.OtherConst))
1872 L.append(Field('codes', x0))
1873
1874 if self.locs is not None: # List
1875 x1 = hnode.Array([])
1876 for i1 in self.locs:
1877 h = (hnode.Leaf("_", color_e.OtherConst) if i1 is None else
1878 i1.PrettyTree(trav=trav))
1879 x1.children.append(h)
1880 L.append(Field('locs', x1))
1881
1882 return out_node
1883
1884 def _AbbreviatedTree(self, trav=None):
1885 # type: (Optional[TraversalState]) -> hnode_t
1886 trav = trav or TraversalState()
1887 heap_id = id(self)
1888 if heap_id in trav.seen:
1889 return hnode.AlreadySeen(heap_id)
1890 trav.seen[heap_id] = True
1891 out_node = NewRecord('StatusArray')
1892 L = out_node.fields
1893 if self.codes is not None: # List
1894 x0 = hnode.Array([])
1895 for i0 in self.codes:
1896 x0.children.append(hnode.Leaf(str(i0), color_e.OtherConst))
1897 L.append(Field('codes', x0))
1898
1899 if self.locs is not None: # List
1900 x1 = hnode.Array([])
1901 for i1 in self.locs:
1902 h = (hnode.Leaf("_", color_e.OtherConst) if i1 is None else
1903 i1.AbbreviatedTree(trav=trav))
1904 x1.children.append(h)
1905 L.append(Field('locs', x1))
1906
1907 return out_node
1908
1909 def AbbreviatedTree(self, trav=None):
1910 # type: (Optional[TraversalState]) -> hnode_t
1911 return self._AbbreviatedTree(trav=trav)
1912
1913class CommandStatus(pybase.CompoundObj):
1914 _type_tag = 70
1915 __slots__ = ('check_errexit', 'show_code', 'pipe_negated', 'pipe_status',
1916 'pipe_locs')
1917
1918 def __init__(self, check_errexit, show_code, pipe_negated, pipe_status,
1919 pipe_locs):
1920 # type: (bool, bool, bool, Optional[List[int]], Optional[List[loc_t]]) -> None
1921 self.check_errexit = check_errexit
1922 self.show_code = show_code
1923 self.pipe_negated = pipe_negated
1924 self.pipe_status = pipe_status
1925 self.pipe_locs = pipe_locs
1926
1927 @staticmethod
1928 def CreateNull(alloc_lists=False):
1929 # type: () -> CommandStatus
1930 return CommandStatus(False, False, False, cast('Optional[List[int]]', None), cast('Optional[List[loc_t]]', None))
1931
1932 def PrettyTree(self, trav=None):
1933 # type: (Optional[TraversalState]) -> hnode_t
1934 trav = trav or TraversalState()
1935 heap_id = id(self)
1936 if heap_id in trav.seen:
1937 return hnode.AlreadySeen(heap_id)
1938 trav.seen[heap_id] = True
1939 out_node = NewRecord('CommandStatus')
1940 L = out_node.fields
1941
1942 x0 = hnode.Leaf('T' if self.check_errexit else 'F', color_e.OtherConst)
1943 L.append(Field('check_errexit', x0))
1944
1945 x1 = hnode.Leaf('T' if self.show_code else 'F', color_e.OtherConst)
1946 L.append(Field('show_code', x1))
1947
1948 x2 = hnode.Leaf('T' if self.pipe_negated else 'F', color_e.OtherConst)
1949 L.append(Field('pipe_negated', x2))
1950
1951 if self.pipe_status is not None: # List
1952 x3 = hnode.Array([])
1953 for i3 in self.pipe_status:
1954 x3.children.append(hnode.Leaf(str(i3), color_e.OtherConst))
1955 L.append(Field('pipe_status', x3))
1956
1957 if self.pipe_locs is not None: # List
1958 x4 = hnode.Array([])
1959 for i4 in self.pipe_locs:
1960 h = (hnode.Leaf("_", color_e.OtherConst) if i4 is None else
1961 i4.PrettyTree(trav=trav))
1962 x4.children.append(h)
1963 L.append(Field('pipe_locs', x4))
1964
1965 return out_node
1966
1967 def _AbbreviatedTree(self, trav=None):
1968 # type: (Optional[TraversalState]) -> hnode_t
1969 trav = trav or TraversalState()
1970 heap_id = id(self)
1971 if heap_id in trav.seen:
1972 return hnode.AlreadySeen(heap_id)
1973 trav.seen[heap_id] = True
1974 out_node = NewRecord('CommandStatus')
1975 L = out_node.fields
1976 x0 = hnode.Leaf('T' if self.check_errexit else 'F', color_e.OtherConst)
1977 L.append(Field('check_errexit', x0))
1978
1979 x1 = hnode.Leaf('T' if self.show_code else 'F', color_e.OtherConst)
1980 L.append(Field('show_code', x1))
1981
1982 x2 = hnode.Leaf('T' if self.pipe_negated else 'F', color_e.OtherConst)
1983 L.append(Field('pipe_negated', x2))
1984
1985 if self.pipe_status is not None: # List
1986 x3 = hnode.Array([])
1987 for i3 in self.pipe_status:
1988 x3.children.append(hnode.Leaf(str(i3), color_e.OtherConst))
1989 L.append(Field('pipe_status', x3))
1990
1991 if self.pipe_locs is not None: # List
1992 x4 = hnode.Array([])
1993 for i4 in self.pipe_locs:
1994 h = (hnode.Leaf("_", color_e.OtherConst) if i4 is None else
1995 i4.AbbreviatedTree(trav=trav))
1996 x4.children.append(h)
1997 L.append(Field('pipe_locs', x4))
1998
1999 return out_node
2000
2001 def AbbreviatedTree(self, trav=None):
2002 # type: (Optional[TraversalState]) -> hnode_t
2003 return self._AbbreviatedTree(trav=trav)
2004
2005class HayNode(pybase.CompoundObj):
2006 _type_tag = 71
2007 __slots__ = ('children',)
2008
2009 def __init__(self, children):
2010 # type: (Dict[str, HayNode]) -> None
2011 self.children = children
2012
2013 @staticmethod
2014 def CreateNull(alloc_lists=False):
2015 # type: () -> HayNode
2016 return HayNode(cast('Dict[str, HayNode]', None))
2017
2018 def PrettyTree(self, trav=None):
2019 # type: (Optional[TraversalState]) -> hnode_t
2020 trav = trav or TraversalState()
2021 heap_id = id(self)
2022 if heap_id in trav.seen:
2023 return hnode.AlreadySeen(heap_id)
2024 trav.seen[heap_id] = True
2025 out_node = NewRecord('HayNode')
2026 L = out_node.fields
2027
2028 if self.children is not None: # Dict
2029 m = hnode.Leaf("Dict", color_e.OtherConst)
2030 x0 = hnode.Array([m])
2031 for k0, v0 in self.children.iteritems():
2032 x0.children.append(NewLeaf(k0, color_e.StringConst))
2033 x0.children.append(v0.PrettyTree(trav=trav))
2034 L.append(Field('children', x0))
2035
2036 return out_node
2037
2038 def _AbbreviatedTree(self, trav=None):
2039 # type: (Optional[TraversalState]) -> hnode_t
2040 trav = trav or TraversalState()
2041 heap_id = id(self)
2042 if heap_id in trav.seen:
2043 return hnode.AlreadySeen(heap_id)
2044 trav.seen[heap_id] = True
2045 out_node = NewRecord('HayNode')
2046 L = out_node.fields
2047 if self.children is not None: # Dict
2048 m = hnode.Leaf("Dict", color_e.OtherConst)
2049 x0 = hnode.Array([m])
2050 for k0, v0 in self.children.iteritems():
2051 x0.children.append(NewLeaf(k0, color_e.StringConst))
2052 x0.children.append(v0.AbbreviatedTree(trav=trav))
2053 L.append(Field('children', x0))
2054
2055 return out_node
2056
2057 def AbbreviatedTree(self, trav=None):
2058 # type: (Optional[TraversalState]) -> hnode_t
2059 return self._AbbreviatedTree(trav=trav)
2060