1// Code generated by gocc; DO NOT EDIT.
2
3package parser
4
5import "miller/src/dsl"
6
7type (
8	ProdTab      [numProductions]ProdTabEntry
9	ProdTabEntry struct {
10		String     string
11		Id         string
12		NTType     int
13		Index      int
14		NumSymbols int
15		ReduceFunc func([]Attrib) (Attrib, error)
16	}
17	Attrib interface {
18	}
19)
20
21var productionsTable = ProdTab{
22	ProdTabEntry{
23		String: `S' : Root	<<  >>`,
24		Id:         "S'",
25		NTType:     0,
26		Index:      0,
27		NumSymbols: 1,
28		ReduceFunc: func(X []Attrib) (Attrib, error) {
29			return X[0], nil
30		},
31	},
32	ProdTabEntry{
33		String: `Root : StatementBlock	<< dsl.NewAST(X[0]) >>`,
34		Id:         "Root",
35		NTType:     1,
36		Index:      1,
37		NumSymbols: 1,
38		ReduceFunc: func(X []Attrib) (Attrib, error) {
39			return dsl.NewAST(X[0])
40		},
41	},
42	ProdTabEntry{
43		String: `StatementBlock : empty	<< dsl.NewASTNodeZary(nil, dsl.NodeTypeStatementBlock) >>`,
44		Id:         "StatementBlock",
45		NTType:     2,
46		Index:      2,
47		NumSymbols: 0,
48		ReduceFunc: func(X []Attrib) (Attrib, error) {
49			return dsl.NewASTNodeZary(nil, dsl.NodeTypeStatementBlock)
50		},
51	},
52	ProdTabEntry{
53		String: `StatementBlock : NonEmptyStatementBlock	<< dsl.Wrap(X[0]) >>`,
54		Id:         "StatementBlock",
55		NTType:     2,
56		Index:      3,
57		NumSymbols: 1,
58		ReduceFunc: func(X []Attrib) (Attrib, error) {
59			return dsl.Wrap(X[0])
60		},
61	},
62	ProdTabEntry{
63		String: `NonEmptyStatementBlock : BracelessStatement	<< dsl.NewASTNodeUnary(nil, X[0], dsl.NodeTypeStatementBlock) >>`,
64		Id:         "NonEmptyStatementBlock",
65		NTType:     3,
66		Index:      4,
67		NumSymbols: 1,
68		ReduceFunc: func(X []Attrib) (Attrib, error) {
69			return dsl.NewASTNodeUnary(nil, X[0], dsl.NodeTypeStatementBlock)
70		},
71	},
72	ProdTabEntry{
73		String: `NonEmptyStatementBlock : BracefulStatement	<< dsl.NewASTNodeUnary(nil, X[0], dsl.NodeTypeStatementBlock) >>`,
74		Id:         "NonEmptyStatementBlock",
75		NTType:     3,
76		Index:      5,
77		NumSymbols: 1,
78		ReduceFunc: func(X []Attrib) (Attrib, error) {
79			return dsl.NewASTNodeUnary(nil, X[0], dsl.NodeTypeStatementBlock)
80		},
81	},
82	ProdTabEntry{
83		String: `NonEmptyStatementBlock : ";" StatementBlock	<< dsl.Wrap(X[1]) >>`,
84		Id:         "NonEmptyStatementBlock",
85		NTType:     3,
86		Index:      6,
87		NumSymbols: 2,
88		ReduceFunc: func(X []Attrib) (Attrib, error) {
89			return dsl.Wrap(X[1])
90		},
91	},
92	ProdTabEntry{
93		String: `NonEmptyStatementBlock : BracelessStatement ";" StatementBlock	<< dsl.PrependChild(X[2], X[0]) >>`,
94		Id:         "NonEmptyStatementBlock",
95		NTType:     3,
96		Index:      7,
97		NumSymbols: 3,
98		ReduceFunc: func(X []Attrib) (Attrib, error) {
99			return dsl.PrependChild(X[2], X[0])
100		},
101	},
102	ProdTabEntry{
103		String: `NonEmptyStatementBlock : BracefulStatement ";" StatementBlock	<< dsl.PrependChild(X[2], X[0]) >>`,
104		Id:         "NonEmptyStatementBlock",
105		NTType:     3,
106		Index:      8,
107		NumSymbols: 3,
108		ReduceFunc: func(X []Attrib) (Attrib, error) {
109			return dsl.PrependChild(X[2], X[0])
110		},
111	},
112	ProdTabEntry{
113		String: `NonEmptyStatementBlock : BracefulStatement BracefulStatement StatementBlock	<< dsl.PrependTwoChildren(X[2], X[0], X[1]) >>`,
114		Id:         "NonEmptyStatementBlock",
115		NTType:     3,
116		Index:      9,
117		NumSymbols: 3,
118		ReduceFunc: func(X []Attrib) (Attrib, error) {
119			return dsl.PrependTwoChildren(X[2], X[0], X[1])
120		},
121	},
122	ProdTabEntry{
123		String: `NonEmptyStatementBlock : BracefulStatement BracelessStatement	<< dsl.NewASTNodeBinary(nil, X[0], X[1], dsl.NodeTypeStatementBlock) >>`,
124		Id:         "NonEmptyStatementBlock",
125		NTType:     3,
126		Index:      10,
127		NumSymbols: 2,
128		ReduceFunc: func(X []Attrib) (Attrib, error) {
129			return dsl.NewASTNodeBinary(nil, X[0], X[1], dsl.NodeTypeStatementBlock)
130		},
131	},
132	ProdTabEntry{
133		String: `NonEmptyStatementBlock : BracefulStatement BracelessStatement ";"	<< dsl.NewASTNodeBinary(nil, X[0], X[1], dsl.NodeTypeStatementBlock) >>`,
134		Id:         "NonEmptyStatementBlock",
135		NTType:     3,
136		Index:      11,
137		NumSymbols: 3,
138		ReduceFunc: func(X []Attrib) (Attrib, error) {
139			return dsl.NewASTNodeBinary(nil, X[0], X[1], dsl.NodeTypeStatementBlock)
140		},
141	},
142	ProdTabEntry{
143		String: `NonEmptyStatementBlock : BracefulStatement BracelessStatement ";" NonEmptyStatementBlock	<< dsl.PrependTwoChildren(X[3], X[0], X[1]) >>`,
144		Id:         "NonEmptyStatementBlock",
145		NTType:     3,
146		Index:      12,
147		NumSymbols: 4,
148		ReduceFunc: func(X []Attrib) (Attrib, error) {
149			return dsl.PrependTwoChildren(X[3], X[0], X[1])
150		},
151	},
152	ProdTabEntry{
153		String: `StatementBlockInBraces : "{" StatementBlock "}"	<< dsl.Wrap(X[1]) >>`,
154		Id:         "StatementBlockInBraces",
155		NTType:     4,
156		Index:      13,
157		NumSymbols: 3,
158		ReduceFunc: func(X []Attrib) (Attrib, error) {
159			return dsl.Wrap(X[1])
160		},
161	},
162	ProdTabEntry{
163		String: `BracelessStatement : Assignment	<<  >>`,
164		Id:         "BracelessStatement",
165		NTType:     5,
166		Index:      14,
167		NumSymbols: 1,
168		ReduceFunc: func(X []Attrib) (Attrib, error) {
169			return X[0], nil
170		},
171	},
172	ProdTabEntry{
173		String: `BracelessStatement : Unset	<<  >>`,
174		Id:         "BracelessStatement",
175		NTType:     5,
176		Index:      15,
177		NumSymbols: 1,
178		ReduceFunc: func(X []Attrib) (Attrib, error) {
179			return X[0], nil
180		},
181	},
182	ProdTabEntry{
183		String: `BracelessStatement : BareBoolean	<<  >>`,
184		Id:         "BracelessStatement",
185		NTType:     5,
186		Index:      16,
187		NumSymbols: 1,
188		ReduceFunc: func(X []Attrib) (Attrib, error) {
189			return X[0], nil
190		},
191	},
192	ProdTabEntry{
193		String: `BracelessStatement : FilterStatement	<<  >>`,
194		Id:         "BracelessStatement",
195		NTType:     5,
196		Index:      17,
197		NumSymbols: 1,
198		ReduceFunc: func(X []Attrib) (Attrib, error) {
199			return X[0], nil
200		},
201	},
202	ProdTabEntry{
203		String: `BracelessStatement : PrintStatement	<<  >>`,
204		Id:         "BracelessStatement",
205		NTType:     5,
206		Index:      18,
207		NumSymbols: 1,
208		ReduceFunc: func(X []Attrib) (Attrib, error) {
209			return X[0], nil
210		},
211	},
212	ProdTabEntry{
213		String: `BracelessStatement : PrintnStatement	<<  >>`,
214		Id:         "BracelessStatement",
215		NTType:     5,
216		Index:      19,
217		NumSymbols: 1,
218		ReduceFunc: func(X []Attrib) (Attrib, error) {
219			return X[0], nil
220		},
221	},
222	ProdTabEntry{
223		String: `BracelessStatement : EprintStatement	<<  >>`,
224		Id:         "BracelessStatement",
225		NTType:     5,
226		Index:      20,
227		NumSymbols: 1,
228		ReduceFunc: func(X []Attrib) (Attrib, error) {
229			return X[0], nil
230		},
231	},
232	ProdTabEntry{
233		String: `BracelessStatement : EprintnStatement	<<  >>`,
234		Id:         "BracelessStatement",
235		NTType:     5,
236		Index:      21,
237		NumSymbols: 1,
238		ReduceFunc: func(X []Attrib) (Attrib, error) {
239			return X[0], nil
240		},
241	},
242	ProdTabEntry{
243		String: `BracelessStatement : DumpStatement	<<  >>`,
244		Id:         "BracelessStatement",
245		NTType:     5,
246		Index:      22,
247		NumSymbols: 1,
248		ReduceFunc: func(X []Attrib) (Attrib, error) {
249			return X[0], nil
250		},
251	},
252	ProdTabEntry{
253		String: `BracelessStatement : EdumpStatement	<<  >>`,
254		Id:         "BracelessStatement",
255		NTType:     5,
256		Index:      23,
257		NumSymbols: 1,
258		ReduceFunc: func(X []Attrib) (Attrib, error) {
259			return X[0], nil
260		},
261	},
262	ProdTabEntry{
263		String: `BracelessStatement : TeeStatement	<<  >>`,
264		Id:         "BracelessStatement",
265		NTType:     5,
266		Index:      24,
267		NumSymbols: 1,
268		ReduceFunc: func(X []Attrib) (Attrib, error) {
269			return X[0], nil
270		},
271	},
272	ProdTabEntry{
273		String: `BracelessStatement : EmitFStatement	<<  >>`,
274		Id:         "BracelessStatement",
275		NTType:     5,
276		Index:      25,
277		NumSymbols: 1,
278		ReduceFunc: func(X []Attrib) (Attrib, error) {
279			return X[0], nil
280		},
281	},
282	ProdTabEntry{
283		String: `BracelessStatement : EmitStatement	<<  >>`,
284		Id:         "BracelessStatement",
285		NTType:     5,
286		Index:      26,
287		NumSymbols: 1,
288		ReduceFunc: func(X []Attrib) (Attrib, error) {
289			return X[0], nil
290		},
291	},
292	ProdTabEntry{
293		String: `BracelessStatement : EmitPStatement	<<  >>`,
294		Id:         "BracelessStatement",
295		NTType:     5,
296		Index:      27,
297		NumSymbols: 1,
298		ReduceFunc: func(X []Attrib) (Attrib, error) {
299			return X[0], nil
300		},
301	},
302	ProdTabEntry{
303		String: `BracelessStatement : DoWhileLoop	<<  >>`,
304		Id:         "BracelessStatement",
305		NTType:     5,
306		Index:      28,
307		NumSymbols: 1,
308		ReduceFunc: func(X []Attrib) (Attrib, error) {
309			return X[0], nil
310		},
311	},
312	ProdTabEntry{
313		String: `BracelessStatement : BreakStatement	<<  >>`,
314		Id:         "BracelessStatement",
315		NTType:     5,
316		Index:      29,
317		NumSymbols: 1,
318		ReduceFunc: func(X []Attrib) (Attrib, error) {
319			return X[0], nil
320		},
321	},
322	ProdTabEntry{
323		String: `BracelessStatement : ContinueStatement	<<  >>`,
324		Id:         "BracelessStatement",
325		NTType:     5,
326		Index:      30,
327		NumSymbols: 1,
328		ReduceFunc: func(X []Attrib) (Attrib, error) {
329			return X[0], nil
330		},
331	},
332	ProdTabEntry{
333		String: `BracelessStatement : ReturnStatement	<<  >>`,
334		Id:         "BracelessStatement",
335		NTType:     5,
336		Index:      31,
337		NumSymbols: 1,
338		ReduceFunc: func(X []Attrib) (Attrib, error) {
339			return X[0], nil
340		},
341	},
342	ProdTabEntry{
343		String: `BracelessStatement : SubroutineCallsite	<<  >>`,
344		Id:         "BracelessStatement",
345		NTType:     5,
346		Index:      32,
347		NumSymbols: 1,
348		ReduceFunc: func(X []Attrib) (Attrib, error) {
349			return X[0], nil
350		},
351	},
352	ProdTabEntry{
353		String: `Assignment : Lvalue "=" Rvalue	<< dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeAssignment) >>`,
354		Id:         "Assignment",
355		NTType:     6,
356		Index:      33,
357		NumSymbols: 3,
358		ReduceFunc: func(X []Attrib) (Attrib, error) {
359			return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeAssignment)
360		},
361	},
362	ProdTabEntry{
363		String: `Unset : unset Lvalue	<< dsl.NewASTNodeUnary(X[0], X[1], dsl.NodeTypeUnset) >>`,
364		Id:         "Unset",
365		NTType:     7,
366		Index:      34,
367		NumSymbols: 2,
368		ReduceFunc: func(X []Attrib) (Attrib, error) {
369			return dsl.NewASTNodeUnary(X[0], X[1], dsl.NodeTypeUnset)
370		},
371	},
372	ProdTabEntry{
373		String: `Lvalue : Rvalue	<<  >>`,
374		Id:         "Lvalue",
375		NTType:     8,
376		Index:      35,
377		NumSymbols: 1,
378		ReduceFunc: func(X []Attrib) (Attrib, error) {
379			return X[0], nil
380		},
381	},
382	ProdTabEntry{
383		String: `Lvalue : Typedecl LocalVariable	<< dsl.AppendChild(X[1], X[0]) >>`,
384		Id:         "Lvalue",
385		NTType:     8,
386		Index:      36,
387		NumSymbols: 2,
388		ReduceFunc: func(X []Attrib) (Attrib, error) {
389			return dsl.AppendChild(X[1], X[0])
390		},
391	},
392	ProdTabEntry{
393		String: `BareBoolean : Rvalue	<< dsl.NewASTNodeUnary(nil, X[0], dsl.NodeTypeBareBoolean) >>`,
394		Id:         "BareBoolean",
395		NTType:     9,
396		Index:      37,
397		NumSymbols: 1,
398		ReduceFunc: func(X []Attrib) (Attrib, error) {
399			return dsl.NewASTNodeUnary(nil, X[0], dsl.NodeTypeBareBoolean)
400		},
401	},
402	ProdTabEntry{
403		String: `FilterStatement : filter Rvalue	<< dsl.NewASTNodeUnary(X[0], X[1], dsl.NodeTypeFilterStatement) >>`,
404		Id:         "FilterStatement",
405		NTType:     10,
406		Index:      38,
407		NumSymbols: 2,
408		ReduceFunc: func(X []Attrib) (Attrib, error) {
409			return dsl.NewASTNodeUnary(X[0], X[1], dsl.NodeTypeFilterStatement)
410		},
411	},
412	ProdTabEntry{
413		String: `Redirector : ">" RedirectTarget	<< dsl.NewASTNodeUnary(X[0], X[1], dsl.NodeTypeRedirectWrite) >>`,
414		Id:         "Redirector",
415		NTType:     11,
416		Index:      39,
417		NumSymbols: 2,
418		ReduceFunc: func(X []Attrib) (Attrib, error) {
419			return dsl.NewASTNodeUnary(X[0], X[1], dsl.NodeTypeRedirectWrite)
420		},
421	},
422	ProdTabEntry{
423		String: `Redirector : ">>" RedirectTarget	<< dsl.NewASTNodeUnary(X[0], X[1], dsl.NodeTypeRedirectAppend) >>`,
424		Id:         "Redirector",
425		NTType:     11,
426		Index:      40,
427		NumSymbols: 2,
428		ReduceFunc: func(X []Attrib) (Attrib, error) {
429			return dsl.NewASTNodeUnary(X[0], X[1], dsl.NodeTypeRedirectAppend)
430		},
431	},
432	ProdTabEntry{
433		String: `Redirector : "|" RedirectTarget	<< dsl.NewASTNodeUnary(X[0], X[1], dsl.NodeTypeRedirectPipe) >>`,
434		Id:         "Redirector",
435		NTType:     11,
436		Index:      41,
437		NumSymbols: 2,
438		ReduceFunc: func(X []Attrib) (Attrib, error) {
439			return dsl.NewASTNodeUnary(X[0], X[1], dsl.NodeTypeRedirectPipe)
440		},
441	},
442	ProdTabEntry{
443		String: `RedirectTarget : stdout	<< dsl.NewASTNodeZary(X[0], dsl.NodeTypeRedirectTargetStdout) >>`,
444		Id:         "RedirectTarget",
445		NTType:     12,
446		Index:      42,
447		NumSymbols: 1,
448		ReduceFunc: func(X []Attrib) (Attrib, error) {
449			return dsl.NewASTNodeZary(X[0], dsl.NodeTypeRedirectTargetStdout)
450		},
451	},
452	ProdTabEntry{
453		String: `RedirectTarget : stderr	<< dsl.NewASTNodeZary(X[0], dsl.NodeTypeRedirectTargetStderr) >>`,
454		Id:         "RedirectTarget",
455		NTType:     12,
456		Index:      43,
457		NumSymbols: 1,
458		ReduceFunc: func(X []Attrib) (Attrib, error) {
459			return dsl.NewASTNodeZary(X[0], dsl.NodeTypeRedirectTargetStderr)
460		},
461	},
462	ProdTabEntry{
463		String: `RedirectTarget : Rvalue	<<  >>`,
464		Id:         "RedirectTarget",
465		NTType:     12,
466		Index:      44,
467		NumSymbols: 1,
468		ReduceFunc: func(X []Attrib) (Attrib, error) {
469			return X[0], nil
470		},
471	},
472	ProdTabEntry{
473		String: `PrintStatement : print	<< dsl.NewASTNodeBinary(
474        X[0], // print
475        dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no printable
476        dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect
477        dsl.NodeTypePrintStatement,
478      ) >>`,
479		Id:         "PrintStatement",
480		NTType:     13,
481		Index:      45,
482		NumSymbols: 1,
483		ReduceFunc: func(X []Attrib) (Attrib, error) {
484			return dsl.NewASTNodeBinary(
485				X[0], // print
486				dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no printable
487				dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect
488				dsl.NodeTypePrintStatement,
489			)
490		},
491	},
492	ProdTabEntry{
493		String: `PrintStatement : print Redirector	<< dsl.NewASTNodeBinary(
494        X[0], // print
495        dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no printable
496        X[1], // redirect
497        dsl.NodeTypePrintStatement,
498      ) >>`,
499		Id:         "PrintStatement",
500		NTType:     13,
501		Index:      46,
502		NumSymbols: 2,
503		ReduceFunc: func(X []Attrib) (Attrib, error) {
504			return dsl.NewASTNodeBinary(
505				X[0], // print
506				dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no printable
507				X[1], // redirect
508				dsl.NodeTypePrintStatement,
509			)
510		},
511	},
512	ProdTabEntry{
513		String: `PrintStatement : print FcnArgs	<< dsl.NewASTNodeBinary(
514        X[0], // print
515        X[1], // printables
516        dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect
517        dsl.NodeTypePrintStatement,
518      ) >>`,
519		Id:         "PrintStatement",
520		NTType:     13,
521		Index:      47,
522		NumSymbols: 2,
523		ReduceFunc: func(X []Attrib) (Attrib, error) {
524			return dsl.NewASTNodeBinary(
525				X[0], // print
526				X[1], // printables
527				dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect
528				dsl.NodeTypePrintStatement,
529			)
530		},
531	},
532	ProdTabEntry{
533		String: `PrintStatement : print Redirector "," FcnArgs	<< dsl.NewASTNodeBinary(
534        X[0], // print
535        X[3], // printables
536        X[1], // redirect
537        dsl.NodeTypePrintStatement,
538      ) >>`,
539		Id:         "PrintStatement",
540		NTType:     13,
541		Index:      48,
542		NumSymbols: 4,
543		ReduceFunc: func(X []Attrib) (Attrib, error) {
544			return dsl.NewASTNodeBinary(
545				X[0], // print
546				X[3], // printables
547				X[1], // redirect
548				dsl.NodeTypePrintStatement,
549			)
550		},
551	},
552	ProdTabEntry{
553		String: `PrintnStatement : printn	<< dsl.NewASTNodeBinary(
554        X[0], // printn
555        dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no printable
556        dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect
557        dsl.NodeTypePrintnStatement,
558      ) >>`,
559		Id:         "PrintnStatement",
560		NTType:     14,
561		Index:      49,
562		NumSymbols: 1,
563		ReduceFunc: func(X []Attrib) (Attrib, error) {
564			return dsl.NewASTNodeBinary(
565				X[0], // printn
566				dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no printable
567				dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect
568				dsl.NodeTypePrintnStatement,
569			)
570		},
571	},
572	ProdTabEntry{
573		String: `PrintnStatement : printn Redirector	<< dsl.NewASTNodeBinary(
574        X[0], // printn
575        dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no printable
576        X[1], // redirect
577        dsl.NodeTypePrintnStatement,
578      ) >>`,
579		Id:         "PrintnStatement",
580		NTType:     14,
581		Index:      50,
582		NumSymbols: 2,
583		ReduceFunc: func(X []Attrib) (Attrib, error) {
584			return dsl.NewASTNodeBinary(
585				X[0], // printn
586				dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no printable
587				X[1], // redirect
588				dsl.NodeTypePrintnStatement,
589			)
590		},
591	},
592	ProdTabEntry{
593		String: `PrintnStatement : printn FcnArgs	<< dsl.NewASTNodeBinary(
594        X[0], // printn
595        X[1], // printables
596        dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect
597        dsl.NodeTypePrintnStatement,
598      ) >>`,
599		Id:         "PrintnStatement",
600		NTType:     14,
601		Index:      51,
602		NumSymbols: 2,
603		ReduceFunc: func(X []Attrib) (Attrib, error) {
604			return dsl.NewASTNodeBinary(
605				X[0], // printn
606				X[1], // printables
607				dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect
608				dsl.NodeTypePrintnStatement,
609			)
610		},
611	},
612	ProdTabEntry{
613		String: `PrintnStatement : printn Redirector "," FcnArgs	<< dsl.NewASTNodeBinary(
614        X[0], // printn
615        X[3], // printables
616        X[1], // redirect
617        dsl.NodeTypePrintnStatement,
618      ) >>`,
619		Id:         "PrintnStatement",
620		NTType:     14,
621		Index:      52,
622		NumSymbols: 4,
623		ReduceFunc: func(X []Attrib) (Attrib, error) {
624			return dsl.NewASTNodeBinary(
625				X[0], // printn
626				X[3], // printables
627				X[1], // redirect
628				dsl.NodeTypePrintnStatement,
629			)
630		},
631	},
632	ProdTabEntry{
633		String: `EprintStatement : eprint	<< dsl.NewASTNodeBinary(
634        X[0], // eprint
635        dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no printables
636        dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect
637        dsl.NodeTypeEprintStatement,
638      ) >>`,
639		Id:         "EprintStatement",
640		NTType:     15,
641		Index:      53,
642		NumSymbols: 1,
643		ReduceFunc: func(X []Attrib) (Attrib, error) {
644			return dsl.NewASTNodeBinary(
645				X[0], // eprint
646				dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no printables
647				dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect
648				dsl.NodeTypeEprintStatement,
649			)
650		},
651	},
652	ProdTabEntry{
653		String: `EprintStatement : eprint FcnArgs	<< dsl.NewASTNodeBinary(
654        X[0], // eprint
655        X[1], // printables
656        dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect
657        dsl.NodeTypeEprintStatement,
658      ) >>`,
659		Id:         "EprintStatement",
660		NTType:     15,
661		Index:      54,
662		NumSymbols: 2,
663		ReduceFunc: func(X []Attrib) (Attrib, error) {
664			return dsl.NewASTNodeBinary(
665				X[0], // eprint
666				X[1], // printables
667				dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect
668				dsl.NodeTypeEprintStatement,
669			)
670		},
671	},
672	ProdTabEntry{
673		String: `EprintnStatement : eprintn	<< dsl.NewASTNodeBinary(
674        X[0], // eprint
675        dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no printables
676        dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect
677        dsl.NodeTypeEprintnStatement,
678      ) >>`,
679		Id:         "EprintnStatement",
680		NTType:     16,
681		Index:      55,
682		NumSymbols: 1,
683		ReduceFunc: func(X []Attrib) (Attrib, error) {
684			return dsl.NewASTNodeBinary(
685				X[0], // eprint
686				dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no printables
687				dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect
688				dsl.NodeTypeEprintnStatement,
689			)
690		},
691	},
692	ProdTabEntry{
693		String: `EprintnStatement : eprintn FcnArgs	<< dsl.NewASTNodeBinary(
694        X[0], // eprintn
695        X[1], // printables
696        dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect
697        dsl.NodeTypeEprintnStatement,
698      ) >>`,
699		Id:         "EprintnStatement",
700		NTType:     16,
701		Index:      56,
702		NumSymbols: 2,
703		ReduceFunc: func(X []Attrib) (Attrib, error) {
704			return dsl.NewASTNodeBinary(
705				X[0], // eprintn
706				X[1], // printables
707				dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect
708				dsl.NodeTypeEprintnStatement,
709			)
710		},
711	},
712	ProdTabEntry{
713		String: `DumpStatement : dump	<< dsl.NewASTNodeBinary(
714        X[0], // dump
715        dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no dumpable
716        dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect
717        dsl.NodeTypeDumpStatement,
718      ) >>`,
719		Id:         "DumpStatement",
720		NTType:     17,
721		Index:      57,
722		NumSymbols: 1,
723		ReduceFunc: func(X []Attrib) (Attrib, error) {
724			return dsl.NewASTNodeBinary(
725				X[0], // dump
726				dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no dumpable
727				dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect
728				dsl.NodeTypeDumpStatement,
729			)
730		},
731	},
732	ProdTabEntry{
733		String: `DumpStatement : dump Redirector	<< dsl.NewASTNodeBinary(
734        X[0], // dump
735        dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no dumpable
736        X[1], // redirect
737        dsl.NodeTypeDumpStatement,
738      ) >>`,
739		Id:         "DumpStatement",
740		NTType:     17,
741		Index:      58,
742		NumSymbols: 2,
743		ReduceFunc: func(X []Attrib) (Attrib, error) {
744			return dsl.NewASTNodeBinary(
745				X[0], // dump
746				dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no dumpable
747				X[1], // redirect
748				dsl.NodeTypeDumpStatement,
749			)
750		},
751	},
752	ProdTabEntry{
753		String: `DumpStatement : dump FcnArgs	<< dsl.NewASTNodeBinary(
754        X[0], // dump
755        X[1], // printables
756        dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect
757        dsl.NodeTypeDumpStatement,
758      ) >>`,
759		Id:         "DumpStatement",
760		NTType:     17,
761		Index:      59,
762		NumSymbols: 2,
763		ReduceFunc: func(X []Attrib) (Attrib, error) {
764			return dsl.NewASTNodeBinary(
765				X[0], // dump
766				X[1], // printables
767				dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect
768				dsl.NodeTypeDumpStatement,
769			)
770		},
771	},
772	ProdTabEntry{
773		String: `DumpStatement : dump Redirector "," FcnArgs	<< dsl.NewASTNodeBinary(
774        X[0], // dump
775        X[3], // printables
776        X[1], // redirect
777        dsl.NodeTypeDumpStatement,
778      ) >>`,
779		Id:         "DumpStatement",
780		NTType:     17,
781		Index:      60,
782		NumSymbols: 4,
783		ReduceFunc: func(X []Attrib) (Attrib, error) {
784			return dsl.NewASTNodeBinary(
785				X[0], // dump
786				X[3], // printables
787				X[1], // redirect
788				dsl.NodeTypeDumpStatement,
789			)
790		},
791	},
792	ProdTabEntry{
793		String: `EdumpStatement : edump	<< dsl.NewASTNodeBinary(
794        X[0], // edump
795        dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no dumpable
796        dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect
797        dsl.NodeTypeEdumpStatement,
798      ) >>`,
799		Id:         "EdumpStatement",
800		NTType:     18,
801		Index:      61,
802		NumSymbols: 1,
803		ReduceFunc: func(X []Attrib) (Attrib, error) {
804			return dsl.NewASTNodeBinary(
805				X[0], // edump
806				dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no dumpable
807				dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect
808				dsl.NodeTypeEdumpStatement,
809			)
810		},
811	},
812	ProdTabEntry{
813		String: `EdumpStatement : edump FcnArgs	<< dsl.NewASTNodeBinary(
814        X[0], // edump
815        X[1], // printables
816        dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect
817        dsl.NodeTypeEdumpStatement,
818      ) >>`,
819		Id:         "EdumpStatement",
820		NTType:     18,
821		Index:      62,
822		NumSymbols: 2,
823		ReduceFunc: func(X []Attrib) (Attrib, error) {
824			return dsl.NewASTNodeBinary(
825				X[0], // edump
826				X[1], // printables
827				dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect
828				dsl.NodeTypeEdumpStatement,
829			)
830		},
831	},
832	ProdTabEntry{
833		String: `TeeStatement : tee Redirector "," FullSrec	<< dsl.NewASTNodeBinary(X[0], X[3], X[1], dsl.NodeTypeTeeStatement) >>`,
834		Id:         "TeeStatement",
835		NTType:     19,
836		Index:      63,
837		NumSymbols: 4,
838		ReduceFunc: func(X []Attrib) (Attrib, error) {
839			return dsl.NewASTNodeBinary(X[0], X[3], X[1], dsl.NodeTypeTeeStatement)
840		},
841	},
842	ProdTabEntry{
843		String: `EmitFStatement : emitf EmittableList	<< dsl.NewASTNodeBinary(
844        X[0], // emitf
845        X[1], // emittables
846        dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect
847        dsl.NodeTypeEmitFStatement,
848      ) >>`,
849		Id:         "EmitFStatement",
850		NTType:     20,
851		Index:      64,
852		NumSymbols: 2,
853		ReduceFunc: func(X []Attrib) (Attrib, error) {
854			return dsl.NewASTNodeBinary(
855				X[0], // emitf
856				X[1], // emittables
857				dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect
858				dsl.NodeTypeEmitFStatement,
859			)
860		},
861	},
862	ProdTabEntry{
863		String: `EmitFStatement : emitf Redirector "," EmittableList	<< dsl.NewASTNodeBinary(
864        X[0], // emitf
865        X[3], // emittables
866        X[1], // redirect
867        dsl.NodeTypeEmitFStatement,
868      ) >>`,
869		Id:         "EmitFStatement",
870		NTType:     20,
871		Index:      65,
872		NumSymbols: 4,
873		ReduceFunc: func(X []Attrib) (Attrib, error) {
874			return dsl.NewASTNodeBinary(
875				X[0], // emitf
876				X[3], // emittables
877				X[1], // redirect
878				dsl.NodeTypeEmitFStatement,
879			)
880		},
881	},
882	ProdTabEntry{
883		String: `EmitStatement : emit EmittableAsList	<< dsl.NewASTNodeTernary(
884        X[0], // emit
885        X[1], // Emittable
886        dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no keys
887        dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect
888        dsl.NodeTypeEmitStatement,
889      ) >>`,
890		Id:         "EmitStatement",
891		NTType:     21,
892		Index:      66,
893		NumSymbols: 2,
894		ReduceFunc: func(X []Attrib) (Attrib, error) {
895			return dsl.NewASTNodeTernary(
896				X[0], // emit
897				X[1], // Emittable
898				dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no keys
899				dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect
900				dsl.NodeTypeEmitStatement,
901			)
902		},
903	},
904	ProdTabEntry{
905		String: `EmitStatement : emit Redirector "," EmittableAsList	<< dsl.NewASTNodeTernary(
906      X[0], // emit
907      X[3], // Emittable
908      dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no keys
909      X[1], // redirect
910      dsl.NodeTypeEmitStatement,
911    ) >>`,
912		Id:         "EmitStatement",
913		NTType:     21,
914		Index:      67,
915		NumSymbols: 4,
916		ReduceFunc: func(X []Attrib) (Attrib, error) {
917			return dsl.NewASTNodeTernary(
918				X[0], // emit
919				X[3], // Emittable
920				dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no keys
921				X[1], // redirect
922				dsl.NodeTypeEmitStatement,
923			)
924		},
925	},
926	ProdTabEntry{
927		String: `EmitStatement : emit "(" EmittableList ")"	<< dsl.NewASTNodeTernary(
928        X[0], // emit
929        X[2], // emittables
930        dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no keys
931        dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect
932        dsl.NodeTypeEmitStatement,
933      ) >>`,
934		Id:         "EmitStatement",
935		NTType:     21,
936		Index:      68,
937		NumSymbols: 4,
938		ReduceFunc: func(X []Attrib) (Attrib, error) {
939			return dsl.NewASTNodeTernary(
940				X[0], // emit
941				X[2], // emittables
942				dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no keys
943				dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect
944				dsl.NodeTypeEmitStatement,
945			)
946		},
947	},
948	ProdTabEntry{
949		String: `EmitStatement : emit Redirector "," "(" EmittableList ")"	<< dsl.NewASTNodeTernary(
950        X[0], // emit
951        X[4], // emittables
952        dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no keys
953        X[1], // redirect
954        dsl.NodeTypeEmitStatement,
955      ) >>`,
956		Id:         "EmitStatement",
957		NTType:     21,
958		Index:      69,
959		NumSymbols: 6,
960		ReduceFunc: func(X []Attrib) (Attrib, error) {
961			return dsl.NewASTNodeTernary(
962				X[0], // emit
963				X[4], // emittables
964				dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no keys
965				X[1], // redirect
966				dsl.NodeTypeEmitStatement,
967			)
968		},
969	},
970	ProdTabEntry{
971		String: `EmitStatement : emit EmittableAsList "," EmitKeys	<< dsl.NewASTNodeTernary(
972        X[0], // emit
973        X[1], // emittable
974        X[3], // keys
975        dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect
976        dsl.NodeTypeEmitStatement,
977      ) >>`,
978		Id:         "EmitStatement",
979		NTType:     21,
980		Index:      70,
981		NumSymbols: 4,
982		ReduceFunc: func(X []Attrib) (Attrib, error) {
983			return dsl.NewASTNodeTernary(
984				X[0], // emit
985				X[1], // emittable
986				X[3], // keys
987				dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect
988				dsl.NodeTypeEmitStatement,
989			)
990		},
991	},
992	ProdTabEntry{
993		String: `EmitStatement : emit Redirector "," EmittableAsList "," EmitKeys	<< dsl.NewASTNodeTernary(
994        X[0], // emit
995        X[3], // emittable
996        X[5], // keys
997        X[1], // redirect
998        dsl.NodeTypeEmitStatement,
999      ) >>`,
1000		Id:         "EmitStatement",
1001		NTType:     21,
1002		Index:      71,
1003		NumSymbols: 6,
1004		ReduceFunc: func(X []Attrib) (Attrib, error) {
1005			return dsl.NewASTNodeTernary(
1006				X[0], // emit
1007				X[3], // emittable
1008				X[5], // keys
1009				X[1], // redirect
1010				dsl.NodeTypeEmitStatement,
1011			)
1012		},
1013	},
1014	ProdTabEntry{
1015		String: `EmitStatement : emit "(" EmittableList ")" "," EmitKeys	<< dsl.NewASTNodeTernary(
1016        X[0], // emit
1017        X[2], // emittable
1018        X[5], // keys
1019        dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect
1020        dsl.NodeTypeEmitStatement,
1021      ) >>`,
1022		Id:         "EmitStatement",
1023		NTType:     21,
1024		Index:      72,
1025		NumSymbols: 6,
1026		ReduceFunc: func(X []Attrib) (Attrib, error) {
1027			return dsl.NewASTNodeTernary(
1028				X[0], // emit
1029				X[2], // emittable
1030				X[5], // keys
1031				dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect
1032				dsl.NodeTypeEmitStatement,
1033			)
1034		},
1035	},
1036	ProdTabEntry{
1037		String: `EmitStatement : emit Redirector "," "(" EmittableList ")" "," EmitKeys	<< dsl.NewASTNodeTernary(
1038        X[0], // emit
1039        X[4], // emittables
1040        X[7], // keys
1041        X[1], // redirect
1042        dsl.NodeTypeEmitStatement,
1043      ) >>`,
1044		Id:         "EmitStatement",
1045		NTType:     21,
1046		Index:      73,
1047		NumSymbols: 8,
1048		ReduceFunc: func(X []Attrib) (Attrib, error) {
1049			return dsl.NewASTNodeTernary(
1050				X[0], // emit
1051				X[4], // emittables
1052				X[7], // keys
1053				X[1], // redirect
1054				dsl.NodeTypeEmitStatement,
1055			)
1056		},
1057	},
1058	ProdTabEntry{
1059		String: `EmitPStatement : emitp EmittableAsList	<< dsl.NewASTNodeTernary(
1060        X[0], // emitp
1061        X[1], // emittable
1062        dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no keys
1063        dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect
1064        dsl.NodeTypeEmitPStatement,
1065      ) >>`,
1066		Id:         "EmitPStatement",
1067		NTType:     22,
1068		Index:      74,
1069		NumSymbols: 2,
1070		ReduceFunc: func(X []Attrib) (Attrib, error) {
1071			return dsl.NewASTNodeTernary(
1072				X[0], // emitp
1073				X[1], // emittable
1074				dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no keys
1075				dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect
1076				dsl.NodeTypeEmitPStatement,
1077			)
1078		},
1079	},
1080	ProdTabEntry{
1081		String: `EmitPStatement : emitp Redirector "," EmittableAsList	<< dsl.NewASTNodeTernary(
1082      X[0], // emitp
1083      X[3], // emittable
1084      dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no keys
1085      X[1], // redirect
1086      dsl.NodeTypeEmitPStatement,
1087    ) >>`,
1088		Id:         "EmitPStatement",
1089		NTType:     22,
1090		Index:      75,
1091		NumSymbols: 4,
1092		ReduceFunc: func(X []Attrib) (Attrib, error) {
1093			return dsl.NewASTNodeTernary(
1094				X[0], // emitp
1095				X[3], // emittable
1096				dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no keys
1097				X[1], // redirect
1098				dsl.NodeTypeEmitPStatement,
1099			)
1100		},
1101	},
1102	ProdTabEntry{
1103		String: `EmitPStatement : emitp "(" EmittableList ")"	<< dsl.NewASTNodeTernary(
1104        X[0], // emitp
1105        X[2], // emittables
1106        dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no keys
1107        dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect
1108        dsl.NodeTypeEmitPStatement,
1109      ) >>`,
1110		Id:         "EmitPStatement",
1111		NTType:     22,
1112		Index:      76,
1113		NumSymbols: 4,
1114		ReduceFunc: func(X []Attrib) (Attrib, error) {
1115			return dsl.NewASTNodeTernary(
1116				X[0], // emitp
1117				X[2], // emittables
1118				dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no keys
1119				dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect
1120				dsl.NodeTypeEmitPStatement,
1121			)
1122		},
1123	},
1124	ProdTabEntry{
1125		String: `EmitPStatement : emitp Redirector "," "(" EmittableList ")"	<< dsl.NewASTNodeTernary(
1126        X[0], // emitp
1127        X[4], // emittables
1128        dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no keys
1129        X[1], // redirect
1130        dsl.NodeTypeEmitPStatement,
1131      ) >>`,
1132		Id:         "EmitPStatement",
1133		NTType:     22,
1134		Index:      77,
1135		NumSymbols: 6,
1136		ReduceFunc: func(X []Attrib) (Attrib, error) {
1137			return dsl.NewASTNodeTernary(
1138				X[0], // emitp
1139				X[4], // emittables
1140				dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no keys
1141				X[1], // redirect
1142				dsl.NodeTypeEmitPStatement,
1143			)
1144		},
1145	},
1146	ProdTabEntry{
1147		String: `EmitPStatement : emitp EmittableAsList "," EmitKeys	<< dsl.NewASTNodeTernary(
1148        X[0], // emitp
1149        X[1], // emittable
1150        X[3], // keys
1151        dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect
1152        dsl.NodeTypeEmitPStatement,
1153      ) >>`,
1154		Id:         "EmitPStatement",
1155		NTType:     22,
1156		Index:      78,
1157		NumSymbols: 4,
1158		ReduceFunc: func(X []Attrib) (Attrib, error) {
1159			return dsl.NewASTNodeTernary(
1160				X[0], // emitp
1161				X[1], // emittable
1162				X[3], // keys
1163				dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect
1164				dsl.NodeTypeEmitPStatement,
1165			)
1166		},
1167	},
1168	ProdTabEntry{
1169		String: `EmitPStatement : emitp Redirector "," EmittableAsList "," EmitKeys	<< dsl.NewASTNodeTernary(
1170        X[0], // emitp
1171        X[3], // emittable
1172        X[5], // keys
1173        X[1], // redirect
1174        dsl.NodeTypeEmitPStatement,
1175      ) >>`,
1176		Id:         "EmitPStatement",
1177		NTType:     22,
1178		Index:      79,
1179		NumSymbols: 6,
1180		ReduceFunc: func(X []Attrib) (Attrib, error) {
1181			return dsl.NewASTNodeTernary(
1182				X[0], // emitp
1183				X[3], // emittable
1184				X[5], // keys
1185				X[1], // redirect
1186				dsl.NodeTypeEmitPStatement,
1187			)
1188		},
1189	},
1190	ProdTabEntry{
1191		String: `EmitPStatement : emitp "(" EmittableList ")" "," EmitKeys	<< dsl.NewASTNodeTernary(
1192        X[0], // emitp
1193        X[2], // emittable
1194        X[5], // keys
1195        dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect
1196        dsl.NodeTypeEmitPStatement,
1197      ) >>`,
1198		Id:         "EmitPStatement",
1199		NTType:     22,
1200		Index:      80,
1201		NumSymbols: 6,
1202		ReduceFunc: func(X []Attrib) (Attrib, error) {
1203			return dsl.NewASTNodeTernary(
1204				X[0], // emitp
1205				X[2], // emittable
1206				X[5], // keys
1207				dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect
1208				dsl.NodeTypeEmitPStatement,
1209			)
1210		},
1211	},
1212	ProdTabEntry{
1213		String: `EmitPStatement : emitp Redirector "," "(" EmittableList ")" "," EmitKeys	<< dsl.NewASTNodeTernary(
1214        X[0], // emitp
1215        X[4], // emittable
1216        X[7], // keys
1217        X[1], // redirect
1218        dsl.NodeTypeEmitPStatement,
1219      ) >>`,
1220		Id:         "EmitPStatement",
1221		NTType:     22,
1222		Index:      81,
1223		NumSymbols: 8,
1224		ReduceFunc: func(X []Attrib) (Attrib, error) {
1225			return dsl.NewASTNodeTernary(
1226				X[0], // emitp
1227				X[4], // emittable
1228				X[7], // keys
1229				X[1], // redirect
1230				dsl.NodeTypeEmitPStatement,
1231			)
1232		},
1233	},
1234	ProdTabEntry{
1235		String: `EmittableList : Emittable	<< dsl.NewASTNodeUnary(
1236        nil,
1237        X[0],
1238        dsl.NodeTypeEmittableList,
1239      ) >>`,
1240		Id:         "EmittableList",
1241		NTType:     23,
1242		Index:      82,
1243		NumSymbols: 1,
1244		ReduceFunc: func(X []Attrib) (Attrib, error) {
1245			return dsl.NewASTNodeUnary(
1246				nil,
1247				X[0],
1248				dsl.NodeTypeEmittableList,
1249			)
1250		},
1251	},
1252	ProdTabEntry{
1253		String: `EmittableList : Emittable "," EmittableList	<< dsl.PrependChild(
1254      X[2],
1255      X[0],
1256    ) >>`,
1257		Id:         "EmittableList",
1258		NTType:     23,
1259		Index:      83,
1260		NumSymbols: 3,
1261		ReduceFunc: func(X []Attrib) (Attrib, error) {
1262			return dsl.PrependChild(
1263				X[2],
1264				X[0],
1265			)
1266		},
1267	},
1268	ProdTabEntry{
1269		String: `EmittableAsList : Emittable	<< dsl.NewASTNodeUnary(
1270    nil,
1271    X[0],
1272    dsl.NodeTypeEmittableList,
1273  ) >>`,
1274		Id:         "EmittableAsList",
1275		NTType:     24,
1276		Index:      84,
1277		NumSymbols: 1,
1278		ReduceFunc: func(X []Attrib) (Attrib, error) {
1279			return dsl.NewASTNodeUnary(
1280				nil,
1281				X[0],
1282				dsl.NodeTypeEmittableList,
1283			)
1284		},
1285	},
1286	ProdTabEntry{
1287		String: `Emittable : LocalVariable	<<  >>`,
1288		Id:         "Emittable",
1289		NTType:     25,
1290		Index:      85,
1291		NumSymbols: 1,
1292		ReduceFunc: func(X []Attrib) (Attrib, error) {
1293			return X[0], nil
1294		},
1295	},
1296	ProdTabEntry{
1297		String: `Emittable : FullOosvar	<<  >>`,
1298		Id:         "Emittable",
1299		NTType:     25,
1300		Index:      86,
1301		NumSymbols: 1,
1302		ReduceFunc: func(X []Attrib) (Attrib, error) {
1303			return X[0], nil
1304		},
1305	},
1306	ProdTabEntry{
1307		String: `Emittable : DirectOosvarValue	<<  >>`,
1308		Id:         "Emittable",
1309		NTType:     25,
1310		Index:      87,
1311		NumSymbols: 1,
1312		ReduceFunc: func(X []Attrib) (Attrib, error) {
1313			return X[0], nil
1314		},
1315	},
1316	ProdTabEntry{
1317		String: `Emittable : BracedOosvarValue	<<  >>`,
1318		Id:         "Emittable",
1319		NTType:     25,
1320		Index:      88,
1321		NumSymbols: 1,
1322		ReduceFunc: func(X []Attrib) (Attrib, error) {
1323			return X[0], nil
1324		},
1325	},
1326	ProdTabEntry{
1327		String: `Emittable : IndirectOosvarValue	<<  >>`,
1328		Id:         "Emittable",
1329		NTType:     25,
1330		Index:      89,
1331		NumSymbols: 1,
1332		ReduceFunc: func(X []Attrib) (Attrib, error) {
1333			return X[0], nil
1334		},
1335	},
1336	ProdTabEntry{
1337		String: `Emittable : FullSrec	<<  >>`,
1338		Id:         "Emittable",
1339		NTType:     25,
1340		Index:      90,
1341		NumSymbols: 1,
1342		ReduceFunc: func(X []Attrib) (Attrib, error) {
1343			return X[0], nil
1344		},
1345	},
1346	ProdTabEntry{
1347		String: `Emittable : DirectFieldValue	<<  >>`,
1348		Id:         "Emittable",
1349		NTType:     25,
1350		Index:      91,
1351		NumSymbols: 1,
1352		ReduceFunc: func(X []Attrib) (Attrib, error) {
1353			return X[0], nil
1354		},
1355	},
1356	ProdTabEntry{
1357		String: `Emittable : BracedFieldValue	<<  >>`,
1358		Id:         "Emittable",
1359		NTType:     25,
1360		Index:      92,
1361		NumSymbols: 1,
1362		ReduceFunc: func(X []Attrib) (Attrib, error) {
1363			return X[0], nil
1364		},
1365	},
1366	ProdTabEntry{
1367		String: `Emittable : IndirectFieldValue	<<  >>`,
1368		Id:         "Emittable",
1369		NTType:     25,
1370		Index:      93,
1371		NumSymbols: 1,
1372		ReduceFunc: func(X []Attrib) (Attrib, error) {
1373			return X[0], nil
1374		},
1375	},
1376	ProdTabEntry{
1377		String: `Emittable : MapLiteral	<<  >>`,
1378		Id:         "Emittable",
1379		NTType:     25,
1380		Index:      94,
1381		NumSymbols: 1,
1382		ReduceFunc: func(X []Attrib) (Attrib, error) {
1383			return X[0], nil
1384		},
1385	},
1386	ProdTabEntry{
1387		String: `EmitKeys : Rvalue	<< dsl.NewASTNodeUnary(
1388      nil,
1389      X[0],
1390      dsl.NodeTypeEmitKeys,
1391    ) >>`,
1392		Id:         "EmitKeys",
1393		NTType:     26,
1394		Index:      95,
1395		NumSymbols: 1,
1396		ReduceFunc: func(X []Attrib) (Attrib, error) {
1397			return dsl.NewASTNodeUnary(
1398				nil,
1399				X[0],
1400				dsl.NodeTypeEmitKeys,
1401			)
1402		},
1403	},
1404	ProdTabEntry{
1405		String: `EmitKeys : Rvalue "," EmitKeys	<< dsl.PrependChild(
1406      X[2],
1407      X[0],
1408    ) >>`,
1409		Id:         "EmitKeys",
1410		NTType:     26,
1411		Index:      96,
1412		NumSymbols: 3,
1413		ReduceFunc: func(X []Attrib) (Attrib, error) {
1414			return dsl.PrependChild(
1415				X[2],
1416				X[0],
1417			)
1418		},
1419	},
1420	ProdTabEntry{
1421		String: `FieldValue : DirectFieldValue	<<  >>`,
1422		Id:         "FieldValue",
1423		NTType:     27,
1424		Index:      97,
1425		NumSymbols: 1,
1426		ReduceFunc: func(X []Attrib) (Attrib, error) {
1427			return X[0], nil
1428		},
1429	},
1430	ProdTabEntry{
1431		String: `FieldValue : IndirectFieldValue	<<  >>`,
1432		Id:         "FieldValue",
1433		NTType:     27,
1434		Index:      98,
1435		NumSymbols: 1,
1436		ReduceFunc: func(X []Attrib) (Attrib, error) {
1437			return X[0], nil
1438		},
1439	},
1440	ProdTabEntry{
1441		String: `FieldValue : BracedFieldValue	<<  >>`,
1442		Id:         "FieldValue",
1443		NTType:     27,
1444		Index:      99,
1445		NumSymbols: 1,
1446		ReduceFunc: func(X []Attrib) (Attrib, error) {
1447			return X[0], nil
1448		},
1449	},
1450	ProdTabEntry{
1451		String: `FieldValue : PositionalFieldName	<<  >>`,
1452		Id:         "FieldValue",
1453		NTType:     27,
1454		Index:      100,
1455		NumSymbols: 1,
1456		ReduceFunc: func(X []Attrib) (Attrib, error) {
1457			return X[0], nil
1458		},
1459	},
1460	ProdTabEntry{
1461		String: `FieldValue : PositionalFieldValue	<<  >>`,
1462		Id:         "FieldValue",
1463		NTType:     27,
1464		Index:      101,
1465		NumSymbols: 1,
1466		ReduceFunc: func(X []Attrib) (Attrib, error) {
1467			return X[0], nil
1468		},
1469	},
1470	ProdTabEntry{
1471		String: `DirectFieldValue : field_name	<< dsl.NewASTNodeStripDollarOrAtSign(X[0], dsl.NodeTypeDirectFieldValue) >>`,
1472		Id:         "DirectFieldValue",
1473		NTType:     28,
1474		Index:      102,
1475		NumSymbols: 1,
1476		ReduceFunc: func(X []Attrib) (Attrib, error) {
1477			return dsl.NewASTNodeStripDollarOrAtSign(X[0], dsl.NodeTypeDirectFieldValue)
1478		},
1479	},
1480	ProdTabEntry{
1481		String: `IndirectFieldValue : "$[" Rvalue "]"	<< dsl.NewASTNodeUnary(dsl.NewASTToken("$[]", X[0]), X[1], dsl.NodeTypeIndirectFieldValue) >>`,
1482		Id:         "IndirectFieldValue",
1483		NTType:     29,
1484		Index:      103,
1485		NumSymbols: 3,
1486		ReduceFunc: func(X []Attrib) (Attrib, error) {
1487			return dsl.NewASTNodeUnary(dsl.NewASTToken("$[]", X[0]), X[1], dsl.NodeTypeIndirectFieldValue)
1488		},
1489	},
1490	ProdTabEntry{
1491		String: `BracedFieldValue : braced_field_name	<< dsl.NewASTNodeStripDollarOrAtSignAndCurlyBraces(X[0], dsl.NodeTypeDirectFieldValue) >>`,
1492		Id:         "BracedFieldValue",
1493		NTType:     30,
1494		Index:      104,
1495		NumSymbols: 1,
1496		ReduceFunc: func(X []Attrib) (Attrib, error) {
1497			return dsl.NewASTNodeStripDollarOrAtSignAndCurlyBraces(X[0], dsl.NodeTypeDirectFieldValue)
1498		},
1499	},
1500	ProdTabEntry{
1501		String: `PositionalFieldName : "$[[" Rvalue "]" "]"	<< dsl.NewASTNodeUnary(dsl.NewASTToken("$[]", X[0]), X[1], dsl.NodeTypePositionalFieldName) >>`,
1502		Id:         "PositionalFieldName",
1503		NTType:     31,
1504		Index:      105,
1505		NumSymbols: 4,
1506		ReduceFunc: func(X []Attrib) (Attrib, error) {
1507			return dsl.NewASTNodeUnary(dsl.NewASTToken("$[]", X[0]), X[1], dsl.NodeTypePositionalFieldName)
1508		},
1509	},
1510	ProdTabEntry{
1511		String: `PositionalFieldValue : "$[[[" Rvalue "]" "]" "]"	<< dsl.NewASTNodeUnary(dsl.NewASTToken("$[]", X[0]), X[1], dsl.NodeTypePositionalFieldValue) >>`,
1512		Id:         "PositionalFieldValue",
1513		NTType:     32,
1514		Index:      106,
1515		NumSymbols: 5,
1516		ReduceFunc: func(X []Attrib) (Attrib, error) {
1517			return dsl.NewASTNodeUnary(dsl.NewASTToken("$[]", X[0]), X[1], dsl.NodeTypePositionalFieldValue)
1518		},
1519	},
1520	ProdTabEntry{
1521		String: `FullSrec : full_srec	<< dsl.NewASTNode(X[0], dsl.NodeTypeFullSrec) >>`,
1522		Id:         "FullSrec",
1523		NTType:     33,
1524		Index:      107,
1525		NumSymbols: 1,
1526		ReduceFunc: func(X []Attrib) (Attrib, error) {
1527			return dsl.NewASTNode(X[0], dsl.NodeTypeFullSrec)
1528		},
1529	},
1530	ProdTabEntry{
1531		String: `OosvarValue : DirectOosvarValue	<<  >>`,
1532		Id:         "OosvarValue",
1533		NTType:     34,
1534		Index:      108,
1535		NumSymbols: 1,
1536		ReduceFunc: func(X []Attrib) (Attrib, error) {
1537			return X[0], nil
1538		},
1539	},
1540	ProdTabEntry{
1541		String: `OosvarValue : IndirectOosvarValue	<<  >>`,
1542		Id:         "OosvarValue",
1543		NTType:     34,
1544		Index:      109,
1545		NumSymbols: 1,
1546		ReduceFunc: func(X []Attrib) (Attrib, error) {
1547			return X[0], nil
1548		},
1549	},
1550	ProdTabEntry{
1551		String: `OosvarValue : BracedOosvarValue	<<  >>`,
1552		Id:         "OosvarValue",
1553		NTType:     34,
1554		Index:      110,
1555		NumSymbols: 1,
1556		ReduceFunc: func(X []Attrib) (Attrib, error) {
1557			return X[0], nil
1558		},
1559	},
1560	ProdTabEntry{
1561		String: `DirectOosvarValue : oosvar_name	<< dsl.NewASTNodeStripDollarOrAtSign(X[0], dsl.NodeTypeDirectOosvarValue) >>`,
1562		Id:         "DirectOosvarValue",
1563		NTType:     35,
1564		Index:      111,
1565		NumSymbols: 1,
1566		ReduceFunc: func(X []Attrib) (Attrib, error) {
1567			return dsl.NewASTNodeStripDollarOrAtSign(X[0], dsl.NodeTypeDirectOosvarValue)
1568		},
1569	},
1570	ProdTabEntry{
1571		String: `IndirectOosvarValue : "@[" Rvalue "]"	<< dsl.NewASTNodeUnary(dsl.NewASTToken("@[]", X[0]), X[1], dsl.NodeTypeIndirectOosvarValue) >>`,
1572		Id:         "IndirectOosvarValue",
1573		NTType:     36,
1574		Index:      112,
1575		NumSymbols: 3,
1576		ReduceFunc: func(X []Attrib) (Attrib, error) {
1577			return dsl.NewASTNodeUnary(dsl.NewASTToken("@[]", X[0]), X[1], dsl.NodeTypeIndirectOosvarValue)
1578		},
1579	},
1580	ProdTabEntry{
1581		String: `BracedOosvarValue : braced_oosvar_name	<< dsl.NewASTNodeStripDollarOrAtSignAndCurlyBraces(X[0], dsl.NodeTypeDirectOosvarValue) >>`,
1582		Id:         "BracedOosvarValue",
1583		NTType:     37,
1584		Index:      113,
1585		NumSymbols: 1,
1586		ReduceFunc: func(X []Attrib) (Attrib, error) {
1587			return dsl.NewASTNodeStripDollarOrAtSignAndCurlyBraces(X[0], dsl.NodeTypeDirectOosvarValue)
1588		},
1589	},
1590	ProdTabEntry{
1591		String: `FullOosvar : full_oosvar	<< dsl.NewASTNode(X[0], dsl.NodeTypeFullOosvar) >>`,
1592		Id:         "FullOosvar",
1593		NTType:     38,
1594		Index:      114,
1595		NumSymbols: 1,
1596		ReduceFunc: func(X []Attrib) (Attrib, error) {
1597			return dsl.NewASTNode(X[0], dsl.NodeTypeFullOosvar)
1598		},
1599	},
1600	ProdTabEntry{
1601		String: `FullOosvar : all	<< dsl.NewASTNode(X[0], dsl.NodeTypeFullOosvar) >>`,
1602		Id:         "FullOosvar",
1603		NTType:     38,
1604		Index:      115,
1605		NumSymbols: 1,
1606		ReduceFunc: func(X []Attrib) (Attrib, error) {
1607			return dsl.NewASTNode(X[0], dsl.NodeTypeFullOosvar)
1608		},
1609	},
1610	ProdTabEntry{
1611		String: `LocalVariable : non_sigil_name	<< dsl.NewASTNode(X[0], dsl.NodeTypeLocalVariable) >>`,
1612		Id:         "LocalVariable",
1613		NTType:     39,
1614		Index:      116,
1615		NumSymbols: 1,
1616		ReduceFunc: func(X []Attrib) (Attrib, error) {
1617			return dsl.NewASTNode(X[0], dsl.NodeTypeLocalVariable)
1618		},
1619	},
1620	ProdTabEntry{
1621		String: `Typedecl : arr	<< dsl.NewASTNode(X[0], dsl.NodeTypeTypedecl) >>`,
1622		Id:         "Typedecl",
1623		NTType:     40,
1624		Index:      117,
1625		NumSymbols: 1,
1626		ReduceFunc: func(X []Attrib) (Attrib, error) {
1627			return dsl.NewASTNode(X[0], dsl.NodeTypeTypedecl)
1628		},
1629	},
1630	ProdTabEntry{
1631		String: `Typedecl : bool	<< dsl.NewASTNode(X[0], dsl.NodeTypeTypedecl) >>`,
1632		Id:         "Typedecl",
1633		NTType:     40,
1634		Index:      118,
1635		NumSymbols: 1,
1636		ReduceFunc: func(X []Attrib) (Attrib, error) {
1637			return dsl.NewASTNode(X[0], dsl.NodeTypeTypedecl)
1638		},
1639	},
1640	ProdTabEntry{
1641		String: `Typedecl : float	<< dsl.NewASTNode(X[0], dsl.NodeTypeTypedecl) >>`,
1642		Id:         "Typedecl",
1643		NTType:     40,
1644		Index:      119,
1645		NumSymbols: 1,
1646		ReduceFunc: func(X []Attrib) (Attrib, error) {
1647			return dsl.NewASTNode(X[0], dsl.NodeTypeTypedecl)
1648		},
1649	},
1650	ProdTabEntry{
1651		String: `Typedecl : int	<< dsl.NewASTNode(X[0], dsl.NodeTypeTypedecl) >>`,
1652		Id:         "Typedecl",
1653		NTType:     40,
1654		Index:      120,
1655		NumSymbols: 1,
1656		ReduceFunc: func(X []Attrib) (Attrib, error) {
1657			return dsl.NewASTNode(X[0], dsl.NodeTypeTypedecl)
1658		},
1659	},
1660	ProdTabEntry{
1661		String: `Typedecl : map	<< dsl.NewASTNode(X[0], dsl.NodeTypeTypedecl) >>`,
1662		Id:         "Typedecl",
1663		NTType:     40,
1664		Index:      121,
1665		NumSymbols: 1,
1666		ReduceFunc: func(X []Attrib) (Attrib, error) {
1667			return dsl.NewASTNode(X[0], dsl.NodeTypeTypedecl)
1668		},
1669	},
1670	ProdTabEntry{
1671		String: `Typedecl : num	<< dsl.NewASTNode(X[0], dsl.NodeTypeTypedecl) >>`,
1672		Id:         "Typedecl",
1673		NTType:     40,
1674		Index:      122,
1675		NumSymbols: 1,
1676		ReduceFunc: func(X []Attrib) (Attrib, error) {
1677			return dsl.NewASTNode(X[0], dsl.NodeTypeTypedecl)
1678		},
1679	},
1680	ProdTabEntry{
1681		String: `Typedecl : str	<< dsl.NewASTNode(X[0], dsl.NodeTypeTypedecl) >>`,
1682		Id:         "Typedecl",
1683		NTType:     40,
1684		Index:      123,
1685		NumSymbols: 1,
1686		ReduceFunc: func(X []Attrib) (Attrib, error) {
1687			return dsl.NewASTNode(X[0], dsl.NodeTypeTypedecl)
1688		},
1689	},
1690	ProdTabEntry{
1691		String: `Typedecl : var	<< dsl.NewASTNode(X[0], dsl.NodeTypeTypedecl) >>`,
1692		Id:         "Typedecl",
1693		NTType:     40,
1694		Index:      124,
1695		NumSymbols: 1,
1696		ReduceFunc: func(X []Attrib) (Attrib, error) {
1697			return dsl.NewASTNode(X[0], dsl.NodeTypeTypedecl)
1698		},
1699	},
1700	ProdTabEntry{
1701		String: `Assignment : Lvalue "||=" Rvalue	<< dsl.NewASTNodeBinary(
1702      dsl.NewASTToken("=", X[1]),
1703      X[0],
1704      dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("||", X[1]), X[0], X[2], dsl.NodeTypeOperator),
1705      dsl.NodeTypeAssignment,
1706    ) >>`,
1707		Id:         "Assignment",
1708		NTType:     6,
1709		Index:      125,
1710		NumSymbols: 3,
1711		ReduceFunc: func(X []Attrib) (Attrib, error) {
1712			return dsl.NewASTNodeBinary(
1713				dsl.NewASTToken("=", X[1]),
1714				X[0],
1715				dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("||", X[1]), X[0], X[2], dsl.NodeTypeOperator),
1716				dsl.NodeTypeAssignment,
1717			)
1718		},
1719	},
1720	ProdTabEntry{
1721		String: `Assignment : Lvalue "^^=" Rvalue	<< dsl.NewASTNodeBinary(
1722      dsl.NewASTToken("=", X[1]),
1723      X[0],
1724      dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("^^", X[1]), X[0], X[2], dsl.NodeTypeOperator),
1725      dsl.NodeTypeAssignment,
1726    ) >>`,
1727		Id:         "Assignment",
1728		NTType:     6,
1729		Index:      126,
1730		NumSymbols: 3,
1731		ReduceFunc: func(X []Attrib) (Attrib, error) {
1732			return dsl.NewASTNodeBinary(
1733				dsl.NewASTToken("=", X[1]),
1734				X[0],
1735				dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("^^", X[1]), X[0], X[2], dsl.NodeTypeOperator),
1736				dsl.NodeTypeAssignment,
1737			)
1738		},
1739	},
1740	ProdTabEntry{
1741		String: `Assignment : Lvalue "&&=" Rvalue	<< dsl.NewASTNodeBinary(
1742      dsl.NewASTToken("=", X[1]),
1743      X[0],
1744      dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("&&", X[1]), X[0], X[2], dsl.NodeTypeOperator),
1745      dsl.NodeTypeAssignment,
1746    ) >>`,
1747		Id:         "Assignment",
1748		NTType:     6,
1749		Index:      127,
1750		NumSymbols: 3,
1751		ReduceFunc: func(X []Attrib) (Attrib, error) {
1752			return dsl.NewASTNodeBinary(
1753				dsl.NewASTToken("=", X[1]),
1754				X[0],
1755				dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("&&", X[1]), X[0], X[2], dsl.NodeTypeOperator),
1756				dsl.NodeTypeAssignment,
1757			)
1758		},
1759	},
1760	ProdTabEntry{
1761		String: `Assignment : Lvalue "??=" Rvalue	<< dsl.NewASTNodeBinary(
1762      dsl.NewASTToken("=", X[1]),
1763      X[0],
1764      dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("??", X[1]), X[0], X[2], dsl.NodeTypeOperator),
1765      dsl.NodeTypeAssignment,
1766    ) >>`,
1767		Id:         "Assignment",
1768		NTType:     6,
1769		Index:      128,
1770		NumSymbols: 3,
1771		ReduceFunc: func(X []Attrib) (Attrib, error) {
1772			return dsl.NewASTNodeBinary(
1773				dsl.NewASTToken("=", X[1]),
1774				X[0],
1775				dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("??", X[1]), X[0], X[2], dsl.NodeTypeOperator),
1776				dsl.NodeTypeAssignment,
1777			)
1778		},
1779	},
1780	ProdTabEntry{
1781		String: `Assignment : Lvalue "???=" Rvalue	<< dsl.NewASTNodeBinary(
1782      dsl.NewASTToken("=", X[1]),
1783      X[0],
1784      dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("???", X[1]), X[0], X[2], dsl.NodeTypeOperator),
1785      dsl.NodeTypeAssignment,
1786    ) >>`,
1787		Id:         "Assignment",
1788		NTType:     6,
1789		Index:      129,
1790		NumSymbols: 3,
1791		ReduceFunc: func(X []Attrib) (Attrib, error) {
1792			return dsl.NewASTNodeBinary(
1793				dsl.NewASTToken("=", X[1]),
1794				X[0],
1795				dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("???", X[1]), X[0], X[2], dsl.NodeTypeOperator),
1796				dsl.NodeTypeAssignment,
1797			)
1798		},
1799	},
1800	ProdTabEntry{
1801		String: `Assignment : Lvalue "|=" Rvalue	<< dsl.NewASTNodeBinary(
1802      dsl.NewASTToken("=", X[1]),
1803      X[0],
1804      dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("|", X[1]), X[0], X[2], dsl.NodeTypeOperator),
1805      dsl.NodeTypeAssignment,
1806    ) >>`,
1807		Id:         "Assignment",
1808		NTType:     6,
1809		Index:      130,
1810		NumSymbols: 3,
1811		ReduceFunc: func(X []Attrib) (Attrib, error) {
1812			return dsl.NewASTNodeBinary(
1813				dsl.NewASTToken("=", X[1]),
1814				X[0],
1815				dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("|", X[1]), X[0], X[2], dsl.NodeTypeOperator),
1816				dsl.NodeTypeAssignment,
1817			)
1818		},
1819	},
1820	ProdTabEntry{
1821		String: `Assignment : Lvalue "&=" Rvalue	<< dsl.NewASTNodeBinary(
1822      dsl.NewASTToken("=", X[1]),
1823      X[0],
1824      dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("^", X[1]), X[0], X[2], dsl.NodeTypeOperator),
1825      dsl.NodeTypeAssignment,
1826    ) >>`,
1827		Id:         "Assignment",
1828		NTType:     6,
1829		Index:      131,
1830		NumSymbols: 3,
1831		ReduceFunc: func(X []Attrib) (Attrib, error) {
1832			return dsl.NewASTNodeBinary(
1833				dsl.NewASTToken("=", X[1]),
1834				X[0],
1835				dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("^", X[1]), X[0], X[2], dsl.NodeTypeOperator),
1836				dsl.NodeTypeAssignment,
1837			)
1838		},
1839	},
1840	ProdTabEntry{
1841		String: `Assignment : Lvalue "^=" Rvalue	<< dsl.NewASTNodeBinary(
1842      dsl.NewASTToken("=", X[1]),
1843      X[0],
1844      dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("^", X[1]), X[0], X[2], dsl.NodeTypeOperator),
1845      dsl.NodeTypeAssignment,
1846    ) >>`,
1847		Id:         "Assignment",
1848		NTType:     6,
1849		Index:      132,
1850		NumSymbols: 3,
1851		ReduceFunc: func(X []Attrib) (Attrib, error) {
1852			return dsl.NewASTNodeBinary(
1853				dsl.NewASTToken("=", X[1]),
1854				X[0],
1855				dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("^", X[1]), X[0], X[2], dsl.NodeTypeOperator),
1856				dsl.NodeTypeAssignment,
1857			)
1858		},
1859	},
1860	ProdTabEntry{
1861		String: `Assignment : Lvalue "<<=" Rvalue	<< dsl.NewASTNodeBinary(
1862      dsl.NewASTToken("=", X[1]),
1863      X[0],
1864      dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("<<", X[1]), X[0], X[2], dsl.NodeTypeOperator),
1865      dsl.NodeTypeAssignment,
1866    ) >>`,
1867		Id:         "Assignment",
1868		NTType:     6,
1869		Index:      133,
1870		NumSymbols: 3,
1871		ReduceFunc: func(X []Attrib) (Attrib, error) {
1872			return dsl.NewASTNodeBinary(
1873				dsl.NewASTToken("=", X[1]),
1874				X[0],
1875				dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("<<", X[1]), X[0], X[2], dsl.NodeTypeOperator),
1876				dsl.NodeTypeAssignment,
1877			)
1878		},
1879	},
1880	ProdTabEntry{
1881		String: `Assignment : Lvalue ">>=" Rvalue	<< dsl.NewASTNodeBinary(
1882      dsl.NewASTToken("=", X[1]),
1883      X[0],
1884      dsl.NewASTNodeBinaryNestable(dsl.NewASTToken(">"+">", X[1]), X[0], X[2], dsl.NodeTypeOperator),
1885      dsl.NodeTypeAssignment,
1886    ) >>`,
1887		Id:         "Assignment",
1888		NTType:     6,
1889		Index:      134,
1890		NumSymbols: 3,
1891		ReduceFunc: func(X []Attrib) (Attrib, error) {
1892			return dsl.NewASTNodeBinary(
1893				dsl.NewASTToken("=", X[1]),
1894				X[0],
1895				dsl.NewASTNodeBinaryNestable(dsl.NewASTToken(">"+">", X[1]), X[0], X[2], dsl.NodeTypeOperator),
1896				dsl.NodeTypeAssignment,
1897			)
1898		},
1899	},
1900	ProdTabEntry{
1901		String: `Assignment : Lvalue ">>>=" Rvalue	<< dsl.NewASTNodeBinary(
1902      dsl.NewASTToken("=", X[1]),
1903      X[0],
1904      dsl.NewASTNodeBinaryNestable(dsl.NewASTToken(">"+">"+">", X[1]), X[0], X[2], dsl.NodeTypeOperator),
1905      dsl.NodeTypeAssignment,
1906    ) >>`,
1907		Id:         "Assignment",
1908		NTType:     6,
1909		Index:      135,
1910		NumSymbols: 3,
1911		ReduceFunc: func(X []Attrib) (Attrib, error) {
1912			return dsl.NewASTNodeBinary(
1913				dsl.NewASTToken("=", X[1]),
1914				X[0],
1915				dsl.NewASTNodeBinaryNestable(dsl.NewASTToken(">"+">"+">", X[1]), X[0], X[2], dsl.NodeTypeOperator),
1916				dsl.NodeTypeAssignment,
1917			)
1918		},
1919	},
1920	ProdTabEntry{
1921		String: `Assignment : Lvalue "+=" Rvalue	<< dsl.NewASTNodeBinary(
1922      dsl.NewASTToken("=", X[1]),
1923      X[0],
1924      dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("+", X[1]), X[0], X[2], dsl.NodeTypeOperator),
1925      dsl.NodeTypeAssignment,
1926    ) >>`,
1927		Id:         "Assignment",
1928		NTType:     6,
1929		Index:      136,
1930		NumSymbols: 3,
1931		ReduceFunc: func(X []Attrib) (Attrib, error) {
1932			return dsl.NewASTNodeBinary(
1933				dsl.NewASTToken("=", X[1]),
1934				X[0],
1935				dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("+", X[1]), X[0], X[2], dsl.NodeTypeOperator),
1936				dsl.NodeTypeAssignment,
1937			)
1938		},
1939	},
1940	ProdTabEntry{
1941		String: `Assignment : Lvalue ".=" Rvalue	<< dsl.NewASTNodeBinary(
1942      dsl.NewASTToken("=", X[1]),
1943      X[0],
1944      dsl.NewASTNodeBinaryNestable(dsl.NewASTToken(".", X[1]), X[0], X[2], dsl.NodeTypeOperator),
1945      dsl.NodeTypeAssignment,
1946    ) >>`,
1947		Id:         "Assignment",
1948		NTType:     6,
1949		Index:      137,
1950		NumSymbols: 3,
1951		ReduceFunc: func(X []Attrib) (Attrib, error) {
1952			return dsl.NewASTNodeBinary(
1953				dsl.NewASTToken("=", X[1]),
1954				X[0],
1955				dsl.NewASTNodeBinaryNestable(dsl.NewASTToken(".", X[1]), X[0], X[2], dsl.NodeTypeOperator),
1956				dsl.NodeTypeAssignment,
1957			)
1958		},
1959	},
1960	ProdTabEntry{
1961		String: `Assignment : Lvalue "-=" Rvalue	<< dsl.NewASTNodeBinary(
1962      dsl.NewASTToken("=", X[1]),
1963      X[0],
1964      dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("-", X[1]), X[0], X[2], dsl.NodeTypeOperator),
1965      dsl.NodeTypeAssignment,
1966    ) >>`,
1967		Id:         "Assignment",
1968		NTType:     6,
1969		Index:      138,
1970		NumSymbols: 3,
1971		ReduceFunc: func(X []Attrib) (Attrib, error) {
1972			return dsl.NewASTNodeBinary(
1973				dsl.NewASTToken("=", X[1]),
1974				X[0],
1975				dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("-", X[1]), X[0], X[2], dsl.NodeTypeOperator),
1976				dsl.NodeTypeAssignment,
1977			)
1978		},
1979	},
1980	ProdTabEntry{
1981		String: `Assignment : Lvalue "*=" Rvalue	<< dsl.NewASTNodeBinary(
1982      dsl.NewASTToken("=", X[1]),
1983      X[0],
1984      dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("*", X[1]), X[0], X[2], dsl.NodeTypeOperator),
1985      dsl.NodeTypeAssignment,
1986    ) >>`,
1987		Id:         "Assignment",
1988		NTType:     6,
1989		Index:      139,
1990		NumSymbols: 3,
1991		ReduceFunc: func(X []Attrib) (Attrib, error) {
1992			return dsl.NewASTNodeBinary(
1993				dsl.NewASTToken("=", X[1]),
1994				X[0],
1995				dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("*", X[1]), X[0], X[2], dsl.NodeTypeOperator),
1996				dsl.NodeTypeAssignment,
1997			)
1998		},
1999	},
2000	ProdTabEntry{
2001		String: `Assignment : Lvalue "/=" Rvalue	<< dsl.NewASTNodeBinary(
2002      dsl.NewASTToken("=", X[1]),
2003      X[0],
2004      dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("/", X[1]), X[0], X[2], dsl.NodeTypeOperator),
2005      dsl.NodeTypeAssignment,
2006    ) >>`,
2007		Id:         "Assignment",
2008		NTType:     6,
2009		Index:      140,
2010		NumSymbols: 3,
2011		ReduceFunc: func(X []Attrib) (Attrib, error) {
2012			return dsl.NewASTNodeBinary(
2013				dsl.NewASTToken("=", X[1]),
2014				X[0],
2015				dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("/", X[1]), X[0], X[2], dsl.NodeTypeOperator),
2016				dsl.NodeTypeAssignment,
2017			)
2018		},
2019	},
2020	ProdTabEntry{
2021		String: `Assignment : Lvalue "//=" Rvalue	<< dsl.NewASTNodeBinary(
2022      dsl.NewASTToken("=", X[1]),
2023      X[0],
2024      dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("//", X[1]), X[0], X[2], dsl.NodeTypeOperator),
2025      dsl.NodeTypeAssignment,
2026    ) >>`,
2027		Id:         "Assignment",
2028		NTType:     6,
2029		Index:      141,
2030		NumSymbols: 3,
2031		ReduceFunc: func(X []Attrib) (Attrib, error) {
2032			return dsl.NewASTNodeBinary(
2033				dsl.NewASTToken("=", X[1]),
2034				X[0],
2035				dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("//", X[1]), X[0], X[2], dsl.NodeTypeOperator),
2036				dsl.NodeTypeAssignment,
2037			)
2038		},
2039	},
2040	ProdTabEntry{
2041		String: `Assignment : Lvalue "%=" Rvalue	<< dsl.NewASTNodeBinary(
2042      dsl.NewASTToken("=", X[1]),
2043      X[0],
2044      dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("%", X[1]), X[0], X[2], dsl.NodeTypeOperator),
2045      dsl.NodeTypeAssignment,
2046    ) >>`,
2047		Id:         "Assignment",
2048		NTType:     6,
2049		Index:      142,
2050		NumSymbols: 3,
2051		ReduceFunc: func(X []Attrib) (Attrib, error) {
2052			return dsl.NewASTNodeBinary(
2053				dsl.NewASTToken("=", X[1]),
2054				X[0],
2055				dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("%", X[1]), X[0], X[2], dsl.NodeTypeOperator),
2056				dsl.NodeTypeAssignment,
2057			)
2058		},
2059	},
2060	ProdTabEntry{
2061		String: `Assignment : Lvalue "**=" Rvalue	<< dsl.NewASTNodeBinary(
2062      dsl.NewASTToken("=", X[1]),
2063      X[0],
2064      dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("**", X[1]), X[0], X[2], dsl.NodeTypeOperator),
2065      dsl.NodeTypeAssignment,
2066    ) >>`,
2067		Id:         "Assignment",
2068		NTType:     6,
2069		Index:      143,
2070		NumSymbols: 3,
2071		ReduceFunc: func(X []Attrib) (Attrib, error) {
2072			return dsl.NewASTNodeBinary(
2073				dsl.NewASTToken("=", X[1]),
2074				X[0],
2075				dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("**", X[1]), X[0], X[2], dsl.NodeTypeOperator),
2076				dsl.NodeTypeAssignment,
2077			)
2078		},
2079	},
2080	ProdTabEntry{
2081		String: `Rvalue : PrecedenceChainStart	<<  >>`,
2082		Id:         "Rvalue",
2083		NTType:     41,
2084		Index:      144,
2085		NumSymbols: 1,
2086		ReduceFunc: func(X []Attrib) (Attrib, error) {
2087			return X[0], nil
2088		},
2089	},
2090	ProdTabEntry{
2091		String: `PrecedenceChainStart : TernaryTerm	<<  >>`,
2092		Id:         "PrecedenceChainStart",
2093		NTType:     42,
2094		Index:      145,
2095		NumSymbols: 1,
2096		ReduceFunc: func(X []Attrib) (Attrib, error) {
2097			return X[0], nil
2098		},
2099	},
2100	ProdTabEntry{
2101		String: `TernaryTerm : LogicalOrTerm "?" TernaryTerm ":" TernaryTerm	<< dsl.NewASTNodeTernary(dsl.NewASTToken("?:", X[1]), X[0], X[2], X[4], dsl.NodeTypeOperator) >>`,
2102		Id:         "TernaryTerm",
2103		NTType:     43,
2104		Index:      146,
2105		NumSymbols: 5,
2106		ReduceFunc: func(X []Attrib) (Attrib, error) {
2107			return dsl.NewASTNodeTernary(dsl.NewASTToken("?:", X[1]), X[0], X[2], X[4], dsl.NodeTypeOperator)
2108		},
2109	},
2110	ProdTabEntry{
2111		String: `TernaryTerm : LogicalOrTerm	<<  >>`,
2112		Id:         "TernaryTerm",
2113		NTType:     43,
2114		Index:      147,
2115		NumSymbols: 1,
2116		ReduceFunc: func(X []Attrib) (Attrib, error) {
2117			return X[0], nil
2118		},
2119	},
2120	ProdTabEntry{
2121		String: `LogicalOrTerm : LogicalOrTerm "||" LogicalXORTerm	<< dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`,
2122		Id:         "LogicalOrTerm",
2123		NTType:     44,
2124		Index:      148,
2125		NumSymbols: 3,
2126		ReduceFunc: func(X []Attrib) (Attrib, error) {
2127			return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator)
2128		},
2129	},
2130	ProdTabEntry{
2131		String: `LogicalOrTerm : LogicalXORTerm	<<  >>`,
2132		Id:         "LogicalOrTerm",
2133		NTType:     44,
2134		Index:      149,
2135		NumSymbols: 1,
2136		ReduceFunc: func(X []Attrib) (Attrib, error) {
2137			return X[0], nil
2138		},
2139	},
2140	ProdTabEntry{
2141		String: `LogicalXORTerm : LogicalXORTerm "^^" LogicalAndTerm	<< dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`,
2142		Id:         "LogicalXORTerm",
2143		NTType:     45,
2144		Index:      150,
2145		NumSymbols: 3,
2146		ReduceFunc: func(X []Attrib) (Attrib, error) {
2147			return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator)
2148		},
2149	},
2150	ProdTabEntry{
2151		String: `LogicalXORTerm : LogicalAndTerm	<<  >>`,
2152		Id:         "LogicalXORTerm",
2153		NTType:     45,
2154		Index:      151,
2155		NumSymbols: 1,
2156		ReduceFunc: func(X []Attrib) (Attrib, error) {
2157			return X[0], nil
2158		},
2159	},
2160	ProdTabEntry{
2161		String: `LogicalAndTerm : LogicalAndTerm "&&" AbsentCoalesceTerm	<< dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`,
2162		Id:         "LogicalAndTerm",
2163		NTType:     46,
2164		Index:      152,
2165		NumSymbols: 3,
2166		ReduceFunc: func(X []Attrib) (Attrib, error) {
2167			return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator)
2168		},
2169	},
2170	ProdTabEntry{
2171		String: `LogicalAndTerm : AbsentCoalesceTerm	<<  >>`,
2172		Id:         "LogicalAndTerm",
2173		NTType:     46,
2174		Index:      153,
2175		NumSymbols: 1,
2176		ReduceFunc: func(X []Attrib) (Attrib, error) {
2177			return X[0], nil
2178		},
2179	},
2180	ProdTabEntry{
2181		String: `AbsentCoalesceTerm : AbsentCoalesceTerm "??" EmptyCoalesceTerm	<< dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`,
2182		Id:         "AbsentCoalesceTerm",
2183		NTType:     47,
2184		Index:      154,
2185		NumSymbols: 3,
2186		ReduceFunc: func(X []Attrib) (Attrib, error) {
2187			return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator)
2188		},
2189	},
2190	ProdTabEntry{
2191		String: `AbsentCoalesceTerm : EmptyCoalesceTerm	<<  >>`,
2192		Id:         "AbsentCoalesceTerm",
2193		NTType:     47,
2194		Index:      155,
2195		NumSymbols: 1,
2196		ReduceFunc: func(X []Attrib) (Attrib, error) {
2197			return X[0], nil
2198		},
2199	},
2200	ProdTabEntry{
2201		String: `EmptyCoalesceTerm : EmptyCoalesceTerm "???" EqneTerm	<< dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`,
2202		Id:         "EmptyCoalesceTerm",
2203		NTType:     48,
2204		Index:      156,
2205		NumSymbols: 3,
2206		ReduceFunc: func(X []Attrib) (Attrib, error) {
2207			return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator)
2208		},
2209	},
2210	ProdTabEntry{
2211		String: `EmptyCoalesceTerm : EqneTerm	<<  >>`,
2212		Id:         "EmptyCoalesceTerm",
2213		NTType:     48,
2214		Index:      157,
2215		NumSymbols: 1,
2216		ReduceFunc: func(X []Attrib) (Attrib, error) {
2217			return X[0], nil
2218		},
2219	},
2220	ProdTabEntry{
2221		String: `EqneTerm : EqneTerm "=~" CmpTerm	<< dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`,
2222		Id:         "EqneTerm",
2223		NTType:     49,
2224		Index:      158,
2225		NumSymbols: 3,
2226		ReduceFunc: func(X []Attrib) (Attrib, error) {
2227			return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator)
2228		},
2229	},
2230	ProdTabEntry{
2231		String: `EqneTerm : EqneTerm "!=~" CmpTerm	<< dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`,
2232		Id:         "EqneTerm",
2233		NTType:     49,
2234		Index:      159,
2235		NumSymbols: 3,
2236		ReduceFunc: func(X []Attrib) (Attrib, error) {
2237			return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator)
2238		},
2239	},
2240	ProdTabEntry{
2241		String: `EqneTerm : EqneTerm "==" CmpTerm	<< dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`,
2242		Id:         "EqneTerm",
2243		NTType:     49,
2244		Index:      160,
2245		NumSymbols: 3,
2246		ReduceFunc: func(X []Attrib) (Attrib, error) {
2247			return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator)
2248		},
2249	},
2250	ProdTabEntry{
2251		String: `EqneTerm : EqneTerm "!=" CmpTerm	<< dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`,
2252		Id:         "EqneTerm",
2253		NTType:     49,
2254		Index:      161,
2255		NumSymbols: 3,
2256		ReduceFunc: func(X []Attrib) (Attrib, error) {
2257			return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator)
2258		},
2259	},
2260	ProdTabEntry{
2261		String: `EqneTerm : CmpTerm	<<  >>`,
2262		Id:         "EqneTerm",
2263		NTType:     49,
2264		Index:      162,
2265		NumSymbols: 1,
2266		ReduceFunc: func(X []Attrib) (Attrib, error) {
2267			return X[0], nil
2268		},
2269	},
2270	ProdTabEntry{
2271		String: `CmpTerm : CmpTerm ">" BitwiseORTerm	<< dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`,
2272		Id:         "CmpTerm",
2273		NTType:     50,
2274		Index:      163,
2275		NumSymbols: 3,
2276		ReduceFunc: func(X []Attrib) (Attrib, error) {
2277			return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator)
2278		},
2279	},
2280	ProdTabEntry{
2281		String: `CmpTerm : CmpTerm ">=" BitwiseORTerm	<< dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`,
2282		Id:         "CmpTerm",
2283		NTType:     50,
2284		Index:      164,
2285		NumSymbols: 3,
2286		ReduceFunc: func(X []Attrib) (Attrib, error) {
2287			return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator)
2288		},
2289	},
2290	ProdTabEntry{
2291		String: `CmpTerm : CmpTerm "<" BitwiseORTerm	<< dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`,
2292		Id:         "CmpTerm",
2293		NTType:     50,
2294		Index:      165,
2295		NumSymbols: 3,
2296		ReduceFunc: func(X []Attrib) (Attrib, error) {
2297			return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator)
2298		},
2299	},
2300	ProdTabEntry{
2301		String: `CmpTerm : CmpTerm "<=" BitwiseORTerm	<< dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`,
2302		Id:         "CmpTerm",
2303		NTType:     50,
2304		Index:      166,
2305		NumSymbols: 3,
2306		ReduceFunc: func(X []Attrib) (Attrib, error) {
2307			return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator)
2308		},
2309	},
2310	ProdTabEntry{
2311		String: `CmpTerm : BitwiseORTerm	<<  >>`,
2312		Id:         "CmpTerm",
2313		NTType:     50,
2314		Index:      167,
2315		NumSymbols: 1,
2316		ReduceFunc: func(X []Attrib) (Attrib, error) {
2317			return X[0], nil
2318		},
2319	},
2320	ProdTabEntry{
2321		String: `BitwiseORTerm : BitwiseORTerm "|" BitwiseXORTerm	<< dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`,
2322		Id:         "BitwiseORTerm",
2323		NTType:     51,
2324		Index:      168,
2325		NumSymbols: 3,
2326		ReduceFunc: func(X []Attrib) (Attrib, error) {
2327			return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator)
2328		},
2329	},
2330	ProdTabEntry{
2331		String: `BitwiseORTerm : BitwiseXORTerm	<<  >>`,
2332		Id:         "BitwiseORTerm",
2333		NTType:     51,
2334		Index:      169,
2335		NumSymbols: 1,
2336		ReduceFunc: func(X []Attrib) (Attrib, error) {
2337			return X[0], nil
2338		},
2339	},
2340	ProdTabEntry{
2341		String: `BitwiseXORTerm : BitwiseXORTerm "^" BitwiseANDTerm	<< dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`,
2342		Id:         "BitwiseXORTerm",
2343		NTType:     52,
2344		Index:      170,
2345		NumSymbols: 3,
2346		ReduceFunc: func(X []Attrib) (Attrib, error) {
2347			return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator)
2348		},
2349	},
2350	ProdTabEntry{
2351		String: `BitwiseXORTerm : BitwiseANDTerm	<<  >>`,
2352		Id:         "BitwiseXORTerm",
2353		NTType:     52,
2354		Index:      171,
2355		NumSymbols: 1,
2356		ReduceFunc: func(X []Attrib) (Attrib, error) {
2357			return X[0], nil
2358		},
2359	},
2360	ProdTabEntry{
2361		String: `BitwiseANDTerm : BitwiseANDTerm "&" BitwiseShiftTerm	<< dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`,
2362		Id:         "BitwiseANDTerm",
2363		NTType:     53,
2364		Index:      172,
2365		NumSymbols: 3,
2366		ReduceFunc: func(X []Attrib) (Attrib, error) {
2367			return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator)
2368		},
2369	},
2370	ProdTabEntry{
2371		String: `BitwiseANDTerm : BitwiseShiftTerm	<<  >>`,
2372		Id:         "BitwiseANDTerm",
2373		NTType:     53,
2374		Index:      173,
2375		NumSymbols: 1,
2376		ReduceFunc: func(X []Attrib) (Attrib, error) {
2377			return X[0], nil
2378		},
2379	},
2380	ProdTabEntry{
2381		String: `BitwiseShiftTerm : BitwiseShiftTerm "<<" AddsubdotTerm	<< dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`,
2382		Id:         "BitwiseShiftTerm",
2383		NTType:     54,
2384		Index:      174,
2385		NumSymbols: 3,
2386		ReduceFunc: func(X []Attrib) (Attrib, error) {
2387			return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator)
2388		},
2389	},
2390	ProdTabEntry{
2391		String: `BitwiseShiftTerm : BitwiseShiftTerm ">>" AddsubdotTerm	<< dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`,
2392		Id:         "BitwiseShiftTerm",
2393		NTType:     54,
2394		Index:      175,
2395		NumSymbols: 3,
2396		ReduceFunc: func(X []Attrib) (Attrib, error) {
2397			return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator)
2398		},
2399	},
2400	ProdTabEntry{
2401		String: `BitwiseShiftTerm : BitwiseShiftTerm ">>>" AddsubdotTerm	<< dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`,
2402		Id:         "BitwiseShiftTerm",
2403		NTType:     54,
2404		Index:      176,
2405		NumSymbols: 3,
2406		ReduceFunc: func(X []Attrib) (Attrib, error) {
2407			return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator)
2408		},
2409	},
2410	ProdTabEntry{
2411		String: `BitwiseShiftTerm : AddsubdotTerm	<<  >>`,
2412		Id:         "BitwiseShiftTerm",
2413		NTType:     54,
2414		Index:      177,
2415		NumSymbols: 1,
2416		ReduceFunc: func(X []Attrib) (Attrib, error) {
2417			return X[0], nil
2418		},
2419	},
2420	ProdTabEntry{
2421		String: `AddsubdotTerm : AddsubdotTerm "+" MuldivTerm	<< dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`,
2422		Id:         "AddsubdotTerm",
2423		NTType:     55,
2424		Index:      178,
2425		NumSymbols: 3,
2426		ReduceFunc: func(X []Attrib) (Attrib, error) {
2427			return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator)
2428		},
2429	},
2430	ProdTabEntry{
2431		String: `AddsubdotTerm : AddsubdotTerm "-" MuldivTerm	<< dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`,
2432		Id:         "AddsubdotTerm",
2433		NTType:     55,
2434		Index:      179,
2435		NumSymbols: 3,
2436		ReduceFunc: func(X []Attrib) (Attrib, error) {
2437			return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator)
2438		},
2439	},
2440	ProdTabEntry{
2441		String: `AddsubdotTerm : AddsubdotTerm ".+" MuldivTerm	<< dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`,
2442		Id:         "AddsubdotTerm",
2443		NTType:     55,
2444		Index:      180,
2445		NumSymbols: 3,
2446		ReduceFunc: func(X []Attrib) (Attrib, error) {
2447			return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator)
2448		},
2449	},
2450	ProdTabEntry{
2451		String: `AddsubdotTerm : AddsubdotTerm ".-" MuldivTerm	<< dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`,
2452		Id:         "AddsubdotTerm",
2453		NTType:     55,
2454		Index:      181,
2455		NumSymbols: 3,
2456		ReduceFunc: func(X []Attrib) (Attrib, error) {
2457			return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator)
2458		},
2459	},
2460	ProdTabEntry{
2461		String: `AddsubdotTerm : AddsubdotTerm "." MuldivTerm	<< dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`,
2462		Id:         "AddsubdotTerm",
2463		NTType:     55,
2464		Index:      182,
2465		NumSymbols: 3,
2466		ReduceFunc: func(X []Attrib) (Attrib, error) {
2467			return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator)
2468		},
2469	},
2470	ProdTabEntry{
2471		String: `AddsubdotTerm : MuldivTerm	<<  >>`,
2472		Id:         "AddsubdotTerm",
2473		NTType:     55,
2474		Index:      183,
2475		NumSymbols: 1,
2476		ReduceFunc: func(X []Attrib) (Attrib, error) {
2477			return X[0], nil
2478		},
2479	},
2480	ProdTabEntry{
2481		String: `MuldivTerm : MuldivTerm "*" UnaryOpTerm	<< dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`,
2482		Id:         "MuldivTerm",
2483		NTType:     56,
2484		Index:      184,
2485		NumSymbols: 3,
2486		ReduceFunc: func(X []Attrib) (Attrib, error) {
2487			return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator)
2488		},
2489	},
2490	ProdTabEntry{
2491		String: `MuldivTerm : MuldivTerm "/" UnaryOpTerm	<< dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`,
2492		Id:         "MuldivTerm",
2493		NTType:     56,
2494		Index:      185,
2495		NumSymbols: 3,
2496		ReduceFunc: func(X []Attrib) (Attrib, error) {
2497			return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator)
2498		},
2499	},
2500	ProdTabEntry{
2501		String: `MuldivTerm : MuldivTerm "//" UnaryOpTerm	<< dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`,
2502		Id:         "MuldivTerm",
2503		NTType:     56,
2504		Index:      186,
2505		NumSymbols: 3,
2506		ReduceFunc: func(X []Attrib) (Attrib, error) {
2507			return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator)
2508		},
2509	},
2510	ProdTabEntry{
2511		String: `MuldivTerm : MuldivTerm "%" UnaryOpTerm	<< dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`,
2512		Id:         "MuldivTerm",
2513		NTType:     56,
2514		Index:      187,
2515		NumSymbols: 3,
2516		ReduceFunc: func(X []Attrib) (Attrib, error) {
2517			return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator)
2518		},
2519	},
2520	ProdTabEntry{
2521		String: `MuldivTerm : MuldivTerm ".*" UnaryOpTerm	<< dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`,
2522		Id:         "MuldivTerm",
2523		NTType:     56,
2524		Index:      188,
2525		NumSymbols: 3,
2526		ReduceFunc: func(X []Attrib) (Attrib, error) {
2527			return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator)
2528		},
2529	},
2530	ProdTabEntry{
2531		String: `MuldivTerm : MuldivTerm "./" UnaryOpTerm	<< dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`,
2532		Id:         "MuldivTerm",
2533		NTType:     56,
2534		Index:      189,
2535		NumSymbols: 3,
2536		ReduceFunc: func(X []Attrib) (Attrib, error) {
2537			return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator)
2538		},
2539	},
2540	ProdTabEntry{
2541		String: `MuldivTerm : MuldivTerm ".//" UnaryOpTerm	<< dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`,
2542		Id:         "MuldivTerm",
2543		NTType:     56,
2544		Index:      190,
2545		NumSymbols: 3,
2546		ReduceFunc: func(X []Attrib) (Attrib, error) {
2547			return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator)
2548		},
2549	},
2550	ProdTabEntry{
2551		String: `MuldivTerm : UnaryOpTerm	<<  >>`,
2552		Id:         "MuldivTerm",
2553		NTType:     56,
2554		Index:      191,
2555		NumSymbols: 1,
2556		ReduceFunc: func(X []Attrib) (Attrib, error) {
2557			return X[0], nil
2558		},
2559	},
2560	ProdTabEntry{
2561		String: `UnaryOpTerm : "+" UnaryOpTerm	<< dsl.NewASTNodeUnary(X[0], X[1], dsl.NodeTypeOperator) >>`,
2562		Id:         "UnaryOpTerm",
2563		NTType:     57,
2564		Index:      192,
2565		NumSymbols: 2,
2566		ReduceFunc: func(X []Attrib) (Attrib, error) {
2567			return dsl.NewASTNodeUnary(X[0], X[1], dsl.NodeTypeOperator)
2568		},
2569	},
2570	ProdTabEntry{
2571		String: `UnaryOpTerm : "-" UnaryOpTerm	<< dsl.NewASTNodeUnary(X[0], X[1], dsl.NodeTypeOperator) >>`,
2572		Id:         "UnaryOpTerm",
2573		NTType:     57,
2574		Index:      193,
2575		NumSymbols: 2,
2576		ReduceFunc: func(X []Attrib) (Attrib, error) {
2577			return dsl.NewASTNodeUnary(X[0], X[1], dsl.NodeTypeOperator)
2578		},
2579	},
2580	ProdTabEntry{
2581		String: `UnaryOpTerm : ".+" UnaryOpTerm	<< dsl.NewASTNodeUnary(X[0], X[1], dsl.NodeTypeOperator) >>`,
2582		Id:         "UnaryOpTerm",
2583		NTType:     57,
2584		Index:      194,
2585		NumSymbols: 2,
2586		ReduceFunc: func(X []Attrib) (Attrib, error) {
2587			return dsl.NewASTNodeUnary(X[0], X[1], dsl.NodeTypeOperator)
2588		},
2589	},
2590	ProdTabEntry{
2591		String: `UnaryOpTerm : ".-" UnaryOpTerm	<< dsl.NewASTNodeUnary(X[0], X[1], dsl.NodeTypeOperator) >>`,
2592		Id:         "UnaryOpTerm",
2593		NTType:     57,
2594		Index:      195,
2595		NumSymbols: 2,
2596		ReduceFunc: func(X []Attrib) (Attrib, error) {
2597			return dsl.NewASTNodeUnary(X[0], X[1], dsl.NodeTypeOperator)
2598		},
2599	},
2600	ProdTabEntry{
2601		String: `UnaryOpTerm : "!" UnaryOpTerm	<< dsl.NewASTNodeUnary(X[0], X[1], dsl.NodeTypeOperator) >>`,
2602		Id:         "UnaryOpTerm",
2603		NTType:     57,
2604		Index:      196,
2605		NumSymbols: 2,
2606		ReduceFunc: func(X []Attrib) (Attrib, error) {
2607			return dsl.NewASTNodeUnary(X[0], X[1], dsl.NodeTypeOperator)
2608		},
2609	},
2610	ProdTabEntry{
2611		String: `UnaryOpTerm : "~" UnaryOpTerm	<< dsl.NewASTNodeUnary(X[0], X[1], dsl.NodeTypeOperator) >>`,
2612		Id:         "UnaryOpTerm",
2613		NTType:     57,
2614		Index:      197,
2615		NumSymbols: 2,
2616		ReduceFunc: func(X []Attrib) (Attrib, error) {
2617			return dsl.NewASTNodeUnary(X[0], X[1], dsl.NodeTypeOperator)
2618		},
2619	},
2620	ProdTabEntry{
2621		String: `UnaryOpTerm : PowTerm	<<  >>`,
2622		Id:         "UnaryOpTerm",
2623		NTType:     57,
2624		Index:      198,
2625		NumSymbols: 1,
2626		ReduceFunc: func(X []Attrib) (Attrib, error) {
2627			return X[0], nil
2628		},
2629	},
2630	ProdTabEntry{
2631		String: `PowTerm : PrecedenceChainEnd "**" PowTerm	<< dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`,
2632		Id:         "PowTerm",
2633		NTType:     58,
2634		Index:      199,
2635		NumSymbols: 3,
2636		ReduceFunc: func(X []Attrib) (Attrib, error) {
2637			return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator)
2638		},
2639	},
2640	ProdTabEntry{
2641		String: `PowTerm : PrecedenceChainEnd	<<  >>`,
2642		Id:         "PowTerm",
2643		NTType:     58,
2644		Index:      200,
2645		NumSymbols: 1,
2646		ReduceFunc: func(X []Attrib) (Attrib, error) {
2647			return X[0], nil
2648		},
2649	},
2650	ProdTabEntry{
2651		String: `PrecedenceChainEnd : "(" Rvalue ")"	<< dsl.Nestable(X[1]) >>`,
2652		Id:         "PrecedenceChainEnd",
2653		NTType:     59,
2654		Index:      201,
2655		NumSymbols: 3,
2656		ReduceFunc: func(X []Attrib) (Attrib, error) {
2657			return dsl.Nestable(X[1])
2658		},
2659	},
2660	ProdTabEntry{
2661		String: `PrecedenceChainEnd : MlrvalOrFunction	<<  >>`,
2662		Id:         "PrecedenceChainEnd",
2663		NTType:     59,
2664		Index:      202,
2665		NumSymbols: 1,
2666		ReduceFunc: func(X []Attrib) (Attrib, error) {
2667			return X[0], nil
2668		},
2669	},
2670	ProdTabEntry{
2671		String: `MlrvalOrFunction : FieldValue	<<  >>`,
2672		Id:         "MlrvalOrFunction",
2673		NTType:     60,
2674		Index:      203,
2675		NumSymbols: 1,
2676		ReduceFunc: func(X []Attrib) (Attrib, error) {
2677			return X[0], nil
2678		},
2679	},
2680	ProdTabEntry{
2681		String: `MlrvalOrFunction : FullSrec	<<  >>`,
2682		Id:         "MlrvalOrFunction",
2683		NTType:     60,
2684		Index:      204,
2685		NumSymbols: 1,
2686		ReduceFunc: func(X []Attrib) (Attrib, error) {
2687			return X[0], nil
2688		},
2689	},
2690	ProdTabEntry{
2691		String: `MlrvalOrFunction : OosvarValue	<<  >>`,
2692		Id:         "MlrvalOrFunction",
2693		NTType:     60,
2694		Index:      205,
2695		NumSymbols: 1,
2696		ReduceFunc: func(X []Attrib) (Attrib, error) {
2697			return X[0], nil
2698		},
2699	},
2700	ProdTabEntry{
2701		String: `MlrvalOrFunction : FullOosvar	<<  >>`,
2702		Id:         "MlrvalOrFunction",
2703		NTType:     60,
2704		Index:      206,
2705		NumSymbols: 1,
2706		ReduceFunc: func(X []Attrib) (Attrib, error) {
2707			return X[0], nil
2708		},
2709	},
2710	ProdTabEntry{
2711		String: `MlrvalOrFunction : LocalVariable	<<  >>`,
2712		Id:         "MlrvalOrFunction",
2713		NTType:     60,
2714		Index:      207,
2715		NumSymbols: 1,
2716		ReduceFunc: func(X []Attrib) (Attrib, error) {
2717			return X[0], nil
2718		},
2719	},
2720	ProdTabEntry{
2721		String: `MlrvalOrFunction : string_literal	<< dsl.NewASTNodeStripDoubleQuotePair(X[0], dsl.NodeTypeStringLiteral) >>`,
2722		Id:         "MlrvalOrFunction",
2723		NTType:     60,
2724		Index:      208,
2725		NumSymbols: 1,
2726		ReduceFunc: func(X []Attrib) (Attrib, error) {
2727			return dsl.NewASTNodeStripDoubleQuotePair(X[0], dsl.NodeTypeStringLiteral)
2728		},
2729	},
2730	ProdTabEntry{
2731		String: `MlrvalOrFunction : regex_case_insensitive	<< dsl.NewASTNode(X[0], dsl.NodeTypeRegexCaseInsensitive) >>`,
2732		Id:         "MlrvalOrFunction",
2733		NTType:     60,
2734		Index:      209,
2735		NumSymbols: 1,
2736		ReduceFunc: func(X []Attrib) (Attrib, error) {
2737			return dsl.NewASTNode(X[0], dsl.NodeTypeRegexCaseInsensitive)
2738		},
2739	},
2740	ProdTabEntry{
2741		String: `MlrvalOrFunction : int_literal	<< dsl.NewASTNode(X[0], dsl.NodeTypeIntLiteral) >>`,
2742		Id:         "MlrvalOrFunction",
2743		NTType:     60,
2744		Index:      210,
2745		NumSymbols: 1,
2746		ReduceFunc: func(X []Attrib) (Attrib, error) {
2747			return dsl.NewASTNode(X[0], dsl.NodeTypeIntLiteral)
2748		},
2749	},
2750	ProdTabEntry{
2751		String: `MlrvalOrFunction : float_literal	<< dsl.NewASTNode(X[0], dsl.NodeTypeFloatLiteral) >>`,
2752		Id:         "MlrvalOrFunction",
2753		NTType:     60,
2754		Index:      211,
2755		NumSymbols: 1,
2756		ReduceFunc: func(X []Attrib) (Attrib, error) {
2757			return dsl.NewASTNode(X[0], dsl.NodeTypeFloatLiteral)
2758		},
2759	},
2760	ProdTabEntry{
2761		String: `MlrvalOrFunction : boolean_literal	<< dsl.NewASTNode(X[0], dsl.NodeTypeBoolLiteral) >>`,
2762		Id:         "MlrvalOrFunction",
2763		NTType:     60,
2764		Index:      212,
2765		NumSymbols: 1,
2766		ReduceFunc: func(X []Attrib) (Attrib, error) {
2767			return dsl.NewASTNode(X[0], dsl.NodeTypeBoolLiteral)
2768		},
2769	},
2770	ProdTabEntry{
2771		String: `MlrvalOrFunction : const_M_PI	<< dsl.NewASTNode(
2772      X[0],
2773      dsl.NodeTypeConstant,
2774    ) >>`,
2775		Id:         "MlrvalOrFunction",
2776		NTType:     60,
2777		Index:      213,
2778		NumSymbols: 1,
2779		ReduceFunc: func(X []Attrib) (Attrib, error) {
2780			return dsl.NewASTNode(
2781				X[0],
2782				dsl.NodeTypeConstant,
2783			)
2784		},
2785	},
2786	ProdTabEntry{
2787		String: `MlrvalOrFunction : const_M_E	<< dsl.NewASTNode(
2788      X[0],
2789      dsl.NodeTypeConstant,
2790    ) >>`,
2791		Id:         "MlrvalOrFunction",
2792		NTType:     60,
2793		Index:      214,
2794		NumSymbols: 1,
2795		ReduceFunc: func(X []Attrib) (Attrib, error) {
2796			return dsl.NewASTNode(
2797				X[0],
2798				dsl.NodeTypeConstant,
2799			)
2800		},
2801	},
2802	ProdTabEntry{
2803		String: `MlrvalOrFunction : panic	<< dsl.NewASTNode(X[0], dsl.NodeTypePanic) >>`,
2804		Id:         "MlrvalOrFunction",
2805		NTType:     60,
2806		Index:      215,
2807		NumSymbols: 1,
2808		ReduceFunc: func(X []Attrib) (Attrib, error) {
2809			return dsl.NewASTNode(X[0], dsl.NodeTypePanic)
2810		},
2811	},
2812	ProdTabEntry{
2813		String: `MlrvalOrFunction : ArrayLiteral	<<  >>`,
2814		Id:         "MlrvalOrFunction",
2815		NTType:     60,
2816		Index:      216,
2817		NumSymbols: 1,
2818		ReduceFunc: func(X []Attrib) (Attrib, error) {
2819			return X[0], nil
2820		},
2821	},
2822	ProdTabEntry{
2823		String: `ArrayLiteral : "[" "]"	<< dsl.NewASTNodeZary(
2824      dsl.NewASTToken("[]", X[0]),
2825      dsl.NodeTypeArrayLiteral,
2826    ) >>`,
2827		Id:         "ArrayLiteral",
2828		NTType:     61,
2829		Index:      217,
2830		NumSymbols: 2,
2831		ReduceFunc: func(X []Attrib) (Attrib, error) {
2832			return dsl.NewASTNodeZary(
2833				dsl.NewASTToken("[]", X[0]),
2834				dsl.NodeTypeArrayLiteral,
2835			)
2836		},
2837	},
2838	ProdTabEntry{
2839		String: `ArrayLiteral : "[" ArrayLiteralElements "]"	<< dsl.AdoptChildren(
2840        dsl.NewASTNodeNestable(
2841          dsl.NewASTToken("[]", X[0]),
2842          dsl.NodeTypeArrayLiteral,
2843        ),
2844        X[1],
2845      ) >>`,
2846		Id:         "ArrayLiteral",
2847		NTType:     61,
2848		Index:      218,
2849		NumSymbols: 3,
2850		ReduceFunc: func(X []Attrib) (Attrib, error) {
2851			return dsl.AdoptChildren(
2852				dsl.NewASTNodeNestable(
2853					dsl.NewASTToken("[]", X[0]),
2854					dsl.NodeTypeArrayLiteral,
2855				),
2856				X[1],
2857			)
2858		},
2859	},
2860	ProdTabEntry{
2861		String: `ArrayLiteralElements : Rvalue	<< dsl.NewASTNodeUnary(
2862      nil,
2863      X[0],
2864      dsl.NodeTypeArrayLiteral,
2865    ) >>`,
2866		Id:         "ArrayLiteralElements",
2867		NTType:     62,
2868		Index:      219,
2869		NumSymbols: 1,
2870		ReduceFunc: func(X []Attrib) (Attrib, error) {
2871			return dsl.NewASTNodeUnary(
2872				nil,
2873				X[0],
2874				dsl.NodeTypeArrayLiteral,
2875			)
2876		},
2877	},
2878	ProdTabEntry{
2879		String: `ArrayLiteralElements : Rvalue ","	<< dsl.NewASTNodeUnary(
2880      nil,
2881      X[0],
2882      dsl.NodeTypeArrayLiteral,
2883    ) >>`,
2884		Id:         "ArrayLiteralElements",
2885		NTType:     62,
2886		Index:      220,
2887		NumSymbols: 2,
2888		ReduceFunc: func(X []Attrib) (Attrib, error) {
2889			return dsl.NewASTNodeUnary(
2890				nil,
2891				X[0],
2892				dsl.NodeTypeArrayLiteral,
2893			)
2894		},
2895	},
2896	ProdTabEntry{
2897		String: `ArrayLiteralElements : Rvalue "," ArrayLiteralElements	<< dsl.PrependChild(
2898      X[2],
2899      X[0],
2900    ) >>`,
2901		Id:         "ArrayLiteralElements",
2902		NTType:     62,
2903		Index:      221,
2904		NumSymbols: 3,
2905		ReduceFunc: func(X []Attrib) (Attrib, error) {
2906			return dsl.PrependChild(
2907				X[2],
2908				X[0],
2909			)
2910		},
2911	},
2912	ProdTabEntry{
2913		String: `MlrvalOrFunction : MapLiteral	<<  >>`,
2914		Id:         "MlrvalOrFunction",
2915		NTType:     60,
2916		Index:      222,
2917		NumSymbols: 1,
2918		ReduceFunc: func(X []Attrib) (Attrib, error) {
2919			return X[0], nil
2920		},
2921	},
2922	ProdTabEntry{
2923		String: `MapLiteral : "{" "}"	<< dsl.NewASTNodeZary(
2924      dsl.NewASTToken("{}", X[0]),
2925      dsl.NodeTypeMapLiteral,
2926    ) >>`,
2927		Id:         "MapLiteral",
2928		NTType:     63,
2929		Index:      223,
2930		NumSymbols: 2,
2931		ReduceFunc: func(X []Attrib) (Attrib, error) {
2932			return dsl.NewASTNodeZary(
2933				dsl.NewASTToken("{}", X[0]),
2934				dsl.NodeTypeMapLiteral,
2935			)
2936		},
2937	},
2938	ProdTabEntry{
2939		String: `MapLiteral : "{" MapLiteralKeyValuePairs "}"	<< dsl.AdoptChildren(
2940        dsl.NewASTNodeNestable(
2941          dsl.NewASTToken("{}", X[0]),
2942          dsl.NodeTypeMapLiteral,
2943        ),
2944        X[1],
2945      ) >>`,
2946		Id:         "MapLiteral",
2947		NTType:     63,
2948		Index:      224,
2949		NumSymbols: 3,
2950		ReduceFunc: func(X []Attrib) (Attrib, error) {
2951			return dsl.AdoptChildren(
2952				dsl.NewASTNodeNestable(
2953					dsl.NewASTToken("{}", X[0]),
2954					dsl.NodeTypeMapLiteral,
2955				),
2956				X[1],
2957			)
2958		},
2959	},
2960	ProdTabEntry{
2961		String: `MapLiteralKeyValuePairs : MapLiteralKeyValuePair	<< dsl.NewASTNodeUnary(
2962      nil,
2963      X[0],
2964      dsl.NodeTypeMapLiteral,
2965    ) >>`,
2966		Id:         "MapLiteralKeyValuePairs",
2967		NTType:     64,
2968		Index:      225,
2969		NumSymbols: 1,
2970		ReduceFunc: func(X []Attrib) (Attrib, error) {
2971			return dsl.NewASTNodeUnary(
2972				nil,
2973				X[0],
2974				dsl.NodeTypeMapLiteral,
2975			)
2976		},
2977	},
2978	ProdTabEntry{
2979		String: `MapLiteralKeyValuePairs : MapLiteralKeyValuePair ","	<< dsl.NewASTNodeUnary(
2980      nil,
2981      X[0],
2982      dsl.NodeTypeMapLiteral,
2983    ) >>`,
2984		Id:         "MapLiteralKeyValuePairs",
2985		NTType:     64,
2986		Index:      226,
2987		NumSymbols: 2,
2988		ReduceFunc: func(X []Attrib) (Attrib, error) {
2989			return dsl.NewASTNodeUnary(
2990				nil,
2991				X[0],
2992				dsl.NodeTypeMapLiteral,
2993			)
2994		},
2995	},
2996	ProdTabEntry{
2997		String: `MapLiteralKeyValuePairs : MapLiteralKeyValuePair "," MapLiteralKeyValuePairs	<< dsl.PrependChild(
2998      X[2],
2999      X[0],
3000    ) >>`,
3001		Id:         "MapLiteralKeyValuePairs",
3002		NTType:     64,
3003		Index:      227,
3004		NumSymbols: 3,
3005		ReduceFunc: func(X []Attrib) (Attrib, error) {
3006			return dsl.PrependChild(
3007				X[2],
3008				X[0],
3009			)
3010		},
3011	},
3012	ProdTabEntry{
3013		String: `MapLiteralKeyValuePair : Rvalue ":" Rvalue	<< dsl.NewASTNodeBinary(
3014      X[1],
3015      X[0],
3016      X[2],
3017      dsl.NodeTypeMapLiteralKeyValuePair,
3018    ) >>`,
3019		Id:         "MapLiteralKeyValuePair",
3020		NTType:     65,
3021		Index:      228,
3022		NumSymbols: 3,
3023		ReduceFunc: func(X []Attrib) (Attrib, error) {
3024			return dsl.NewASTNodeBinary(
3025				X[1],
3026				X[0],
3027				X[2],
3028				dsl.NodeTypeMapLiteralKeyValuePair,
3029			)
3030		},
3031	},
3032	ProdTabEntry{
3033		String: `MlrvalOrFunction : ContextVariable	<<  >>`,
3034		Id:         "MlrvalOrFunction",
3035		NTType:     60,
3036		Index:      229,
3037		NumSymbols: 1,
3038		ReduceFunc: func(X []Attrib) (Attrib, error) {
3039			return X[0], nil
3040		},
3041	},
3042	ProdTabEntry{
3043		String: `ContextVariable : ctx_IPS	<< dsl.NewASTNode(X[0], dsl.NodeTypeContextVariable) >>`,
3044		Id:         "ContextVariable",
3045		NTType:     66,
3046		Index:      230,
3047		NumSymbols: 1,
3048		ReduceFunc: func(X []Attrib) (Attrib, error) {
3049			return dsl.NewASTNode(X[0], dsl.NodeTypeContextVariable)
3050		},
3051	},
3052	ProdTabEntry{
3053		String: `ContextVariable : ctx_IFS	<< dsl.NewASTNode(X[0], dsl.NodeTypeContextVariable) >>`,
3054		Id:         "ContextVariable",
3055		NTType:     66,
3056		Index:      231,
3057		NumSymbols: 1,
3058		ReduceFunc: func(X []Attrib) (Attrib, error) {
3059			return dsl.NewASTNode(X[0], dsl.NodeTypeContextVariable)
3060		},
3061	},
3062	ProdTabEntry{
3063		String: `ContextVariable : ctx_IRS	<< dsl.NewASTNode(X[0], dsl.NodeTypeContextVariable) >>`,
3064		Id:         "ContextVariable",
3065		NTType:     66,
3066		Index:      232,
3067		NumSymbols: 1,
3068		ReduceFunc: func(X []Attrib) (Attrib, error) {
3069			return dsl.NewASTNode(X[0], dsl.NodeTypeContextVariable)
3070		},
3071	},
3072	ProdTabEntry{
3073		String: `ContextVariable : ctx_OPS	<< dsl.NewASTNode(X[0], dsl.NodeTypeContextVariable) >>`,
3074		Id:         "ContextVariable",
3075		NTType:     66,
3076		Index:      233,
3077		NumSymbols: 1,
3078		ReduceFunc: func(X []Attrib) (Attrib, error) {
3079			return dsl.NewASTNode(X[0], dsl.NodeTypeContextVariable)
3080		},
3081	},
3082	ProdTabEntry{
3083		String: `ContextVariable : ctx_OFS	<< dsl.NewASTNode(X[0], dsl.NodeTypeContextVariable) >>`,
3084		Id:         "ContextVariable",
3085		NTType:     66,
3086		Index:      234,
3087		NumSymbols: 1,
3088		ReduceFunc: func(X []Attrib) (Attrib, error) {
3089			return dsl.NewASTNode(X[0], dsl.NodeTypeContextVariable)
3090		},
3091	},
3092	ProdTabEntry{
3093		String: `ContextVariable : ctx_ORS	<< dsl.NewASTNode(X[0], dsl.NodeTypeContextVariable) >>`,
3094		Id:         "ContextVariable",
3095		NTType:     66,
3096		Index:      235,
3097		NumSymbols: 1,
3098		ReduceFunc: func(X []Attrib) (Attrib, error) {
3099			return dsl.NewASTNode(X[0], dsl.NodeTypeContextVariable)
3100		},
3101	},
3102	ProdTabEntry{
3103		String: `ContextVariable : ctx_OFLATSEP	<< dsl.NewASTNode(X[0], dsl.NodeTypeContextVariable) >>`,
3104		Id:         "ContextVariable",
3105		NTType:     66,
3106		Index:      236,
3107		NumSymbols: 1,
3108		ReduceFunc: func(X []Attrib) (Attrib, error) {
3109			return dsl.NewASTNode(X[0], dsl.NodeTypeContextVariable)
3110		},
3111	},
3112	ProdTabEntry{
3113		String: `ContextVariable : ctx_NF	<< dsl.NewASTNode(X[0], dsl.NodeTypeContextVariable) >>`,
3114		Id:         "ContextVariable",
3115		NTType:     66,
3116		Index:      237,
3117		NumSymbols: 1,
3118		ReduceFunc: func(X []Attrib) (Attrib, error) {
3119			return dsl.NewASTNode(X[0], dsl.NodeTypeContextVariable)
3120		},
3121	},
3122	ProdTabEntry{
3123		String: `ContextVariable : ctx_NR	<< dsl.NewASTNode(X[0], dsl.NodeTypeContextVariable) >>`,
3124		Id:         "ContextVariable",
3125		NTType:     66,
3126		Index:      238,
3127		NumSymbols: 1,
3128		ReduceFunc: func(X []Attrib) (Attrib, error) {
3129			return dsl.NewASTNode(X[0], dsl.NodeTypeContextVariable)
3130		},
3131	},
3132	ProdTabEntry{
3133		String: `ContextVariable : ctx_FNR	<< dsl.NewASTNode(X[0], dsl.NodeTypeContextVariable) >>`,
3134		Id:         "ContextVariable",
3135		NTType:     66,
3136		Index:      239,
3137		NumSymbols: 1,
3138		ReduceFunc: func(X []Attrib) (Attrib, error) {
3139			return dsl.NewASTNode(X[0], dsl.NodeTypeContextVariable)
3140		},
3141	},
3142	ProdTabEntry{
3143		String: `ContextVariable : ctx_FILENAME	<< dsl.NewASTNode(X[0], dsl.NodeTypeContextVariable) >>`,
3144		Id:         "ContextVariable",
3145		NTType:     66,
3146		Index:      240,
3147		NumSymbols: 1,
3148		ReduceFunc: func(X []Attrib) (Attrib, error) {
3149			return dsl.NewASTNode(X[0], dsl.NodeTypeContextVariable)
3150		},
3151	},
3152	ProdTabEntry{
3153		String: `ContextVariable : ctx_FILENUM	<< dsl.NewASTNode(X[0], dsl.NodeTypeContextVariable) >>`,
3154		Id:         "ContextVariable",
3155		NTType:     66,
3156		Index:      241,
3157		NumSymbols: 1,
3158		ReduceFunc: func(X []Attrib) (Attrib, error) {
3159			return dsl.NewASTNode(X[0], dsl.NodeTypeContextVariable)
3160		},
3161	},
3162	ProdTabEntry{
3163		String: `MlrvalOrFunction : ENV	<<  >>`,
3164		Id:         "MlrvalOrFunction",
3165		NTType:     60,
3166		Index:      242,
3167		NumSymbols: 1,
3168		ReduceFunc: func(X []Attrib) (Attrib, error) {
3169			return X[0], nil
3170		},
3171	},
3172	ProdTabEntry{
3173		String: `ENV : env "[" Rvalue "]"	<< dsl.NewASTNodeUnary(
3174      X[0],
3175      X[2],
3176      dsl.NodeTypeEnvironmentVariable,
3177    ) >>`,
3178		Id:         "ENV",
3179		NTType:     67,
3180		Index:      243,
3181		NumSymbols: 4,
3182		ReduceFunc: func(X []Attrib) (Attrib, error) {
3183			return dsl.NewASTNodeUnary(
3184				X[0],
3185				X[2],
3186				dsl.NodeTypeEnvironmentVariable,
3187			)
3188		},
3189	},
3190	ProdTabEntry{
3191		String: `MlrvalOrFunction : ArrayOrMapIndexAccess	<<  >>`,
3192		Id:         "MlrvalOrFunction",
3193		NTType:     60,
3194		Index:      244,
3195		NumSymbols: 1,
3196		ReduceFunc: func(X []Attrib) (Attrib, error) {
3197			return X[0], nil
3198		},
3199	},
3200	ProdTabEntry{
3201		String: `MlrvalOrFunction : ArrayOrMapPositionalNameAccess	<<  >>`,
3202		Id:         "MlrvalOrFunction",
3203		NTType:     60,
3204		Index:      245,
3205		NumSymbols: 1,
3206		ReduceFunc: func(X []Attrib) (Attrib, error) {
3207			return X[0], nil
3208		},
3209	},
3210	ProdTabEntry{
3211		String: `MlrvalOrFunction : ArrayOrMapPositionalValueAccess	<<  >>`,
3212		Id:         "MlrvalOrFunction",
3213		NTType:     60,
3214		Index:      246,
3215		NumSymbols: 1,
3216		ReduceFunc: func(X []Attrib) (Attrib, error) {
3217			return X[0], nil
3218		},
3219	},
3220	ProdTabEntry{
3221		String: `MlrvalOrFunction : ArraySliceAccess	<<  >>`,
3222		Id:         "MlrvalOrFunction",
3223		NTType:     60,
3224		Index:      247,
3225		NumSymbols: 1,
3226		ReduceFunc: func(X []Attrib) (Attrib, error) {
3227			return X[0], nil
3228		},
3229	},
3230	ProdTabEntry{
3231		String: `ArrayOrMapIndexAccess : MlrvalOrFunction "[" Rvalue "]"	<< dsl.NewASTNodeBinary(
3232      dsl.NewASTToken("[]", X[1]),
3233      X[0],
3234      X[2],
3235      dsl.NodeTypeArrayOrMapIndexAccess,
3236    ) >>`,
3237		Id:         "ArrayOrMapIndexAccess",
3238		NTType:     68,
3239		Index:      248,
3240		NumSymbols: 4,
3241		ReduceFunc: func(X []Attrib) (Attrib, error) {
3242			return dsl.NewASTNodeBinary(
3243				dsl.NewASTToken("[]", X[1]),
3244				X[0],
3245				X[2],
3246				dsl.NodeTypeArrayOrMapIndexAccess,
3247			)
3248		},
3249	},
3250	ProdTabEntry{
3251		String: `ArrayOrMapPositionalNameAccess : MlrvalOrFunction "[[" Rvalue "]" "]"	<< dsl.NewASTNodeBinary(
3252      dsl.NewASTToken("[]", X[1]),
3253      X[0],
3254      X[2],
3255      dsl.NodeTypeArrayOrMapPositionalNameAccess,
3256    ) >>`,
3257		Id:         "ArrayOrMapPositionalNameAccess",
3258		NTType:     69,
3259		Index:      249,
3260		NumSymbols: 5,
3261		ReduceFunc: func(X []Attrib) (Attrib, error) {
3262			return dsl.NewASTNodeBinary(
3263				dsl.NewASTToken("[]", X[1]),
3264				X[0],
3265				X[2],
3266				dsl.NodeTypeArrayOrMapPositionalNameAccess,
3267			)
3268		},
3269	},
3270	ProdTabEntry{
3271		String: `ArrayOrMapPositionalValueAccess : MlrvalOrFunction "[[[" Rvalue "]" "]" "]"	<< dsl.NewASTNodeBinary(
3272      dsl.NewASTToken("[]", X[1]),
3273      X[0],
3274      X[2],
3275      dsl.NodeTypeArrayOrMapPositionalValueAccess,
3276    ) >>`,
3277		Id:         "ArrayOrMapPositionalValueAccess",
3278		NTType:     70,
3279		Index:      250,
3280		NumSymbols: 6,
3281		ReduceFunc: func(X []Attrib) (Attrib, error) {
3282			return dsl.NewASTNodeBinary(
3283				dsl.NewASTToken("[]", X[1]),
3284				X[0],
3285				X[2],
3286				dsl.NodeTypeArrayOrMapPositionalValueAccess,
3287			)
3288		},
3289	},
3290	ProdTabEntry{
3291		String: `ArraySliceAccess : MlrvalOrFunction "[" Rvalue ":" Rvalue "]"	<< dsl.NewASTNodeTernary(
3292      dsl.NewASTToken("[]", X[1]),
3293      X[0],
3294      X[2],
3295      X[4],
3296      dsl.NodeTypeArraySliceAccess,
3297    ) >>`,
3298		Id:         "ArraySliceAccess",
3299		NTType:     71,
3300		Index:      251,
3301		NumSymbols: 6,
3302		ReduceFunc: func(X []Attrib) (Attrib, error) {
3303			return dsl.NewASTNodeTernary(
3304				dsl.NewASTToken("[]", X[1]),
3305				X[0],
3306				X[2],
3307				X[4],
3308				dsl.NodeTypeArraySliceAccess,
3309			)
3310		},
3311	},
3312	ProdTabEntry{
3313		String: `ArraySliceAccess : MlrvalOrFunction "[" ":" Rvalue "]"	<< dsl.NewASTNodeTernary(
3314      dsl.NewASTToken("[]", X[1]),
3315      X[0],
3316      dsl.NewASTNodeNestable(
3317        X[2],
3318        dsl.NodeTypeArraySliceEmptyLowerIndex,
3319      ),
3320      X[3],
3321      dsl.NodeTypeArraySliceAccess,
3322    ) >>`,
3323		Id:         "ArraySliceAccess",
3324		NTType:     71,
3325		Index:      252,
3326		NumSymbols: 5,
3327		ReduceFunc: func(X []Attrib) (Attrib, error) {
3328			return dsl.NewASTNodeTernary(
3329				dsl.NewASTToken("[]", X[1]),
3330				X[0],
3331				dsl.NewASTNodeNestable(
3332					X[2],
3333					dsl.NodeTypeArraySliceEmptyLowerIndex,
3334				),
3335				X[3],
3336				dsl.NodeTypeArraySliceAccess,
3337			)
3338		},
3339	},
3340	ProdTabEntry{
3341		String: `ArraySliceAccess : MlrvalOrFunction "[" Rvalue ":" "]"	<< dsl.NewASTNodeTernary(
3342      dsl.NewASTToken("[]", X[1]),
3343      X[0],
3344      X[2],
3345      dsl.NewASTNodeNestable(
3346        X[3],
3347        dsl.NodeTypeArraySliceEmptyUpperIndex,
3348      ),
3349      dsl.NodeTypeArraySliceAccess,
3350    ) >>`,
3351		Id:         "ArraySliceAccess",
3352		NTType:     71,
3353		Index:      253,
3354		NumSymbols: 5,
3355		ReduceFunc: func(X []Attrib) (Attrib, error) {
3356			return dsl.NewASTNodeTernary(
3357				dsl.NewASTToken("[]", X[1]),
3358				X[0],
3359				X[2],
3360				dsl.NewASTNodeNestable(
3361					X[3],
3362					dsl.NodeTypeArraySliceEmptyUpperIndex,
3363				),
3364				dsl.NodeTypeArraySliceAccess,
3365			)
3366		},
3367	},
3368	ProdTabEntry{
3369		String: `ArraySliceAccess : MlrvalOrFunction "[" ":" "]"	<< dsl.NewASTNodeTernary(
3370      dsl.NewASTToken("[]", X[1]),
3371      X[0],
3372      dsl.NewASTNodeNestable(
3373        X[2],
3374        dsl.NodeTypeArraySliceEmptyLowerIndex,
3375      ),
3376      dsl.NewASTNodeNestable(
3377        X[2],
3378        dsl.NodeTypeArraySliceEmptyUpperIndex,
3379      ),
3380      dsl.NodeTypeArraySliceAccess,
3381    ) >>`,
3382		Id:         "ArraySliceAccess",
3383		NTType:     71,
3384		Index:      254,
3385		NumSymbols: 4,
3386		ReduceFunc: func(X []Attrib) (Attrib, error) {
3387			return dsl.NewASTNodeTernary(
3388				dsl.NewASTToken("[]", X[1]),
3389				X[0],
3390				dsl.NewASTNodeNestable(
3391					X[2],
3392					dsl.NodeTypeArraySliceEmptyLowerIndex,
3393				),
3394				dsl.NewASTNodeNestable(
3395					X[2],
3396					dsl.NodeTypeArraySliceEmptyUpperIndex,
3397				),
3398				dsl.NodeTypeArraySliceAccess,
3399			)
3400		},
3401	},
3402	ProdTabEntry{
3403		String: `MlrvalOrFunction : FunctionCallsite	<<  >>`,
3404		Id:         "MlrvalOrFunction",
3405		NTType:     60,
3406		Index:      255,
3407		NumSymbols: 1,
3408		ReduceFunc: func(X []Attrib) (Attrib, error) {
3409			return X[0], nil
3410		},
3411	},
3412	ProdTabEntry{
3413		String: `FunctionCallsite : FunctionName "(" ")"	<< dsl.NewASTNodeZary(
3414      X[0],
3415      dsl.NodeTypeFunctionCallsite,
3416    ) >>`,
3417		Id:         "FunctionCallsite",
3418		NTType:     72,
3419		Index:      256,
3420		NumSymbols: 3,
3421		ReduceFunc: func(X []Attrib) (Attrib, error) {
3422			return dsl.NewASTNodeZary(
3423				X[0],
3424				dsl.NodeTypeFunctionCallsite,
3425			)
3426		},
3427	},
3428	ProdTabEntry{
3429		String: `FunctionCallsite : FunctionName "(" FcnArgs ")"	<< dsl.AdoptChildren(
3430        dsl.NewASTNodeNestable(
3431          X[0],
3432          dsl.NodeTypeFunctionCallsite,
3433        ),
3434        X[2],
3435      ) >>`,
3436		Id:         "FunctionCallsite",
3437		NTType:     72,
3438		Index:      257,
3439		NumSymbols: 4,
3440		ReduceFunc: func(X []Attrib) (Attrib, error) {
3441			return dsl.AdoptChildren(
3442				dsl.NewASTNodeNestable(
3443					X[0],
3444					dsl.NodeTypeFunctionCallsite,
3445				),
3446				X[2],
3447			)
3448		},
3449	},
3450	ProdTabEntry{
3451		String: `FunctionName : non_sigil_name	<<  >>`,
3452		Id:         "FunctionName",
3453		NTType:     73,
3454		Index:      258,
3455		NumSymbols: 1,
3456		ReduceFunc: func(X []Attrib) (Attrib, error) {
3457			return X[0], nil
3458		},
3459	},
3460	ProdTabEntry{
3461		String: `FunctionName : int	<<  >>`,
3462		Id:         "FunctionName",
3463		NTType:     73,
3464		Index:      259,
3465		NumSymbols: 1,
3466		ReduceFunc: func(X []Attrib) (Attrib, error) {
3467			return X[0], nil
3468		},
3469	},
3470	ProdTabEntry{
3471		String: `FunctionName : float	<<  >>`,
3472		Id:         "FunctionName",
3473		NTType:     73,
3474		Index:      260,
3475		NumSymbols: 1,
3476		ReduceFunc: func(X []Attrib) (Attrib, error) {
3477			return X[0], nil
3478		},
3479	},
3480	ProdTabEntry{
3481		String: `FcnArgs : Rvalue	<< dsl.NewASTNodeUnary(
3482      nil,
3483      X[0],
3484      dsl.NodeTypeFunctionCallsite,
3485    ) >>`,
3486		Id:         "FcnArgs",
3487		NTType:     74,
3488		Index:      261,
3489		NumSymbols: 1,
3490		ReduceFunc: func(X []Attrib) (Attrib, error) {
3491			return dsl.NewASTNodeUnary(
3492				nil,
3493				X[0],
3494				dsl.NodeTypeFunctionCallsite,
3495			)
3496		},
3497	},
3498	ProdTabEntry{
3499		String: `FcnArgs : Rvalue ","	<< dsl.NewASTNodeUnary(
3500      nil,
3501      X[0],
3502      dsl.NodeTypeFunctionCallsite,
3503    ) >>`,
3504		Id:         "FcnArgs",
3505		NTType:     74,
3506		Index:      262,
3507		NumSymbols: 2,
3508		ReduceFunc: func(X []Attrib) (Attrib, error) {
3509			return dsl.NewASTNodeUnary(
3510				nil,
3511				X[0],
3512				dsl.NodeTypeFunctionCallsite,
3513			)
3514		},
3515	},
3516	ProdTabEntry{
3517		String: `FcnArgs : Rvalue "," FcnArgs	<< dsl.PrependChild(
3518      X[2],
3519      X[0],
3520    ) >>`,
3521		Id:         "FcnArgs",
3522		NTType:     74,
3523		Index:      263,
3524		NumSymbols: 3,
3525		ReduceFunc: func(X []Attrib) (Attrib, error) {
3526			return dsl.PrependChild(
3527				X[2],
3528				X[0],
3529			)
3530		},
3531	},
3532	ProdTabEntry{
3533		String: `SubroutineCallsite : call SubroutineName "(" ")"	<< dsl.NewASTNodeZary(
3534      X[1],
3535      dsl.NodeTypeSubroutineCallsite,
3536    ) >>`,
3537		Id:         "SubroutineCallsite",
3538		NTType:     75,
3539		Index:      264,
3540		NumSymbols: 4,
3541		ReduceFunc: func(X []Attrib) (Attrib, error) {
3542			return dsl.NewASTNodeZary(
3543				X[1],
3544				dsl.NodeTypeSubroutineCallsite,
3545			)
3546		},
3547	},
3548	ProdTabEntry{
3549		String: `SubroutineCallsite : call SubroutineName "(" FcnArgs ")"	<< dsl.AdoptChildren(
3550        dsl.NewASTNodeNestable(
3551          X[1],
3552          dsl.NodeTypeSubroutineCallsite,
3553        ),
3554        X[3],
3555      ) >>`,
3556		Id:         "SubroutineCallsite",
3557		NTType:     75,
3558		Index:      265,
3559		NumSymbols: 5,
3560		ReduceFunc: func(X []Attrib) (Attrib, error) {
3561			return dsl.AdoptChildren(
3562				dsl.NewASTNodeNestable(
3563					X[1],
3564					dsl.NodeTypeSubroutineCallsite,
3565				),
3566				X[3],
3567			)
3568		},
3569	},
3570	ProdTabEntry{
3571		String: `SubroutineName : non_sigil_name	<<  >>`,
3572		Id:         "SubroutineName",
3573		NTType:     76,
3574		Index:      266,
3575		NumSymbols: 1,
3576		ReduceFunc: func(X []Attrib) (Attrib, error) {
3577			return X[0], nil
3578		},
3579	},
3580	ProdTabEntry{
3581		String: `BracefulStatement : BeginBlock	<<  >>`,
3582		Id:         "BracefulStatement",
3583		NTType:     77,
3584		Index:      267,
3585		NumSymbols: 1,
3586		ReduceFunc: func(X []Attrib) (Attrib, error) {
3587			return X[0], nil
3588		},
3589	},
3590	ProdTabEntry{
3591		String: `BracefulStatement : EndBlock	<<  >>`,
3592		Id:         "BracefulStatement",
3593		NTType:     77,
3594		Index:      268,
3595		NumSymbols: 1,
3596		ReduceFunc: func(X []Attrib) (Attrib, error) {
3597			return X[0], nil
3598		},
3599	},
3600	ProdTabEntry{
3601		String: `BracefulStatement : CondBlock	<<  >>`,
3602		Id:         "BracefulStatement",
3603		NTType:     77,
3604		Index:      269,
3605		NumSymbols: 1,
3606		ReduceFunc: func(X []Attrib) (Attrib, error) {
3607			return X[0], nil
3608		},
3609	},
3610	ProdTabEntry{
3611		String: `BracefulStatement : IfChain	<<  >>`,
3612		Id:         "BracefulStatement",
3613		NTType:     77,
3614		Index:      270,
3615		NumSymbols: 1,
3616		ReduceFunc: func(X []Attrib) (Attrib, error) {
3617			return X[0], nil
3618		},
3619	},
3620	ProdTabEntry{
3621		String: `BracefulStatement : WhileLoop	<<  >>`,
3622		Id:         "BracefulStatement",
3623		NTType:     77,
3624		Index:      271,
3625		NumSymbols: 1,
3626		ReduceFunc: func(X []Attrib) (Attrib, error) {
3627			return X[0], nil
3628		},
3629	},
3630	ProdTabEntry{
3631		String: `BracefulStatement : ForLoop	<<  >>`,
3632		Id:         "BracefulStatement",
3633		NTType:     77,
3634		Index:      272,
3635		NumSymbols: 1,
3636		ReduceFunc: func(X []Attrib) (Attrib, error) {
3637			return X[0], nil
3638		},
3639	},
3640	ProdTabEntry{
3641		String: `BracefulStatement : FunctionDefinition	<<  >>`,
3642		Id:         "BracefulStatement",
3643		NTType:     77,
3644		Index:      273,
3645		NumSymbols: 1,
3646		ReduceFunc: func(X []Attrib) (Attrib, error) {
3647			return X[0], nil
3648		},
3649	},
3650	ProdTabEntry{
3651		String: `BracefulStatement : SubroutineDefinition	<<  >>`,
3652		Id:         "BracefulStatement",
3653		NTType:     77,
3654		Index:      274,
3655		NumSymbols: 1,
3656		ReduceFunc: func(X []Attrib) (Attrib, error) {
3657			return X[0], nil
3658		},
3659	},
3660	ProdTabEntry{
3661		String: `BeginBlock : begin StatementBlockInBraces	<< dsl.NewASTNodeUnary(nil, X[1], dsl.NodeTypeBeginBlock) >>`,
3662		Id:         "BeginBlock",
3663		NTType:     78,
3664		Index:      275,
3665		NumSymbols: 2,
3666		ReduceFunc: func(X []Attrib) (Attrib, error) {
3667			return dsl.NewASTNodeUnary(nil, X[1], dsl.NodeTypeBeginBlock)
3668		},
3669	},
3670	ProdTabEntry{
3671		String: `EndBlock : end StatementBlockInBraces	<< dsl.NewASTNodeUnary(nil, X[1], dsl.NodeTypeEndBlock) >>`,
3672		Id:         "EndBlock",
3673		NTType:     79,
3674		Index:      276,
3675		NumSymbols: 2,
3676		ReduceFunc: func(X []Attrib) (Attrib, error) {
3677			return dsl.NewASTNodeUnary(nil, X[1], dsl.NodeTypeEndBlock)
3678		},
3679	},
3680	ProdTabEntry{
3681		String: `CondBlock : Rvalue StatementBlockInBraces	<< dsl.NewASTNodeBinary(nil, X[0], X[1], dsl.NodeTypeCondBlock) >>`,
3682		Id:         "CondBlock",
3683		NTType:     80,
3684		Index:      277,
3685		NumSymbols: 2,
3686		ReduceFunc: func(X []Attrib) (Attrib, error) {
3687			return dsl.NewASTNodeBinary(nil, X[0], X[1], dsl.NodeTypeCondBlock)
3688		},
3689	},
3690	ProdTabEntry{
3691		String: `IfChain : IfElifStar	<<  >>`,
3692		Id:         "IfChain",
3693		NTType:     81,
3694		Index:      278,
3695		NumSymbols: 1,
3696		ReduceFunc: func(X []Attrib) (Attrib, error) {
3697			return X[0], nil
3698		},
3699	},
3700	ProdTabEntry{
3701		String: `IfChain : IfElifStar ElseBlock	<< dsl.AppendChild(X[0], X[1]) >>`,
3702		Id:         "IfChain",
3703		NTType:     81,
3704		Index:      279,
3705		NumSymbols: 2,
3706		ReduceFunc: func(X []Attrib) (Attrib, error) {
3707			return dsl.AppendChild(X[0], X[1])
3708		},
3709	},
3710	ProdTabEntry{
3711		String: `IfElifStar : IfBlock	<< dsl.NewASTNodeUnary(nil, X[0], dsl.NodeTypeIfChain) >>`,
3712		Id:         "IfElifStar",
3713		NTType:     82,
3714		Index:      280,
3715		NumSymbols: 1,
3716		ReduceFunc: func(X []Attrib) (Attrib, error) {
3717			return dsl.NewASTNodeUnary(nil, X[0], dsl.NodeTypeIfChain)
3718		},
3719	},
3720	ProdTabEntry{
3721		String: `IfElifStar : IfElifStar ElifBlock	<< dsl.AppendChild(X[0], X[1]) >>`,
3722		Id:         "IfElifStar",
3723		NTType:     82,
3724		Index:      281,
3725		NumSymbols: 2,
3726		ReduceFunc: func(X []Attrib) (Attrib, error) {
3727			return dsl.AppendChild(X[0], X[1])
3728		},
3729	},
3730	ProdTabEntry{
3731		String: `IfBlock : if "(" Rvalue ")" StatementBlockInBraces	<< dsl.NewASTNodeBinary(X[0], X[2], X[4], dsl.NodeTypeIfItem) >>`,
3732		Id:         "IfBlock",
3733		NTType:     83,
3734		Index:      282,
3735		NumSymbols: 5,
3736		ReduceFunc: func(X []Attrib) (Attrib, error) {
3737			return dsl.NewASTNodeBinary(X[0], X[2], X[4], dsl.NodeTypeIfItem)
3738		},
3739	},
3740	ProdTabEntry{
3741		String: `ElifBlock : elif "(" Rvalue ")" StatementBlockInBraces	<< dsl.NewASTNodeBinary(X[0], X[2], X[4], dsl.NodeTypeIfItem) >>`,
3742		Id:         "ElifBlock",
3743		NTType:     84,
3744		Index:      283,
3745		NumSymbols: 5,
3746		ReduceFunc: func(X []Attrib) (Attrib, error) {
3747			return dsl.NewASTNodeBinary(X[0], X[2], X[4], dsl.NodeTypeIfItem)
3748		},
3749	},
3750	ProdTabEntry{
3751		String: `ElseBlock : else StatementBlockInBraces	<< dsl.NewASTNodeUnary(X[0], X[1], dsl.NodeTypeIfItem) >>`,
3752		Id:         "ElseBlock",
3753		NTType:     85,
3754		Index:      284,
3755		NumSymbols: 2,
3756		ReduceFunc: func(X []Attrib) (Attrib, error) {
3757			return dsl.NewASTNodeUnary(X[0], X[1], dsl.NodeTypeIfItem)
3758		},
3759	},
3760	ProdTabEntry{
3761		String: `WhileLoop : while "(" Rvalue ")" StatementBlockInBraces	<< dsl.NewASTNodeBinary(X[0], X[2], X[4], dsl.NodeTypeWhileLoop) >>`,
3762		Id:         "WhileLoop",
3763		NTType:     86,
3764		Index:      285,
3765		NumSymbols: 5,
3766		ReduceFunc: func(X []Attrib) (Attrib, error) {
3767			return dsl.NewASTNodeBinary(X[0], X[2], X[4], dsl.NodeTypeWhileLoop)
3768		},
3769	},
3770	ProdTabEntry{
3771		String: `DoWhileLoop : do StatementBlockInBraces while "(" Rvalue ")"	<< dsl.NewASTNodeBinary(X[0], X[1], X[4], dsl.NodeTypeDoWhileLoop) >>`,
3772		Id:         "DoWhileLoop",
3773		NTType:     87,
3774		Index:      286,
3775		NumSymbols: 6,
3776		ReduceFunc: func(X []Attrib) (Attrib, error) {
3777			return dsl.NewASTNodeBinary(X[0], X[1], X[4], dsl.NodeTypeDoWhileLoop)
3778		},
3779	},
3780	ProdTabEntry{
3781		String: `ForLoop : ForLoopOneVariable	<<  >>`,
3782		Id:         "ForLoop",
3783		NTType:     88,
3784		Index:      287,
3785		NumSymbols: 1,
3786		ReduceFunc: func(X []Attrib) (Attrib, error) {
3787			return X[0], nil
3788		},
3789	},
3790	ProdTabEntry{
3791		String: `ForLoop : ForLoopTwoVariable	<<  >>`,
3792		Id:         "ForLoop",
3793		NTType:     88,
3794		Index:      288,
3795		NumSymbols: 1,
3796		ReduceFunc: func(X []Attrib) (Attrib, error) {
3797			return X[0], nil
3798		},
3799	},
3800	ProdTabEntry{
3801		String: `ForLoop : ForLoopMultivariable	<<  >>`,
3802		Id:         "ForLoop",
3803		NTType:     88,
3804		Index:      289,
3805		NumSymbols: 1,
3806		ReduceFunc: func(X []Attrib) (Attrib, error) {
3807			return X[0], nil
3808		},
3809	},
3810	ProdTabEntry{
3811		String: `ForLoop : TripleForLoop	<<  >>`,
3812		Id:         "ForLoop",
3813		NTType:     88,
3814		Index:      290,
3815		NumSymbols: 1,
3816		ReduceFunc: func(X []Attrib) (Attrib, error) {
3817			return X[0], nil
3818		},
3819	},
3820	ProdTabEntry{
3821		String: `ForLoopOneVariable : for "(" LocalVariable in Rvalue ")" StatementBlockInBraces	<< dsl.NewASTNodeTernary(
3822     X[0], // "for"
3823     X[2], // k, etc.
3824     X[4], // $*, etc.
3825     X[6], // { ... }
3826     dsl.NodeTypeForLoopOneVariable,
3827   ); >>`,
3828		Id:         "ForLoopOneVariable",
3829		NTType:     89,
3830		Index:      291,
3831		NumSymbols: 7,
3832		ReduceFunc: func(X []Attrib) (Attrib, error) {
3833			return dsl.NewASTNodeTernary(
3834				X[0], // "for"
3835				X[2], // k, etc.
3836				X[4], // $*, etc.
3837				X[6], // { ... }
3838				dsl.NodeTypeForLoopOneVariable,
3839			)
3840		},
3841	},
3842	ProdTabEntry{
3843		String: `ForLoopTwoVariable : for "(" LocalVariable "," LocalVariable in Rvalue ")" StatementBlockInBraces	<< dsl.NewASTNodeQuaternary(
3844     X[0], // "for"
3845     X[2], // k, etc.
3846     X[4], // v, etc.
3847     X[6], // $*, etc.
3848     X[8], // { ... }
3849     dsl.NodeTypeForLoopTwoVariable,
3850   ); >>`,
3851		Id:         "ForLoopTwoVariable",
3852		NTType:     90,
3853		Index:      292,
3854		NumSymbols: 9,
3855		ReduceFunc: func(X []Attrib) (Attrib, error) {
3856			return dsl.NewASTNodeQuaternary(
3857				X[0], // "for"
3858				X[2], // k, etc.
3859				X[4], // v, etc.
3860				X[6], // $*, etc.
3861				X[8], // { ... }
3862				dsl.NodeTypeForLoopTwoVariable,
3863			)
3864		},
3865	},
3866	ProdTabEntry{
3867		String: `ForLoopMultivariable : for "(" "(" MultiIndex ")" "," LocalVariable in Rvalue ")" StatementBlockInBraces	<< dsl.NewASTNodeQuaternary(
3868     X[0], // "for"
3869     X[3], // (k1, k2), etc.
3870     X[6], // v, etc.
3871     X[8], // $*, etc.
3872     X[10], // { ... }
3873     dsl.NodeTypeForLoopMultivariable,
3874   ); >>`,
3875		Id:         "ForLoopMultivariable",
3876		NTType:     91,
3877		Index:      293,
3878		NumSymbols: 11,
3879		ReduceFunc: func(X []Attrib) (Attrib, error) {
3880			return dsl.NewASTNodeQuaternary(
3881				X[0],  // "for"
3882				X[3],  // (k1, k2), etc.
3883				X[6],  // v, etc.
3884				X[8],  // $*, etc.
3885				X[10], // { ... }
3886				dsl.NodeTypeForLoopMultivariable,
3887			)
3888		},
3889	},
3890	ProdTabEntry{
3891		String: `MultiIndex : LocalVariable "," LocalVariable	<< dsl.NewASTNodeBinary(
3892      nil,
3893      X[0],
3894      X[2],
3895      dsl.NodeTypeParameterList,
3896    ) >>`,
3897		Id:         "MultiIndex",
3898		NTType:     92,
3899		Index:      294,
3900		NumSymbols: 3,
3901		ReduceFunc: func(X []Attrib) (Attrib, error) {
3902			return dsl.NewASTNodeBinary(
3903				nil,
3904				X[0],
3905				X[2],
3906				dsl.NodeTypeParameterList,
3907			)
3908		},
3909	},
3910	ProdTabEntry{
3911		String: `MultiIndex : MultiIndex "," LocalVariable	<< dsl.AppendChild(
3912      X[0],
3913      X[2],
3914    ) >>`,
3915		Id:         "MultiIndex",
3916		NTType:     92,
3917		Index:      295,
3918		NumSymbols: 3,
3919		ReduceFunc: func(X []Attrib) (Attrib, error) {
3920			return dsl.AppendChild(
3921				X[0],
3922				X[2],
3923			)
3924		},
3925	},
3926	ProdTabEntry{
3927		String: `TripleForLoop : for "(" TripleForStart ";" TripleForContinuation ";" TripleForUpdate ")" StatementBlockInBraces	<< dsl.NewASTNodeQuaternary(
3928     X[0], // for
3929     X[2], // start
3930     X[4], // continuation
3931     X[6], // update
3932     X[8], // body
3933     dsl.NodeTypeTripleForLoop,
3934   ); >>`,
3935		Id:         "TripleForLoop",
3936		NTType:     93,
3937		Index:      296,
3938		NumSymbols: 9,
3939		ReduceFunc: func(X []Attrib) (Attrib, error) {
3940			return dsl.NewASTNodeQuaternary(
3941				X[0], // for
3942				X[2], // start
3943				X[4], // continuation
3944				X[6], // update
3945				X[8], // body
3946				dsl.NodeTypeTripleForLoop,
3947			)
3948		},
3949	},
3950	ProdTabEntry{
3951		String: `TripleForStart : empty	<< dsl.NewASTNodeZary(nil, dsl.NodeTypeStatementBlock) >>`,
3952		Id:         "TripleForStart",
3953		NTType:     94,
3954		Index:      297,
3955		NumSymbols: 0,
3956		ReduceFunc: func(X []Attrib) (Attrib, error) {
3957			return dsl.NewASTNodeZary(nil, dsl.NodeTypeStatementBlock)
3958		},
3959	},
3960	ProdTabEntry{
3961		String: `TripleForStart : Assignment	<< dsl.NewASTNodeUnary(nil, X[0], dsl.NodeTypeStatementBlock) >>`,
3962		Id:         "TripleForStart",
3963		NTType:     94,
3964		Index:      298,
3965		NumSymbols: 1,
3966		ReduceFunc: func(X []Attrib) (Attrib, error) {
3967			return dsl.NewASTNodeUnary(nil, X[0], dsl.NodeTypeStatementBlock)
3968		},
3969	},
3970	ProdTabEntry{
3971		String: `TripleForStart : TripleForStart "," Assignment	<< dsl.AppendChild(X[0], X[2]) >>`,
3972		Id:         "TripleForStart",
3973		NTType:     94,
3974		Index:      299,
3975		NumSymbols: 3,
3976		ReduceFunc: func(X []Attrib) (Attrib, error) {
3977			return dsl.AppendChild(X[0], X[2])
3978		},
3979	},
3980	ProdTabEntry{
3981		String: `TripleForContinuation : empty	<< dsl.NewASTNodeZary(nil, dsl.NodeTypeStatementBlock) >>`,
3982		Id:         "TripleForContinuation",
3983		NTType:     95,
3984		Index:      300,
3985		NumSymbols: 0,
3986		ReduceFunc: func(X []Attrib) (Attrib, error) {
3987			return dsl.NewASTNodeZary(nil, dsl.NodeTypeStatementBlock)
3988		},
3989	},
3990	ProdTabEntry{
3991		String: `TripleForContinuation : TripleForContinuationItem	<< dsl.NewASTNodeUnary(nil, X[0], dsl.NodeTypeStatementBlock) >>`,
3992		Id:         "TripleForContinuation",
3993		NTType:     95,
3994		Index:      301,
3995		NumSymbols: 1,
3996		ReduceFunc: func(X []Attrib) (Attrib, error) {
3997			return dsl.NewASTNodeUnary(nil, X[0], dsl.NodeTypeStatementBlock)
3998		},
3999	},
4000	ProdTabEntry{
4001		String: `TripleForContinuation : TripleForContinuation "," TripleForContinuationItem	<< dsl.AppendChild(X[0], X[2]) >>`,
4002		Id:         "TripleForContinuation",
4003		NTType:     95,
4004		Index:      302,
4005		NumSymbols: 3,
4006		ReduceFunc: func(X []Attrib) (Attrib, error) {
4007			return dsl.AppendChild(X[0], X[2])
4008		},
4009	},
4010	ProdTabEntry{
4011		String: `TripleForContinuationItem : Assignment	<<  >>`,
4012		Id:         "TripleForContinuationItem",
4013		NTType:     96,
4014		Index:      303,
4015		NumSymbols: 1,
4016		ReduceFunc: func(X []Attrib) (Attrib, error) {
4017			return X[0], nil
4018		},
4019	},
4020	ProdTabEntry{
4021		String: `TripleForContinuationItem : BareBoolean	<<  >>`,
4022		Id:         "TripleForContinuationItem",
4023		NTType:     96,
4024		Index:      304,
4025		NumSymbols: 1,
4026		ReduceFunc: func(X []Attrib) (Attrib, error) {
4027			return X[0], nil
4028		},
4029	},
4030	ProdTabEntry{
4031		String: `TripleForUpdate : empty	<< dsl.NewASTNodeZary(nil, dsl.NodeTypeStatementBlock) >>`,
4032		Id:         "TripleForUpdate",
4033		NTType:     97,
4034		Index:      305,
4035		NumSymbols: 0,
4036		ReduceFunc: func(X []Attrib) (Attrib, error) {
4037			return dsl.NewASTNodeZary(nil, dsl.NodeTypeStatementBlock)
4038		},
4039	},
4040	ProdTabEntry{
4041		String: `TripleForUpdate : Assignment	<< dsl.NewASTNodeUnary(nil, X[0], dsl.NodeTypeStatementBlock) >>`,
4042		Id:         "TripleForUpdate",
4043		NTType:     97,
4044		Index:      306,
4045		NumSymbols: 1,
4046		ReduceFunc: func(X []Attrib) (Attrib, error) {
4047			return dsl.NewASTNodeUnary(nil, X[0], dsl.NodeTypeStatementBlock)
4048		},
4049	},
4050	ProdTabEntry{
4051		String: `TripleForUpdate : TripleForUpdate "," Assignment	<< dsl.AppendChild(X[0], X[2]) >>`,
4052		Id:         "TripleForUpdate",
4053		NTType:     97,
4054		Index:      307,
4055		NumSymbols: 3,
4056		ReduceFunc: func(X []Attrib) (Attrib, error) {
4057			return dsl.AppendChild(X[0], X[2])
4058		},
4059	},
4060	ProdTabEntry{
4061		String: `BreakStatement : break	<< dsl.NewASTNodeZary(X[0], dsl.NodeTypeBreak) >>`,
4062		Id:         "BreakStatement",
4063		NTType:     98,
4064		Index:      308,
4065		NumSymbols: 1,
4066		ReduceFunc: func(X []Attrib) (Attrib, error) {
4067			return dsl.NewASTNodeZary(X[0], dsl.NodeTypeBreak)
4068		},
4069	},
4070	ProdTabEntry{
4071		String: `ContinueStatement : continue	<< dsl.NewASTNodeZary(X[0], dsl.NodeTypeContinue) >>`,
4072		Id:         "ContinueStatement",
4073		NTType:     99,
4074		Index:      309,
4075		NumSymbols: 1,
4076		ReduceFunc: func(X []Attrib) (Attrib, error) {
4077			return dsl.NewASTNodeZary(X[0], dsl.NodeTypeContinue)
4078		},
4079	},
4080	ProdTabEntry{
4081		String: `FunctionDefinition : func non_sigil_name "(" FuncOrSubrParameterList ")" StatementBlockInBraces	<< dsl.NewASTNodeBinary(
4082      X[1],
4083      X[3], // parameter list
4084      X[5], // { ... }
4085      dsl.NodeTypeFunctionDefinition,
4086    ); >>`,
4087		Id:         "FunctionDefinition",
4088		NTType:     100,
4089		Index:      310,
4090		NumSymbols: 6,
4091		ReduceFunc: func(X []Attrib) (Attrib, error) {
4092			return dsl.NewASTNodeBinary(
4093				X[1],
4094				X[3], // parameter list
4095				X[5], // { ... }
4096				dsl.NodeTypeFunctionDefinition,
4097			)
4098		},
4099	},
4100	ProdTabEntry{
4101		String: `FunctionDefinition : func non_sigil_name "(" FuncOrSubrParameterList ")" ":" Typedecl StatementBlockInBraces	<< dsl.NewASTNodeTernary(
4102      X[1],
4103      X[3], // parameter list
4104      X[7], // {...}
4105      X[6], // return type
4106      dsl.NodeTypeFunctionDefinition,
4107    ); >>`,
4108		Id:         "FunctionDefinition",
4109		NTType:     100,
4110		Index:      311,
4111		NumSymbols: 8,
4112		ReduceFunc: func(X []Attrib) (Attrib, error) {
4113			return dsl.NewASTNodeTernary(
4114				X[1],
4115				X[3], // parameter list
4116				X[7], // {...}
4117				X[6], // return type
4118				dsl.NodeTypeFunctionDefinition,
4119			)
4120		},
4121	},
4122	ProdTabEntry{
4123		String: `SubroutineDefinition : subr non_sigil_name "(" FuncOrSubrParameterList ")" StatementBlockInBraces	<< dsl.NewASTNodeBinary(
4124      X[1],
4125      X[3], // parameter list
4126      X[5], // { ... }
4127      dsl.NodeTypeSubroutineDefinition,
4128    ); >>`,
4129		Id:         "SubroutineDefinition",
4130		NTType:     101,
4131		Index:      312,
4132		NumSymbols: 6,
4133		ReduceFunc: func(X []Attrib) (Attrib, error) {
4134			return dsl.NewASTNodeBinary(
4135				X[1],
4136				X[3], // parameter list
4137				X[5], // { ... }
4138				dsl.NodeTypeSubroutineDefinition,
4139			)
4140		},
4141	},
4142	ProdTabEntry{
4143		String: `FuncOrSubrParameterList : empty	<< dsl.NewASTNodeZary(nil, dsl.NodeTypeParameterList) >>`,
4144		Id:         "FuncOrSubrParameterList",
4145		NTType:     102,
4146		Index:      313,
4147		NumSymbols: 0,
4148		ReduceFunc: func(X []Attrib) (Attrib, error) {
4149			return dsl.NewASTNodeZary(nil, dsl.NodeTypeParameterList)
4150		},
4151	},
4152	ProdTabEntry{
4153		String: `FuncOrSubrParameterList : FuncOrSubrNonEmptyParameterList	<< dsl.Wrap(X[0]) >>`,
4154		Id:         "FuncOrSubrParameterList",
4155		NTType:     102,
4156		Index:      314,
4157		NumSymbols: 1,
4158		ReduceFunc: func(X []Attrib) (Attrib, error) {
4159			return dsl.Wrap(X[0])
4160		},
4161	},
4162	ProdTabEntry{
4163		String: `FuncOrSubrNonEmptyParameterList : FuncOrSubrParameter	<< dsl.NewASTNodeUnary(nil, X[0], dsl.NodeTypeParameterList) >>`,
4164		Id:         "FuncOrSubrNonEmptyParameterList",
4165		NTType:     103,
4166		Index:      315,
4167		NumSymbols: 1,
4168		ReduceFunc: func(X []Attrib) (Attrib, error) {
4169			return dsl.NewASTNodeUnary(nil, X[0], dsl.NodeTypeParameterList)
4170		},
4171	},
4172	ProdTabEntry{
4173		String: `FuncOrSubrNonEmptyParameterList : FuncOrSubrParameter ","	<< dsl.NewASTNodeUnary(nil, X[0], dsl.NodeTypeParameterList) >>`,
4174		Id:         "FuncOrSubrNonEmptyParameterList",
4175		NTType:     103,
4176		Index:      316,
4177		NumSymbols: 2,
4178		ReduceFunc: func(X []Attrib) (Attrib, error) {
4179			return dsl.NewASTNodeUnary(nil, X[0], dsl.NodeTypeParameterList)
4180		},
4181	},
4182	ProdTabEntry{
4183		String: `FuncOrSubrNonEmptyParameterList : FuncOrSubrParameter "," FuncOrSubrNonEmptyParameterList	<< dsl.PrependChild(X[2], X[0]) >>`,
4184		Id:         "FuncOrSubrNonEmptyParameterList",
4185		NTType:     103,
4186		Index:      317,
4187		NumSymbols: 3,
4188		ReduceFunc: func(X []Attrib) (Attrib, error) {
4189			return dsl.PrependChild(X[2], X[0])
4190		},
4191	},
4192	ProdTabEntry{
4193		String: `FuncOrSubrParameter : UntypedFuncOrSubrParameterName	<< dsl.NewASTNodeUnary(
4194      nil,
4195      X[0],
4196      dsl.NodeTypeParameter,
4197    ) >>`,
4198		Id:         "FuncOrSubrParameter",
4199		NTType:     104,
4200		Index:      318,
4201		NumSymbols: 1,
4202		ReduceFunc: func(X []Attrib) (Attrib, error) {
4203			return dsl.NewASTNodeUnary(
4204				nil,
4205				X[0],
4206				dsl.NodeTypeParameter,
4207			)
4208		},
4209	},
4210	ProdTabEntry{
4211		String: `FuncOrSubrParameter : TypedFuncOrSubrParameterName	<< dsl.NewASTNodeUnary(
4212      nil,
4213      X[0],
4214      dsl.NodeTypeParameter,
4215    ) >>`,
4216		Id:         "FuncOrSubrParameter",
4217		NTType:     104,
4218		Index:      319,
4219		NumSymbols: 1,
4220		ReduceFunc: func(X []Attrib) (Attrib, error) {
4221			return dsl.NewASTNodeUnary(
4222				nil,
4223				X[0],
4224				dsl.NodeTypeParameter,
4225			)
4226		},
4227	},
4228	ProdTabEntry{
4229		String: `UntypedFuncOrSubrParameterName : non_sigil_name	<< dsl.NewASTNode(X[0], dsl.NodeTypeParameterName) >>`,
4230		Id:         "UntypedFuncOrSubrParameterName",
4231		NTType:     105,
4232		Index:      320,
4233		NumSymbols: 1,
4234		ReduceFunc: func(X []Attrib) (Attrib, error) {
4235			return dsl.NewASTNode(X[0], dsl.NodeTypeParameterName)
4236		},
4237	},
4238	ProdTabEntry{
4239		String: `TypedFuncOrSubrParameterName : Typedecl UntypedFuncOrSubrParameterName	<< dsl.AppendChild(X[1], X[0]) >>`,
4240		Id:         "TypedFuncOrSubrParameterName",
4241		NTType:     106,
4242		Index:      321,
4243		NumSymbols: 2,
4244		ReduceFunc: func(X []Attrib) (Attrib, error) {
4245			return dsl.AppendChild(X[1], X[0])
4246		},
4247	},
4248	ProdTabEntry{
4249		String: `ReturnStatement : return Rvalue	<< dsl.NewASTNodeUnary(X[0], X[1], dsl.NodeTypeReturn) >>`,
4250		Id:         "ReturnStatement",
4251		NTType:     107,
4252		Index:      322,
4253		NumSymbols: 2,
4254		ReduceFunc: func(X []Attrib) (Attrib, error) {
4255			return dsl.NewASTNodeUnary(X[0], X[1], dsl.NodeTypeReturn)
4256		},
4257	},
4258	ProdTabEntry{
4259		String: `ReturnStatement : return	<< dsl.NewASTNodeZary(X[0], dsl.NodeTypeReturn) >>`,
4260		Id:         "ReturnStatement",
4261		NTType:     107,
4262		Index:      323,
4263		NumSymbols: 1,
4264		ReduceFunc: func(X []Attrib) (Attrib, error) {
4265			return dsl.NewASTNodeZary(X[0], dsl.NodeTypeReturn)
4266		},
4267	},
4268}
4269