// Code generated by gocc; DO NOT EDIT. package parser import "github.com/johnkerl/miller/v6/pkg/dsl" type ( ProdTab [numProductions]ProdTabEntry ProdTabEntry struct { String string Id string NTType int Index int NumSymbols int ReduceFunc func([]Attrib, interface{}) (Attrib, error) } Attrib interface { } ) var productionsTable = ProdTab{ ProdTabEntry{ String: `S' : Root << >>`, Id: "S'", NTType: 0, Index: 0, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `Root : StatementBlock << dsl.NewAST(X[0]) >>`, Id: "Root", NTType: 1, Index: 1, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewAST(X[0]) }, }, ProdTabEntry{ String: `StatementBlock : empty << dsl.NewASTNodeZary(nil, dsl.NodeTypeStatementBlock) >>`, Id: "StatementBlock", NTType: 2, Index: 2, NumSymbols: 0, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeZary(nil, dsl.NodeTypeStatementBlock) }, }, ProdTabEntry{ String: `StatementBlock : NonEmptyStatementBlock << dsl.Wrap(X[0]) >>`, Id: "StatementBlock", NTType: 2, Index: 3, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.Wrap(X[0]) }, }, ProdTabEntry{ String: `NonEmptyStatementBlock : BracelessStatement << dsl.NewASTNodeUnary(nil, X[0], dsl.NodeTypeStatementBlock) >>`, Id: "NonEmptyStatementBlock", NTType: 3, Index: 4, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeUnary(nil, X[0], dsl.NodeTypeStatementBlock) }, }, ProdTabEntry{ String: `NonEmptyStatementBlock : BracefulStatement << dsl.NewASTNodeUnary(nil, X[0], dsl.NodeTypeStatementBlock) >>`, Id: "NonEmptyStatementBlock", NTType: 3, Index: 5, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeUnary(nil, X[0], dsl.NodeTypeStatementBlock) }, }, ProdTabEntry{ String: `NonEmptyStatementBlock : ";" StatementBlock << dsl.Wrap(X[1]) >>`, Id: "NonEmptyStatementBlock", NTType: 3, Index: 6, NumSymbols: 2, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.Wrap(X[1]) }, }, ProdTabEntry{ String: `NonEmptyStatementBlock : BracelessStatement ";" StatementBlock << dsl.PrependChild(X[2], X[0]) >>`, Id: "NonEmptyStatementBlock", NTType: 3, Index: 7, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.PrependChild(X[2], X[0]) }, }, ProdTabEntry{ String: `NonEmptyStatementBlock : BracefulStatement ";" StatementBlock << dsl.PrependChild(X[2], X[0]) >>`, Id: "NonEmptyStatementBlock", NTType: 3, Index: 8, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.PrependChild(X[2], X[0]) }, }, ProdTabEntry{ String: `NonEmptyStatementBlock : BracefulStatement BracefulStatement StatementBlock << dsl.PrependTwoChildren(X[2], X[0], X[1]) >>`, Id: "NonEmptyStatementBlock", NTType: 3, Index: 9, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.PrependTwoChildren(X[2], X[0], X[1]) }, }, ProdTabEntry{ String: `NonEmptyStatementBlock : BracefulStatement BracelessStatement << dsl.NewASTNodeBinary(nil, X[0], X[1], dsl.NodeTypeStatementBlock) >>`, Id: "NonEmptyStatementBlock", NTType: 3, Index: 10, NumSymbols: 2, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary(nil, X[0], X[1], dsl.NodeTypeStatementBlock) }, }, ProdTabEntry{ String: `NonEmptyStatementBlock : BracefulStatement BracelessStatement ";" << dsl.NewASTNodeBinary(nil, X[0], X[1], dsl.NodeTypeStatementBlock) >>`, Id: "NonEmptyStatementBlock", NTType: 3, Index: 11, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary(nil, X[0], X[1], dsl.NodeTypeStatementBlock) }, }, ProdTabEntry{ String: `NonEmptyStatementBlock : BracefulStatement BracelessStatement ";" NonEmptyStatementBlock << dsl.PrependTwoChildren(X[3], X[0], X[1]) >>`, Id: "NonEmptyStatementBlock", NTType: 3, Index: 12, NumSymbols: 4, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.PrependTwoChildren(X[3], X[0], X[1]) }, }, ProdTabEntry{ String: `StatementBlockInBraces : "{" StatementBlock "}" << dsl.Wrap(X[1]) >>`, Id: "StatementBlockInBraces", NTType: 4, Index: 13, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.Wrap(X[1]) }, }, ProdTabEntry{ String: `BracelessStatement : Assignment << >>`, Id: "BracelessStatement", NTType: 5, Index: 14, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `BracelessStatement : Unset << >>`, Id: "BracelessStatement", NTType: 5, Index: 15, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `BracelessStatement : BareBoolean << >>`, Id: "BracelessStatement", NTType: 5, Index: 16, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `BracelessStatement : FilterStatement << >>`, Id: "BracelessStatement", NTType: 5, Index: 17, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `BracelessStatement : PrintStatement << >>`, Id: "BracelessStatement", NTType: 5, Index: 18, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `BracelessStatement : PrintnStatement << >>`, Id: "BracelessStatement", NTType: 5, Index: 19, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `BracelessStatement : EprintStatement << >>`, Id: "BracelessStatement", NTType: 5, Index: 20, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `BracelessStatement : EprintnStatement << >>`, Id: "BracelessStatement", NTType: 5, Index: 21, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `BracelessStatement : DumpStatement << >>`, Id: "BracelessStatement", NTType: 5, Index: 22, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `BracelessStatement : EdumpStatement << >>`, Id: "BracelessStatement", NTType: 5, Index: 23, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `BracelessStatement : TeeStatement << >>`, Id: "BracelessStatement", NTType: 5, Index: 24, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `BracelessStatement : Emit1Statement << >>`, Id: "BracelessStatement", NTType: 5, Index: 25, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `BracelessStatement : EmitStatement << >>`, Id: "BracelessStatement", NTType: 5, Index: 26, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `BracelessStatement : EmitPStatement << >>`, Id: "BracelessStatement", NTType: 5, Index: 27, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `BracelessStatement : EmitFStatement << >>`, Id: "BracelessStatement", NTType: 5, Index: 28, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `BracelessStatement : DoWhileLoop << >>`, Id: "BracelessStatement", NTType: 5, Index: 29, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `BracelessStatement : BreakStatement << >>`, Id: "BracelessStatement", NTType: 5, Index: 30, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `BracelessStatement : ContinueStatement << >>`, Id: "BracelessStatement", NTType: 5, Index: 31, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `BracelessStatement : ReturnStatement << >>`, Id: "BracelessStatement", NTType: 5, Index: 32, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `BracelessStatement : SubroutineCallsite << >>`, Id: "BracelessStatement", NTType: 5, Index: 33, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `Assignment : Lvalue "=" Rvalue << dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeAssignment) >>`, Id: "Assignment", NTType: 6, Index: 34, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeAssignment) }, }, ProdTabEntry{ String: `Unset : unset FcnArgs << dsl.AdoptChildren( dsl.NewASTNodeNestable( X[0], dsl.NodeTypeUnset, ), X[1], ) >>`, Id: "Unset", NTType: 7, Index: 35, NumSymbols: 2, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.AdoptChildren( dsl.NewASTNodeNestable( X[0], dsl.NodeTypeUnset, ), X[1], ) }, }, ProdTabEntry{ String: `Lvalue : Rvalue << >>`, Id: "Lvalue", NTType: 8, Index: 36, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `Lvalue : Typedecl LocalVariable << dsl.AppendChild(X[1], X[0]) >>`, Id: "Lvalue", NTType: 8, Index: 37, NumSymbols: 2, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.AppendChild(X[1], X[0]) }, }, ProdTabEntry{ String: `BareBoolean : Rvalue << dsl.NewASTNodeUnary(nil, X[0], dsl.NodeTypeBareBoolean) >>`, Id: "BareBoolean", NTType: 9, Index: 38, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeUnary(nil, X[0], dsl.NodeTypeBareBoolean) }, }, ProdTabEntry{ String: `FilterStatement : filter Rvalue << dsl.NewASTNodeUnary(X[0], X[1], dsl.NodeTypeFilterStatement) >>`, Id: "FilterStatement", NTType: 10, Index: 39, NumSymbols: 2, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeUnary(X[0], X[1], dsl.NodeTypeFilterStatement) }, }, ProdTabEntry{ String: `Redirector : ">" RedirectTarget << dsl.NewASTNodeUnary(X[0], X[1], dsl.NodeTypeRedirectWrite) >>`, Id: "Redirector", NTType: 11, Index: 40, NumSymbols: 2, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeUnary(X[0], X[1], dsl.NodeTypeRedirectWrite) }, }, ProdTabEntry{ String: `Redirector : ">>" RedirectTarget << dsl.NewASTNodeUnary(X[0], X[1], dsl.NodeTypeRedirectAppend) >>`, Id: "Redirector", NTType: 11, Index: 41, NumSymbols: 2, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeUnary(X[0], X[1], dsl.NodeTypeRedirectAppend) }, }, ProdTabEntry{ String: `Redirector : "|" RedirectTarget << dsl.NewASTNodeUnary(X[0], X[1], dsl.NodeTypeRedirectPipe) >>`, Id: "Redirector", NTType: 11, Index: 42, NumSymbols: 2, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeUnary(X[0], X[1], dsl.NodeTypeRedirectPipe) }, }, ProdTabEntry{ String: `RedirectTarget : stdout << dsl.NewASTNodeZary(X[0], dsl.NodeTypeRedirectTargetStdout) >>`, Id: "RedirectTarget", NTType: 12, Index: 43, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeZary(X[0], dsl.NodeTypeRedirectTargetStdout) }, }, ProdTabEntry{ String: `RedirectTarget : stderr << dsl.NewASTNodeZary(X[0], dsl.NodeTypeRedirectTargetStderr) >>`, Id: "RedirectTarget", NTType: 12, Index: 44, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeZary(X[0], dsl.NodeTypeRedirectTargetStderr) }, }, ProdTabEntry{ String: `RedirectTarget : Rvalue << >>`, Id: "RedirectTarget", NTType: 12, Index: 45, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `PrintStatement : print << dsl.NewASTNodeBinary( X[0], // print dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no printable dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect dsl.NodeTypePrintStatement, ) >>`, Id: "PrintStatement", NTType: 13, Index: 46, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary( X[0], // print dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no printable dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect dsl.NodeTypePrintStatement, ) }, }, ProdTabEntry{ String: `PrintStatement : print Redirector << dsl.NewASTNodeBinary( X[0], // print dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no printable X[1], // redirect dsl.NodeTypePrintStatement, ) >>`, Id: "PrintStatement", NTType: 13, Index: 47, NumSymbols: 2, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary( X[0], // print dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no printable X[1], // redirect dsl.NodeTypePrintStatement, ) }, }, ProdTabEntry{ String: `PrintStatement : print FcnArgs << dsl.NewASTNodeBinary( X[0], // print X[1], // printables dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect dsl.NodeTypePrintStatement, ) >>`, Id: "PrintStatement", NTType: 13, Index: 48, NumSymbols: 2, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary( X[0], // print X[1], // printables dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect dsl.NodeTypePrintStatement, ) }, }, ProdTabEntry{ String: `PrintStatement : print Redirector "," FcnArgs << dsl.NewASTNodeBinary( X[0], // print X[3], // printables X[1], // redirect dsl.NodeTypePrintStatement, ) >>`, Id: "PrintStatement", NTType: 13, Index: 49, NumSymbols: 4, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary( X[0], // print X[3], // printables X[1], // redirect dsl.NodeTypePrintStatement, ) }, }, ProdTabEntry{ String: `PrintnStatement : printn << dsl.NewASTNodeBinary( X[0], // printn dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no printable dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect dsl.NodeTypePrintnStatement, ) >>`, Id: "PrintnStatement", NTType: 14, Index: 50, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary( X[0], // printn dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no printable dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect dsl.NodeTypePrintnStatement, ) }, }, ProdTabEntry{ String: `PrintnStatement : printn Redirector << dsl.NewASTNodeBinary( X[0], // printn dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no printable X[1], // redirect dsl.NodeTypePrintnStatement, ) >>`, Id: "PrintnStatement", NTType: 14, Index: 51, NumSymbols: 2, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary( X[0], // printn dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no printable X[1], // redirect dsl.NodeTypePrintnStatement, ) }, }, ProdTabEntry{ String: `PrintnStatement : printn FcnArgs << dsl.NewASTNodeBinary( X[0], // printn X[1], // printables dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect dsl.NodeTypePrintnStatement, ) >>`, Id: "PrintnStatement", NTType: 14, Index: 52, NumSymbols: 2, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary( X[0], // printn X[1], // printables dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect dsl.NodeTypePrintnStatement, ) }, }, ProdTabEntry{ String: `PrintnStatement : printn Redirector "," FcnArgs << dsl.NewASTNodeBinary( X[0], // printn X[3], // printables X[1], // redirect dsl.NodeTypePrintnStatement, ) >>`, Id: "PrintnStatement", NTType: 14, Index: 53, NumSymbols: 4, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary( X[0], // printn X[3], // printables X[1], // redirect dsl.NodeTypePrintnStatement, ) }, }, ProdTabEntry{ String: `EprintStatement : eprint << dsl.NewASTNodeBinary( X[0], // eprint dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no printables dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect dsl.NodeTypeEprintStatement, ) >>`, Id: "EprintStatement", NTType: 15, Index: 54, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary( X[0], // eprint dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no printables dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect dsl.NodeTypeEprintStatement, ) }, }, ProdTabEntry{ String: `EprintStatement : eprint FcnArgs << dsl.NewASTNodeBinary( X[0], // eprint X[1], // printables dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect dsl.NodeTypeEprintStatement, ) >>`, Id: "EprintStatement", NTType: 15, Index: 55, NumSymbols: 2, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary( X[0], // eprint X[1], // printables dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect dsl.NodeTypeEprintStatement, ) }, }, ProdTabEntry{ String: `EprintnStatement : eprintn << dsl.NewASTNodeBinary( X[0], // eprint dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no printables dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect dsl.NodeTypeEprintnStatement, ) >>`, Id: "EprintnStatement", NTType: 16, Index: 56, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary( X[0], // eprint dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no printables dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect dsl.NodeTypeEprintnStatement, ) }, }, ProdTabEntry{ String: `EprintnStatement : eprintn FcnArgs << dsl.NewASTNodeBinary( X[0], // eprintn X[1], // printables dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect dsl.NodeTypeEprintnStatement, ) >>`, Id: "EprintnStatement", NTType: 16, Index: 57, NumSymbols: 2, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary( X[0], // eprintn X[1], // printables dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect dsl.NodeTypeEprintnStatement, ) }, }, ProdTabEntry{ String: `DumpStatement : dump << dsl.NewASTNodeBinary( X[0], // dump dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no dumpable dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect dsl.NodeTypeDumpStatement, ) >>`, Id: "DumpStatement", NTType: 17, Index: 58, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary( X[0], // dump dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no dumpable dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect dsl.NodeTypeDumpStatement, ) }, }, ProdTabEntry{ String: `DumpStatement : dump Redirector << dsl.NewASTNodeBinary( X[0], // dump dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no dumpable X[1], // redirect dsl.NodeTypeDumpStatement, ) >>`, Id: "DumpStatement", NTType: 17, Index: 59, NumSymbols: 2, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary( X[0], // dump dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no dumpable X[1], // redirect dsl.NodeTypeDumpStatement, ) }, }, ProdTabEntry{ String: `DumpStatement : dump FcnArgs << dsl.NewASTNodeBinary( X[0], // dump X[1], // printables dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect dsl.NodeTypeDumpStatement, ) >>`, Id: "DumpStatement", NTType: 17, Index: 60, NumSymbols: 2, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary( X[0], // dump X[1], // printables dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect dsl.NodeTypeDumpStatement, ) }, }, ProdTabEntry{ String: `DumpStatement : dump Redirector "," FcnArgs << dsl.NewASTNodeBinary( X[0], // dump X[3], // printables X[1], // redirect dsl.NodeTypeDumpStatement, ) >>`, Id: "DumpStatement", NTType: 17, Index: 61, NumSymbols: 4, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary( X[0], // dump X[3], // printables X[1], // redirect dsl.NodeTypeDumpStatement, ) }, }, ProdTabEntry{ String: `EdumpStatement : edump << dsl.NewASTNodeBinary( X[0], // edump dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no dumpable dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect dsl.NodeTypeEdumpStatement, ) >>`, Id: "EdumpStatement", NTType: 18, Index: 62, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary( X[0], // edump dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no dumpable dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect dsl.NodeTypeEdumpStatement, ) }, }, ProdTabEntry{ String: `EdumpStatement : edump FcnArgs << dsl.NewASTNodeBinary( X[0], // edump X[1], // printables dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect dsl.NodeTypeEdumpStatement, ) >>`, Id: "EdumpStatement", NTType: 18, Index: 63, NumSymbols: 2, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary( X[0], // edump X[1], // printables dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect dsl.NodeTypeEdumpStatement, ) }, }, ProdTabEntry{ String: `TeeStatement : tee Redirector "," FullSrec << dsl.NewASTNodeBinary(X[0], X[3], X[1], dsl.NodeTypeTeeStatement) >>`, Id: "TeeStatement", NTType: 19, Index: 64, NumSymbols: 4, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary(X[0], X[3], X[1], dsl.NodeTypeTeeStatement) }, }, ProdTabEntry{ String: `EmitFStatement : emitf EmittableList << dsl.NewASTNodeBinary( X[0], // emitf X[1], // emittables dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect dsl.NodeTypeEmitFStatement, ) >>`, Id: "EmitFStatement", NTType: 20, Index: 65, NumSymbols: 2, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary( X[0], // emitf X[1], // emittables dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect dsl.NodeTypeEmitFStatement, ) }, }, ProdTabEntry{ String: `EmitFStatement : emitf Redirector "," EmittableList << dsl.NewASTNodeBinary( X[0], // emitf X[3], // emittables X[1], // redirect dsl.NodeTypeEmitFStatement, ) >>`, Id: "EmitFStatement", NTType: 20, Index: 66, NumSymbols: 4, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary( X[0], // emitf X[3], // emittables X[1], // redirect dsl.NodeTypeEmitFStatement, ) }, }, ProdTabEntry{ String: `Emit1Statement : emit1 Rvalue << dsl.NewASTNodeUnary( X[0], // emit X[1], // Emittable dsl.NodeTypeEmit1Statement, ) >>`, Id: "Emit1Statement", NTType: 21, Index: 67, NumSymbols: 2, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeUnary( X[0], // emit X[1], // Emittable dsl.NodeTypeEmit1Statement, ) }, }, ProdTabEntry{ String: `EmitStatement : emit EmittableAsList << dsl.NewASTNodeTernary( X[0], // emit X[1], // Emittable dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no keys dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect dsl.NodeTypeEmitStatement, ) >>`, Id: "EmitStatement", NTType: 22, Index: 68, NumSymbols: 2, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeTernary( X[0], // emit X[1], // Emittable dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no keys dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect dsl.NodeTypeEmitStatement, ) }, }, ProdTabEntry{ String: `EmitStatement : emit Redirector "," EmittableAsList << dsl.NewASTNodeTernary( X[0], // emit X[3], // Emittable dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no keys X[1], // redirect dsl.NodeTypeEmitStatement, ) >>`, Id: "EmitStatement", NTType: 22, Index: 69, NumSymbols: 4, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeTernary( X[0], // emit X[3], // Emittable dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no keys X[1], // redirect dsl.NodeTypeEmitStatement, ) }, }, ProdTabEntry{ String: `EmitStatement : emit "(" EmittableList ")" << dsl.NewASTNodeTernary( X[0], // emit X[2], // emittables dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no keys dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect dsl.NodeTypeEmitStatement, ) >>`, Id: "EmitStatement", NTType: 22, Index: 70, NumSymbols: 4, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeTernary( X[0], // emit X[2], // emittables dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no keys dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect dsl.NodeTypeEmitStatement, ) }, }, ProdTabEntry{ String: `EmitStatement : emit Redirector "," "(" EmittableList ")" << dsl.NewASTNodeTernary( X[0], // emit X[4], // emittables dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no keys X[1], // redirect dsl.NodeTypeEmitStatement, ) >>`, Id: "EmitStatement", NTType: 22, Index: 71, NumSymbols: 6, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeTernary( X[0], // emit X[4], // emittables dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no keys X[1], // redirect dsl.NodeTypeEmitStatement, ) }, }, ProdTabEntry{ String: `EmitStatement : emit EmittableAsList "," EmitKeys << dsl.NewASTNodeTernary( X[0], // emit X[1], // emittable X[3], // keys dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect dsl.NodeTypeEmitStatement, ) >>`, Id: "EmitStatement", NTType: 22, Index: 72, NumSymbols: 4, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeTernary( X[0], // emit X[1], // emittable X[3], // keys dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect dsl.NodeTypeEmitStatement, ) }, }, ProdTabEntry{ String: `EmitStatement : emit Redirector "," EmittableAsList "," EmitKeys << dsl.NewASTNodeTernary( X[0], // emit X[3], // emittable X[5], // keys X[1], // redirect dsl.NodeTypeEmitStatement, ) >>`, Id: "EmitStatement", NTType: 22, Index: 73, NumSymbols: 6, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeTernary( X[0], // emit X[3], // emittable X[5], // keys X[1], // redirect dsl.NodeTypeEmitStatement, ) }, }, ProdTabEntry{ String: `EmitStatement : emit "(" EmittableList ")" "," EmitKeys << dsl.NewASTNodeTernary( X[0], // emit X[2], // emittable X[5], // keys dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect dsl.NodeTypeEmitStatement, ) >>`, Id: "EmitStatement", NTType: 22, Index: 74, NumSymbols: 6, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeTernary( X[0], // emit X[2], // emittable X[5], // keys dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect dsl.NodeTypeEmitStatement, ) }, }, ProdTabEntry{ String: `EmitStatement : emit Redirector "," "(" EmittableList ")" "," EmitKeys << dsl.NewASTNodeTernary( X[0], // emit X[4], // emittables X[7], // keys X[1], // redirect dsl.NodeTypeEmitStatement, ) >>`, Id: "EmitStatement", NTType: 22, Index: 75, NumSymbols: 8, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeTernary( X[0], // emit X[4], // emittables X[7], // keys X[1], // redirect dsl.NodeTypeEmitStatement, ) }, }, ProdTabEntry{ String: `EmitPStatement : emitp EmittableAsList << dsl.NewASTNodeTernary( X[0], // emitp X[1], // emittable dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no keys dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect dsl.NodeTypeEmitPStatement, ) >>`, Id: "EmitPStatement", NTType: 23, Index: 76, NumSymbols: 2, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeTernary( X[0], // emitp X[1], // emittable dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no keys dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect dsl.NodeTypeEmitPStatement, ) }, }, ProdTabEntry{ String: `EmitPStatement : emitp Redirector "," EmittableAsList << dsl.NewASTNodeTernary( X[0], // emitp X[3], // emittable dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no keys X[1], // redirect dsl.NodeTypeEmitPStatement, ) >>`, Id: "EmitPStatement", NTType: 23, Index: 77, NumSymbols: 4, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeTernary( X[0], // emitp X[3], // emittable dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no keys X[1], // redirect dsl.NodeTypeEmitPStatement, ) }, }, ProdTabEntry{ String: `EmitPStatement : emitp "(" EmittableList ")" << dsl.NewASTNodeTernary( X[0], // emitp X[2], // emittables dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no keys dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect dsl.NodeTypeEmitPStatement, ) >>`, Id: "EmitPStatement", NTType: 23, Index: 78, NumSymbols: 4, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeTernary( X[0], // emitp X[2], // emittables dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no keys dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect dsl.NodeTypeEmitPStatement, ) }, }, ProdTabEntry{ String: `EmitPStatement : emitp Redirector "," "(" EmittableList ")" << dsl.NewASTNodeTernary( X[0], // emitp X[4], // emittables dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no keys X[1], // redirect dsl.NodeTypeEmitPStatement, ) >>`, Id: "EmitPStatement", NTType: 23, Index: 79, NumSymbols: 6, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeTernary( X[0], // emitp X[4], // emittables dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no keys X[1], // redirect dsl.NodeTypeEmitPStatement, ) }, }, ProdTabEntry{ String: `EmitPStatement : emitp EmittableAsList "," EmitKeys << dsl.NewASTNodeTernary( X[0], // emitp X[1], // emittable X[3], // keys dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect dsl.NodeTypeEmitPStatement, ) >>`, Id: "EmitPStatement", NTType: 23, Index: 80, NumSymbols: 4, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeTernary( X[0], // emitp X[1], // emittable X[3], // keys dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect dsl.NodeTypeEmitPStatement, ) }, }, ProdTabEntry{ String: `EmitPStatement : emitp Redirector "," EmittableAsList "," EmitKeys << dsl.NewASTNodeTernary( X[0], // emitp X[3], // emittable X[5], // keys X[1], // redirect dsl.NodeTypeEmitPStatement, ) >>`, Id: "EmitPStatement", NTType: 23, Index: 81, NumSymbols: 6, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeTernary( X[0], // emitp X[3], // emittable X[5], // keys X[1], // redirect dsl.NodeTypeEmitPStatement, ) }, }, ProdTabEntry{ String: `EmitPStatement : emitp "(" EmittableList ")" "," EmitKeys << dsl.NewASTNodeTernary( X[0], // emitp X[2], // emittable X[5], // keys dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect dsl.NodeTypeEmitPStatement, ) >>`, Id: "EmitPStatement", NTType: 23, Index: 82, NumSymbols: 6, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeTernary( X[0], // emitp X[2], // emittable X[5], // keys dsl.NewASTNodeNestable(nil, dsl.NodeTypeNoOp), // no redirect dsl.NodeTypeEmitPStatement, ) }, }, ProdTabEntry{ String: `EmitPStatement : emitp Redirector "," "(" EmittableList ")" "," EmitKeys << dsl.NewASTNodeTernary( X[0], // emitp X[4], // emittable X[7], // keys X[1], // redirect dsl.NodeTypeEmitPStatement, ) >>`, Id: "EmitPStatement", NTType: 23, Index: 83, NumSymbols: 8, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeTernary( X[0], // emitp X[4], // emittable X[7], // keys X[1], // redirect dsl.NodeTypeEmitPStatement, ) }, }, ProdTabEntry{ String: `EmittableList : Emittable << dsl.NewASTNodeUnary( nil, X[0], dsl.NodeTypeEmittableList, ) >>`, Id: "EmittableList", NTType: 24, Index: 84, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeUnary( nil, X[0], dsl.NodeTypeEmittableList, ) }, }, ProdTabEntry{ String: `EmittableList : Emittable "," EmittableList << dsl.PrependChild( X[2], X[0], ) >>`, Id: "EmittableList", NTType: 24, Index: 85, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.PrependChild( X[2], X[0], ) }, }, ProdTabEntry{ String: `EmittableAsList : Emittable << dsl.NewASTNodeUnary( nil, X[0], dsl.NodeTypeEmittableList, ) >>`, Id: "EmittableAsList", NTType: 25, Index: 86, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeUnary( nil, X[0], dsl.NodeTypeEmittableList, ) }, }, ProdTabEntry{ String: `Emittable : LocalVariable << >>`, Id: "Emittable", NTType: 26, Index: 87, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `Emittable : DirectOosvarValue << >>`, Id: "Emittable", NTType: 26, Index: 88, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `Emittable : BracedOosvarValue << >>`, Id: "Emittable", NTType: 26, Index: 89, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `Emittable : IndirectOosvarValue << >>`, Id: "Emittable", NTType: 26, Index: 90, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `Emittable : DirectFieldValue << >>`, Id: "Emittable", NTType: 26, Index: 91, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `Emittable : BracedFieldValue << >>`, Id: "Emittable", NTType: 26, Index: 92, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `Emittable : IndirectFieldValue << >>`, Id: "Emittable", NTType: 26, Index: 93, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `Emittable : FullSrec << >>`, Id: "Emittable", NTType: 26, Index: 94, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `Emittable : FullOosvar << >>`, Id: "Emittable", NTType: 26, Index: 95, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `Emittable : MapLiteral << >>`, Id: "Emittable", NTType: 26, Index: 96, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `EmitKeys : Rvalue << dsl.NewASTNodeUnary( nil, X[0], dsl.NodeTypeEmitKeys, ) >>`, Id: "EmitKeys", NTType: 27, Index: 97, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeUnary( nil, X[0], dsl.NodeTypeEmitKeys, ) }, }, ProdTabEntry{ String: `EmitKeys : Rvalue "," EmitKeys << dsl.PrependChild( X[2], X[0], ) >>`, Id: "EmitKeys", NTType: 27, Index: 98, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.PrependChild( X[2], X[0], ) }, }, ProdTabEntry{ String: `FieldValue : DirectFieldValue << >>`, Id: "FieldValue", NTType: 28, Index: 99, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `FieldValue : IndirectFieldValue << >>`, Id: "FieldValue", NTType: 28, Index: 100, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `FieldValue : BracedFieldValue << >>`, Id: "FieldValue", NTType: 28, Index: 101, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `FieldValue : PositionalFieldName << >>`, Id: "FieldValue", NTType: 28, Index: 102, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `FieldValue : PositionalFieldValue << >>`, Id: "FieldValue", NTType: 28, Index: 103, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `DirectFieldValue : field_name << dsl.NewASTNodeStripDollarOrAtSign(X[0], dsl.NodeTypeDirectFieldValue) >>`, Id: "DirectFieldValue", NTType: 29, Index: 104, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeStripDollarOrAtSign(X[0], dsl.NodeTypeDirectFieldValue) }, }, ProdTabEntry{ String: `IndirectFieldValue : "$[" Rvalue "]" << dsl.NewASTNodeUnary(dsl.NewASTToken("$[]", X[0]), X[1], dsl.NodeTypeIndirectFieldValue) >>`, Id: "IndirectFieldValue", NTType: 30, Index: 105, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeUnary(dsl.NewASTToken("$[]", X[0]), X[1], dsl.NodeTypeIndirectFieldValue) }, }, ProdTabEntry{ String: `BracedFieldValue : braced_field_name << dsl.NewASTNodeStripDollarOrAtSignAndCurlyBraces(X[0], dsl.NodeTypeDirectFieldValue) >>`, Id: "BracedFieldValue", NTType: 31, Index: 106, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeStripDollarOrAtSignAndCurlyBraces(X[0], dsl.NodeTypeDirectFieldValue) }, }, ProdTabEntry{ String: `PositionalFieldName : "$[[" Rvalue "]" "]" << dsl.NewASTNodeUnary(dsl.NewASTToken("$[]", X[0]), X[1], dsl.NodeTypePositionalFieldName) >>`, Id: "PositionalFieldName", NTType: 32, Index: 107, NumSymbols: 4, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeUnary(dsl.NewASTToken("$[]", X[0]), X[1], dsl.NodeTypePositionalFieldName) }, }, ProdTabEntry{ String: `PositionalFieldValue : "$[[[" Rvalue "]" "]" "]" << dsl.NewASTNodeUnary(dsl.NewASTToken("$[]", X[0]), X[1], dsl.NodeTypePositionalFieldValue) >>`, Id: "PositionalFieldValue", NTType: 33, Index: 108, NumSymbols: 5, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeUnary(dsl.NewASTToken("$[]", X[0]), X[1], dsl.NodeTypePositionalFieldValue) }, }, ProdTabEntry{ String: `FullSrec : full_srec << dsl.NewASTNode(X[0], dsl.NodeTypeFullSrec) >>`, Id: "FullSrec", NTType: 34, Index: 109, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNode(X[0], dsl.NodeTypeFullSrec) }, }, ProdTabEntry{ String: `OosvarValue : DirectOosvarValue << >>`, Id: "OosvarValue", NTType: 35, Index: 110, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `OosvarValue : IndirectOosvarValue << >>`, Id: "OosvarValue", NTType: 35, Index: 111, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `OosvarValue : BracedOosvarValue << >>`, Id: "OosvarValue", NTType: 35, Index: 112, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `DirectOosvarValue : oosvar_name << dsl.NewASTNodeStripDollarOrAtSign(X[0], dsl.NodeTypeDirectOosvarValue) >>`, Id: "DirectOosvarValue", NTType: 36, Index: 113, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeStripDollarOrAtSign(X[0], dsl.NodeTypeDirectOosvarValue) }, }, ProdTabEntry{ String: `IndirectOosvarValue : "@[" Rvalue "]" << dsl.NewASTNodeUnary(dsl.NewASTToken("@[]", X[0]), X[1], dsl.NodeTypeIndirectOosvarValue) >>`, Id: "IndirectOosvarValue", NTType: 37, Index: 114, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeUnary(dsl.NewASTToken("@[]", X[0]), X[1], dsl.NodeTypeIndirectOosvarValue) }, }, ProdTabEntry{ String: `BracedOosvarValue : braced_oosvar_name << dsl.NewASTNodeStripDollarOrAtSignAndCurlyBraces(X[0], dsl.NodeTypeDirectOosvarValue) >>`, Id: "BracedOosvarValue", NTType: 38, Index: 115, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeStripDollarOrAtSignAndCurlyBraces(X[0], dsl.NodeTypeDirectOosvarValue) }, }, ProdTabEntry{ String: `FullOosvar : full_oosvar << dsl.NewASTNode(X[0], dsl.NodeTypeFullOosvar) >>`, Id: "FullOosvar", NTType: 39, Index: 116, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNode(X[0], dsl.NodeTypeFullOosvar) }, }, ProdTabEntry{ String: `FullOosvar : all << dsl.NewASTNode(X[0], dsl.NodeTypeFullOosvar) >>`, Id: "FullOosvar", NTType: 39, Index: 117, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNode(X[0], dsl.NodeTypeFullOosvar) }, }, ProdTabEntry{ String: `LocalVariable : non_sigil_name << dsl.NewASTNode(X[0], dsl.NodeTypeLocalVariable) >>`, Id: "LocalVariable", NTType: 40, Index: 118, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNode(X[0], dsl.NodeTypeLocalVariable) }, }, ProdTabEntry{ String: `Typedecl : arr << dsl.NewASTNode(X[0], dsl.NodeTypeTypedecl) >>`, Id: "Typedecl", NTType: 41, Index: 119, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNode(X[0], dsl.NodeTypeTypedecl) }, }, ProdTabEntry{ String: `Typedecl : bool << dsl.NewASTNode(X[0], dsl.NodeTypeTypedecl) >>`, Id: "Typedecl", NTType: 41, Index: 120, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNode(X[0], dsl.NodeTypeTypedecl) }, }, ProdTabEntry{ String: `Typedecl : float << dsl.NewASTNode(X[0], dsl.NodeTypeTypedecl) >>`, Id: "Typedecl", NTType: 41, Index: 121, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNode(X[0], dsl.NodeTypeTypedecl) }, }, ProdTabEntry{ String: `Typedecl : int << dsl.NewASTNode(X[0], dsl.NodeTypeTypedecl) >>`, Id: "Typedecl", NTType: 41, Index: 122, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNode(X[0], dsl.NodeTypeTypedecl) }, }, ProdTabEntry{ String: `Typedecl : map << dsl.NewASTNode(X[0], dsl.NodeTypeTypedecl) >>`, Id: "Typedecl", NTType: 41, Index: 123, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNode(X[0], dsl.NodeTypeTypedecl) }, }, ProdTabEntry{ String: `Typedecl : num << dsl.NewASTNode(X[0], dsl.NodeTypeTypedecl) >>`, Id: "Typedecl", NTType: 41, Index: 124, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNode(X[0], dsl.NodeTypeTypedecl) }, }, ProdTabEntry{ String: `Typedecl : str << dsl.NewASTNode(X[0], dsl.NodeTypeTypedecl) >>`, Id: "Typedecl", NTType: 41, Index: 125, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNode(X[0], dsl.NodeTypeTypedecl) }, }, ProdTabEntry{ String: `Typedecl : var << dsl.NewASTNode(X[0], dsl.NodeTypeTypedecl) >>`, Id: "Typedecl", NTType: 41, Index: 126, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNode(X[0], dsl.NodeTypeTypedecl) }, }, ProdTabEntry{ String: `Typedecl : funct << dsl.NewASTNode(X[0], dsl.NodeTypeTypedecl) >>`, Id: "Typedecl", NTType: 41, Index: 127, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNode(X[0], dsl.NodeTypeTypedecl) }, }, ProdTabEntry{ String: `Assignment : Lvalue "||=" Rvalue << dsl.NewASTNodeBinary( dsl.NewASTToken("=", X[1]), X[0], dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("||", X[1]), X[0], X[2], dsl.NodeTypeOperator), dsl.NodeTypeAssignment, ) >>`, Id: "Assignment", NTType: 6, Index: 128, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary( dsl.NewASTToken("=", X[1]), X[0], dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("||", X[1]), X[0], X[2], dsl.NodeTypeOperator), dsl.NodeTypeAssignment, ) }, }, ProdTabEntry{ String: `Assignment : Lvalue "^^=" Rvalue << dsl.NewASTNodeBinary( dsl.NewASTToken("=", X[1]), X[0], dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("^^", X[1]), X[0], X[2], dsl.NodeTypeOperator), dsl.NodeTypeAssignment, ) >>`, Id: "Assignment", NTType: 6, Index: 129, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary( dsl.NewASTToken("=", X[1]), X[0], dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("^^", X[1]), X[0], X[2], dsl.NodeTypeOperator), dsl.NodeTypeAssignment, ) }, }, ProdTabEntry{ String: `Assignment : Lvalue "&&=" Rvalue << dsl.NewASTNodeBinary( dsl.NewASTToken("=", X[1]), X[0], dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("&&", X[1]), X[0], X[2], dsl.NodeTypeOperator), dsl.NodeTypeAssignment, ) >>`, Id: "Assignment", NTType: 6, Index: 130, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary( dsl.NewASTToken("=", X[1]), X[0], dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("&&", X[1]), X[0], X[2], dsl.NodeTypeOperator), dsl.NodeTypeAssignment, ) }, }, ProdTabEntry{ String: `Assignment : Lvalue "??=" Rvalue << dsl.NewASTNodeBinary( dsl.NewASTToken("=", X[1]), X[0], dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("??", X[1]), X[0], X[2], dsl.NodeTypeOperator), dsl.NodeTypeAssignment, ) >>`, Id: "Assignment", NTType: 6, Index: 131, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary( dsl.NewASTToken("=", X[1]), X[0], dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("??", X[1]), X[0], X[2], dsl.NodeTypeOperator), dsl.NodeTypeAssignment, ) }, }, ProdTabEntry{ String: `Assignment : Lvalue "???=" Rvalue << dsl.NewASTNodeBinary( dsl.NewASTToken("=", X[1]), X[0], dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("???", X[1]), X[0], X[2], dsl.NodeTypeOperator), dsl.NodeTypeAssignment, ) >>`, Id: "Assignment", NTType: 6, Index: 132, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary( dsl.NewASTToken("=", X[1]), X[0], dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("???", X[1]), X[0], X[2], dsl.NodeTypeOperator), dsl.NodeTypeAssignment, ) }, }, ProdTabEntry{ String: `Assignment : Lvalue "|=" Rvalue << dsl.NewASTNodeBinary( dsl.NewASTToken("=", X[1]), X[0], dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("|", X[1]), X[0], X[2], dsl.NodeTypeOperator), dsl.NodeTypeAssignment, ) >>`, Id: "Assignment", NTType: 6, Index: 133, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary( dsl.NewASTToken("=", X[1]), X[0], dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("|", X[1]), X[0], X[2], dsl.NodeTypeOperator), dsl.NodeTypeAssignment, ) }, }, ProdTabEntry{ String: `Assignment : Lvalue "&=" Rvalue << dsl.NewASTNodeBinary( dsl.NewASTToken("=", X[1]), X[0], dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("^", X[1]), X[0], X[2], dsl.NodeTypeOperator), dsl.NodeTypeAssignment, ) >>`, Id: "Assignment", NTType: 6, Index: 134, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary( dsl.NewASTToken("=", X[1]), X[0], dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("^", X[1]), X[0], X[2], dsl.NodeTypeOperator), dsl.NodeTypeAssignment, ) }, }, ProdTabEntry{ String: `Assignment : Lvalue "^=" Rvalue << dsl.NewASTNodeBinary( dsl.NewASTToken("=", X[1]), X[0], dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("^", X[1]), X[0], X[2], dsl.NodeTypeOperator), dsl.NodeTypeAssignment, ) >>`, Id: "Assignment", NTType: 6, Index: 135, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary( dsl.NewASTToken("=", X[1]), X[0], dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("^", X[1]), X[0], X[2], dsl.NodeTypeOperator), dsl.NodeTypeAssignment, ) }, }, ProdTabEntry{ String: `Assignment : Lvalue "<<=" Rvalue << dsl.NewASTNodeBinary( dsl.NewASTToken("=", X[1]), X[0], dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("<<", X[1]), X[0], X[2], dsl.NodeTypeOperator), dsl.NodeTypeAssignment, ) >>`, Id: "Assignment", NTType: 6, Index: 136, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary( dsl.NewASTToken("=", X[1]), X[0], dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("<<", X[1]), X[0], X[2], dsl.NodeTypeOperator), dsl.NodeTypeAssignment, ) }, }, ProdTabEntry{ String: `Assignment : Lvalue ">>=" Rvalue << dsl.NewASTNodeBinary( dsl.NewASTToken("=", X[1]), X[0], dsl.NewASTNodeBinaryNestable(dsl.NewASTToken(">"+">", X[1]), X[0], X[2], dsl.NodeTypeOperator), dsl.NodeTypeAssignment, ) >>`, Id: "Assignment", NTType: 6, Index: 137, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary( dsl.NewASTToken("=", X[1]), X[0], dsl.NewASTNodeBinaryNestable(dsl.NewASTToken(">"+">", X[1]), X[0], X[2], dsl.NodeTypeOperator), dsl.NodeTypeAssignment, ) }, }, ProdTabEntry{ String: `Assignment : Lvalue ">>>=" Rvalue << dsl.NewASTNodeBinary( dsl.NewASTToken("=", X[1]), X[0], dsl.NewASTNodeBinaryNestable(dsl.NewASTToken(">"+">"+">", X[1]), X[0], X[2], dsl.NodeTypeOperator), dsl.NodeTypeAssignment, ) >>`, Id: "Assignment", NTType: 6, Index: 138, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary( dsl.NewASTToken("=", X[1]), X[0], dsl.NewASTNodeBinaryNestable(dsl.NewASTToken(">"+">"+">", X[1]), X[0], X[2], dsl.NodeTypeOperator), dsl.NodeTypeAssignment, ) }, }, ProdTabEntry{ String: `Assignment : Lvalue "+=" Rvalue << dsl.NewASTNodeBinary( dsl.NewASTToken("=", X[1]), X[0], dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("+", X[1]), X[0], X[2], dsl.NodeTypeOperator), dsl.NodeTypeAssignment, ) >>`, Id: "Assignment", NTType: 6, Index: 139, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary( dsl.NewASTToken("=", X[1]), X[0], dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("+", X[1]), X[0], X[2], dsl.NodeTypeOperator), dsl.NodeTypeAssignment, ) }, }, ProdTabEntry{ String: `Assignment : Lvalue ".=" Rvalue << dsl.NewASTNodeBinary( dsl.NewASTToken("=", X[1]), X[0], dsl.NewASTNodeBinaryNestable(dsl.NewASTToken(".", X[1]), X[0], X[2], dsl.NodeTypeDotOperator), dsl.NodeTypeAssignment, ) >>`, Id: "Assignment", NTType: 6, Index: 140, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary( dsl.NewASTToken("=", X[1]), X[0], dsl.NewASTNodeBinaryNestable(dsl.NewASTToken(".", X[1]), X[0], X[2], dsl.NodeTypeDotOperator), dsl.NodeTypeAssignment, ) }, }, ProdTabEntry{ String: `Assignment : Lvalue "-=" Rvalue << dsl.NewASTNodeBinary( dsl.NewASTToken("=", X[1]), X[0], dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("-", X[1]), X[0], X[2], dsl.NodeTypeOperator), dsl.NodeTypeAssignment, ) >>`, Id: "Assignment", NTType: 6, Index: 141, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary( dsl.NewASTToken("=", X[1]), X[0], dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("-", X[1]), X[0], X[2], dsl.NodeTypeOperator), dsl.NodeTypeAssignment, ) }, }, ProdTabEntry{ String: `Assignment : Lvalue "*=" Rvalue << dsl.NewASTNodeBinary( dsl.NewASTToken("=", X[1]), X[0], dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("*", X[1]), X[0], X[2], dsl.NodeTypeOperator), dsl.NodeTypeAssignment, ) >>`, Id: "Assignment", NTType: 6, Index: 142, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary( dsl.NewASTToken("=", X[1]), X[0], dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("*", X[1]), X[0], X[2], dsl.NodeTypeOperator), dsl.NodeTypeAssignment, ) }, }, ProdTabEntry{ String: `Assignment : Lvalue "/=" Rvalue << dsl.NewASTNodeBinary( dsl.NewASTToken("=", X[1]), X[0], dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("/", X[1]), X[0], X[2], dsl.NodeTypeOperator), dsl.NodeTypeAssignment, ) >>`, Id: "Assignment", NTType: 6, Index: 143, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary( dsl.NewASTToken("=", X[1]), X[0], dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("/", X[1]), X[0], X[2], dsl.NodeTypeOperator), dsl.NodeTypeAssignment, ) }, }, ProdTabEntry{ String: `Assignment : Lvalue "//=" Rvalue << dsl.NewASTNodeBinary( dsl.NewASTToken("=", X[1]), X[0], dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("//", X[1]), X[0], X[2], dsl.NodeTypeOperator), dsl.NodeTypeAssignment, ) >>`, Id: "Assignment", NTType: 6, Index: 144, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary( dsl.NewASTToken("=", X[1]), X[0], dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("//", X[1]), X[0], X[2], dsl.NodeTypeOperator), dsl.NodeTypeAssignment, ) }, }, ProdTabEntry{ String: `Assignment : Lvalue "%=" Rvalue << dsl.NewASTNodeBinary( dsl.NewASTToken("=", X[1]), X[0], dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("%", X[1]), X[0], X[2], dsl.NodeTypeOperator), dsl.NodeTypeAssignment, ) >>`, Id: "Assignment", NTType: 6, Index: 145, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary( dsl.NewASTToken("=", X[1]), X[0], dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("%", X[1]), X[0], X[2], dsl.NodeTypeOperator), dsl.NodeTypeAssignment, ) }, }, ProdTabEntry{ String: `Assignment : Lvalue "**=" Rvalue << dsl.NewASTNodeBinary( dsl.NewASTToken("=", X[1]), X[0], dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("**", X[1]), X[0], X[2], dsl.NodeTypeOperator), dsl.NodeTypeAssignment, ) >>`, Id: "Assignment", NTType: 6, Index: 146, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary( dsl.NewASTToken("=", X[1]), X[0], dsl.NewASTNodeBinaryNestable(dsl.NewASTToken("**", X[1]), X[0], X[2], dsl.NodeTypeOperator), dsl.NodeTypeAssignment, ) }, }, ProdTabEntry{ String: `Rvalue : PrecedenceChainStart << >>`, Id: "Rvalue", NTType: 42, Index: 147, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `PrecedenceChainStart : TernaryTerm << >>`, Id: "PrecedenceChainStart", NTType: 43, Index: 148, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `TernaryTerm : LogicalOrTerm "?" TernaryTerm ":" TernaryTerm << dsl.NewASTNodeTernary(dsl.NewASTToken("?:", X[1]), X[0], X[2], X[4], dsl.NodeTypeOperator) >>`, Id: "TernaryTerm", NTType: 44, Index: 149, NumSymbols: 5, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeTernary(dsl.NewASTToken("?:", X[1]), X[0], X[2], X[4], dsl.NodeTypeOperator) }, }, ProdTabEntry{ String: `TernaryTerm : LogicalOrTerm << >>`, Id: "TernaryTerm", NTType: 44, Index: 150, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `LogicalOrTerm : LogicalOrTerm "||" LogicalXORTerm << dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`, Id: "LogicalOrTerm", NTType: 45, Index: 151, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) }, }, ProdTabEntry{ String: `LogicalOrTerm : LogicalXORTerm << >>`, Id: "LogicalOrTerm", NTType: 45, Index: 152, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `LogicalXORTerm : LogicalXORTerm "^^" LogicalAndTerm << dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`, Id: "LogicalXORTerm", NTType: 46, Index: 153, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) }, }, ProdTabEntry{ String: `LogicalXORTerm : LogicalAndTerm << >>`, Id: "LogicalXORTerm", NTType: 46, Index: 154, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `LogicalAndTerm : LogicalAndTerm "&&" EqneTerm << dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`, Id: "LogicalAndTerm", NTType: 47, Index: 155, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) }, }, ProdTabEntry{ String: `LogicalAndTerm : EqneTerm << >>`, Id: "LogicalAndTerm", NTType: 47, Index: 156, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `EqneTerm : EqneTerm "=~" CmpTerm << dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`, Id: "EqneTerm", NTType: 48, Index: 157, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) }, }, ProdTabEntry{ String: `EqneTerm : EqneTerm "!=~" CmpTerm << dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`, Id: "EqneTerm", NTType: 48, Index: 158, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) }, }, ProdTabEntry{ String: `EqneTerm : EqneTerm "==" CmpTerm << dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`, Id: "EqneTerm", NTType: 48, Index: 159, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) }, }, ProdTabEntry{ String: `EqneTerm : EqneTerm "!=" CmpTerm << dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`, Id: "EqneTerm", NTType: 48, Index: 160, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) }, }, ProdTabEntry{ String: `EqneTerm : EqneTerm "<=>" CmpTerm << dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`, Id: "EqneTerm", NTType: 48, Index: 161, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) }, }, ProdTabEntry{ String: `EqneTerm : CmpTerm << >>`, Id: "EqneTerm", NTType: 48, Index: 162, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `CmpTerm : CmpTerm ">" BitwiseORTerm << dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`, Id: "CmpTerm", NTType: 49, Index: 163, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) }, }, ProdTabEntry{ String: `CmpTerm : CmpTerm ">=" BitwiseORTerm << dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`, Id: "CmpTerm", NTType: 49, Index: 164, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) }, }, ProdTabEntry{ String: `CmpTerm : CmpTerm "<" BitwiseORTerm << dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`, Id: "CmpTerm", NTType: 49, Index: 165, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) }, }, ProdTabEntry{ String: `CmpTerm : CmpTerm "<=" BitwiseORTerm << dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`, Id: "CmpTerm", NTType: 49, Index: 166, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) }, }, ProdTabEntry{ String: `CmpTerm : BitwiseORTerm << >>`, Id: "CmpTerm", NTType: 49, Index: 167, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `BitwiseORTerm : BitwiseORTerm "|" BitwiseXORTerm << dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`, Id: "BitwiseORTerm", NTType: 50, Index: 168, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) }, }, ProdTabEntry{ String: `BitwiseORTerm : BitwiseXORTerm << >>`, Id: "BitwiseORTerm", NTType: 50, Index: 169, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `BitwiseXORTerm : BitwiseXORTerm "^" BitwiseANDTerm << dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`, Id: "BitwiseXORTerm", NTType: 51, Index: 170, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) }, }, ProdTabEntry{ String: `BitwiseXORTerm : BitwiseANDTerm << >>`, Id: "BitwiseXORTerm", NTType: 51, Index: 171, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `BitwiseANDTerm : BitwiseANDTerm "&" BitwiseShiftTerm << dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`, Id: "BitwiseANDTerm", NTType: 52, Index: 172, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) }, }, ProdTabEntry{ String: `BitwiseANDTerm : BitwiseShiftTerm << >>`, Id: "BitwiseANDTerm", NTType: 52, Index: 173, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `BitwiseShiftTerm : BitwiseShiftTerm "<<" AddsubdotTerm << dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`, Id: "BitwiseShiftTerm", NTType: 53, Index: 174, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) }, }, ProdTabEntry{ String: `BitwiseShiftTerm : BitwiseShiftTerm ">>" AddsubdotTerm << dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`, Id: "BitwiseShiftTerm", NTType: 53, Index: 175, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) }, }, ProdTabEntry{ String: `BitwiseShiftTerm : BitwiseShiftTerm ">>>" AddsubdotTerm << dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`, Id: "BitwiseShiftTerm", NTType: 53, Index: 176, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) }, }, ProdTabEntry{ String: `BitwiseShiftTerm : AddsubdotTerm << >>`, Id: "BitwiseShiftTerm", NTType: 53, Index: 177, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `AddsubdotTerm : AddsubdotTerm "+" MuldivTerm << dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`, Id: "AddsubdotTerm", NTType: 54, Index: 178, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) }, }, ProdTabEntry{ String: `AddsubdotTerm : AddsubdotTerm "-" MuldivTerm << dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`, Id: "AddsubdotTerm", NTType: 54, Index: 179, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) }, }, ProdTabEntry{ String: `AddsubdotTerm : AddsubdotTerm ".+" MuldivTerm << dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`, Id: "AddsubdotTerm", NTType: 54, Index: 180, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) }, }, ProdTabEntry{ String: `AddsubdotTerm : AddsubdotTerm ".-" MuldivTerm << dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`, Id: "AddsubdotTerm", NTType: 54, Index: 181, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) }, }, ProdTabEntry{ String: `AddsubdotTerm : MuldivTerm << >>`, Id: "AddsubdotTerm", NTType: 54, Index: 182, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `MuldivTerm : MuldivTerm "*" DotTerm << dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`, Id: "MuldivTerm", NTType: 55, Index: 183, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) }, }, ProdTabEntry{ String: `MuldivTerm : MuldivTerm "/" DotTerm << dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`, Id: "MuldivTerm", NTType: 55, Index: 184, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) }, }, ProdTabEntry{ String: `MuldivTerm : MuldivTerm "//" DotTerm << dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`, Id: "MuldivTerm", NTType: 55, Index: 185, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) }, }, ProdTabEntry{ String: `MuldivTerm : MuldivTerm "%" DotTerm << dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`, Id: "MuldivTerm", NTType: 55, Index: 186, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) }, }, ProdTabEntry{ String: `MuldivTerm : MuldivTerm ".*" DotTerm << dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`, Id: "MuldivTerm", NTType: 55, Index: 187, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) }, }, ProdTabEntry{ String: `MuldivTerm : MuldivTerm "./" DotTerm << dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`, Id: "MuldivTerm", NTType: 55, Index: 188, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) }, }, ProdTabEntry{ String: `MuldivTerm : MuldivTerm ".//" DotTerm << dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`, Id: "MuldivTerm", NTType: 55, Index: 189, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) }, }, ProdTabEntry{ String: `MuldivTerm : DotTerm << >>`, Id: "MuldivTerm", NTType: 55, Index: 190, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `DotTerm : DotTerm "." UnaryOpTerm << dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeDotOperator) >>`, Id: "DotTerm", NTType: 56, Index: 191, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeDotOperator) }, }, ProdTabEntry{ String: `DotTerm : UnaryOpTerm << >>`, Id: "DotTerm", NTType: 56, Index: 192, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `UnaryOpTerm : "+" UnaryOpTerm << dsl.NewASTNodeUnary(X[0], X[1], dsl.NodeTypeOperator) >>`, Id: "UnaryOpTerm", NTType: 57, Index: 193, NumSymbols: 2, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeUnary(X[0], X[1], dsl.NodeTypeOperator) }, }, ProdTabEntry{ String: `UnaryOpTerm : "-" UnaryOpTerm << dsl.NewASTNodeUnary(X[0], X[1], dsl.NodeTypeOperator) >>`, Id: "UnaryOpTerm", NTType: 57, Index: 194, NumSymbols: 2, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeUnary(X[0], X[1], dsl.NodeTypeOperator) }, }, ProdTabEntry{ String: `UnaryOpTerm : ".+" UnaryOpTerm << dsl.NewASTNodeUnary(X[0], X[1], dsl.NodeTypeOperator) >>`, Id: "UnaryOpTerm", NTType: 57, Index: 195, NumSymbols: 2, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeUnary(X[0], X[1], dsl.NodeTypeOperator) }, }, ProdTabEntry{ String: `UnaryOpTerm : ".-" UnaryOpTerm << dsl.NewASTNodeUnary(X[0], X[1], dsl.NodeTypeOperator) >>`, Id: "UnaryOpTerm", NTType: 57, Index: 196, NumSymbols: 2, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeUnary(X[0], X[1], dsl.NodeTypeOperator) }, }, ProdTabEntry{ String: `UnaryOpTerm : "!" UnaryOpTerm << dsl.NewASTNodeUnary(X[0], X[1], dsl.NodeTypeOperator) >>`, Id: "UnaryOpTerm", NTType: 57, Index: 197, NumSymbols: 2, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeUnary(X[0], X[1], dsl.NodeTypeOperator) }, }, ProdTabEntry{ String: `UnaryOpTerm : "~" UnaryOpTerm << dsl.NewASTNodeUnary(X[0], X[1], dsl.NodeTypeOperator) >>`, Id: "UnaryOpTerm", NTType: 57, Index: 198, NumSymbols: 2, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeUnary(X[0], X[1], dsl.NodeTypeOperator) }, }, ProdTabEntry{ String: `UnaryOpTerm : AbsentCoalesceTerm << >>`, Id: "UnaryOpTerm", NTType: 57, Index: 199, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `AbsentCoalesceTerm : AbsentCoalesceTerm "??" EmptyCoalesceTerm << dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`, Id: "AbsentCoalesceTerm", NTType: 58, Index: 200, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) }, }, ProdTabEntry{ String: `AbsentCoalesceTerm : EmptyCoalesceTerm << >>`, Id: "AbsentCoalesceTerm", NTType: 58, Index: 201, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `EmptyCoalesceTerm : EmptyCoalesceTerm "???" PowTerm << dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`, Id: "EmptyCoalesceTerm", NTType: 59, Index: 202, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) }, }, ProdTabEntry{ String: `EmptyCoalesceTerm : PowTerm << >>`, Id: "EmptyCoalesceTerm", NTType: 59, Index: 203, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `PowTerm : PrecedenceChainEnd "**" PowTerm << dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) >>`, Id: "PowTerm", NTType: 60, Index: 204, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary(X[1], X[0], X[2], dsl.NodeTypeOperator) }, }, ProdTabEntry{ String: `PowTerm : PrecedenceChainEnd "**" "-" PowTerm << dsl.NewASTNodeBinary( X[1], X[0], dsl.NewASTNodeUnaryNestable( X[2], X[3], dsl.NodeTypeOperator,), dsl.NodeTypeOperator,) >>`, Id: "PowTerm", NTType: 60, Index: 205, NumSymbols: 4, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary(X[1], X[0], dsl.NewASTNodeUnaryNestable(X[2], X[3], dsl.NodeTypeOperator), dsl.NodeTypeOperator) }, }, ProdTabEntry{ String: `PowTerm : PrecedenceChainEnd "**" "+" PowTerm << dsl.NewASTNodeBinary( X[1], X[0], dsl.NewASTNodeUnaryNestable( X[2], X[3], dsl.NodeTypeOperator, ), dsl.NodeTypeOperator, ) >>`, Id: "PowTerm", NTType: 60, Index: 206, NumSymbols: 4, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary( X[1], X[0], dsl.NewASTNodeUnaryNestable( X[2], X[3], dsl.NodeTypeOperator, ), dsl.NodeTypeOperator, ) }, }, ProdTabEntry{ String: `PowTerm : PrecedenceChainEnd << >>`, Id: "PowTerm", NTType: 60, Index: 207, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `PrecedenceChainEnd : "(" Rvalue ")" << dsl.Nestable(X[1]) >>`, Id: "PrecedenceChainEnd", NTType: 61, Index: 208, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.Nestable(X[1]) }, }, ProdTabEntry{ String: `PrecedenceChainEnd : MlrvalOrFunction << >>`, Id: "PrecedenceChainEnd", NTType: 61, Index: 209, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `MlrvalOrFunction : FieldValue << >>`, Id: "MlrvalOrFunction", NTType: 62, Index: 210, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `MlrvalOrFunction : FullSrec << >>`, Id: "MlrvalOrFunction", NTType: 62, Index: 211, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `MlrvalOrFunction : OosvarValue << >>`, Id: "MlrvalOrFunction", NTType: 62, Index: 212, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `MlrvalOrFunction : FullOosvar << >>`, Id: "MlrvalOrFunction", NTType: 62, Index: 213, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `MlrvalOrFunction : LocalVariable << >>`, Id: "MlrvalOrFunction", NTType: 62, Index: 214, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `MlrvalOrFunction : UnnamedFunctionDefinition << >>`, Id: "MlrvalOrFunction", NTType: 62, Index: 215, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `MlrvalOrFunction : string_literal << dsl.NewASTNodeStripDoubleQuotePair(X[0], dsl.NodeTypeStringLiteral) >>`, Id: "MlrvalOrFunction", NTType: 62, Index: 216, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeStripDoubleQuotePair(X[0], dsl.NodeTypeStringLiteral) }, }, ProdTabEntry{ String: `MlrvalOrFunction : regex_case_insensitive << dsl.NewASTNode(X[0], dsl.NodeTypeRegexCaseInsensitive) >>`, Id: "MlrvalOrFunction", NTType: 62, Index: 217, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNode(X[0], dsl.NodeTypeRegexCaseInsensitive) }, }, ProdTabEntry{ String: `MlrvalOrFunction : int_literal << dsl.NewASTNode(X[0], dsl.NodeTypeIntLiteral) >>`, Id: "MlrvalOrFunction", NTType: 62, Index: 218, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNode(X[0], dsl.NodeTypeIntLiteral) }, }, ProdTabEntry{ String: `MlrvalOrFunction : float_literal << dsl.NewASTNode(X[0], dsl.NodeTypeFloatLiteral) >>`, Id: "MlrvalOrFunction", NTType: 62, Index: 219, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNode(X[0], dsl.NodeTypeFloatLiteral) }, }, ProdTabEntry{ String: `MlrvalOrFunction : boolean_literal << dsl.NewASTNode(X[0], dsl.NodeTypeBoolLiteral) >>`, Id: "MlrvalOrFunction", NTType: 62, Index: 220, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNode(X[0], dsl.NodeTypeBoolLiteral) }, }, ProdTabEntry{ String: `MlrvalOrFunction : null_literal << dsl.NewASTNode(X[0], dsl.NodeTypeNullLiteral) >>`, Id: "MlrvalOrFunction", NTType: 62, Index: 221, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNode(X[0], dsl.NodeTypeNullLiteral) }, }, ProdTabEntry{ String: `MlrvalOrFunction : inf_literal << dsl.NewASTNode(X[0], dsl.NodeTypeFloatLiteral) >>`, Id: "MlrvalOrFunction", NTType: 62, Index: 222, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNode(X[0], dsl.NodeTypeFloatLiteral) }, }, ProdTabEntry{ String: `MlrvalOrFunction : nan_literal << dsl.NewASTNode(X[0], dsl.NodeTypeFloatLiteral) >>`, Id: "MlrvalOrFunction", NTType: 62, Index: 223, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNode(X[0], dsl.NodeTypeFloatLiteral) }, }, ProdTabEntry{ String: `MlrvalOrFunction : const_M_PI << dsl.NewASTNode( X[0], dsl.NodeTypeConstant, ) >>`, Id: "MlrvalOrFunction", NTType: 62, Index: 224, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNode( X[0], dsl.NodeTypeConstant, ) }, }, ProdTabEntry{ String: `MlrvalOrFunction : const_M_E << dsl.NewASTNode( X[0], dsl.NodeTypeConstant, ) >>`, Id: "MlrvalOrFunction", NTType: 62, Index: 225, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNode( X[0], dsl.NodeTypeConstant, ) }, }, ProdTabEntry{ String: `MlrvalOrFunction : panic << dsl.NewASTNode(X[0], dsl.NodeTypePanic) >>`, Id: "MlrvalOrFunction", NTType: 62, Index: 226, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNode(X[0], dsl.NodeTypePanic) }, }, ProdTabEntry{ String: `MlrvalOrFunction : ArrayLiteral << >>`, Id: "MlrvalOrFunction", NTType: 62, Index: 227, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `ArrayLiteral : "[" "]" << dsl.NewASTNodeZary( dsl.NewASTToken("[]", X[0]), dsl.NodeTypeArrayLiteral, ) >>`, Id: "ArrayLiteral", NTType: 63, Index: 228, NumSymbols: 2, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeZary( dsl.NewASTToken("[]", X[0]), dsl.NodeTypeArrayLiteral, ) }, }, ProdTabEntry{ String: `ArrayLiteral : "[" ArrayLiteralElements "]" << dsl.AdoptChildren( dsl.NewASTNodeNestable( dsl.NewASTToken("[]", X[0]), dsl.NodeTypeArrayLiteral, ), X[1], ) >>`, Id: "ArrayLiteral", NTType: 63, Index: 229, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.AdoptChildren( dsl.NewASTNodeNestable( dsl.NewASTToken("[]", X[0]), dsl.NodeTypeArrayLiteral, ), X[1], ) }, }, ProdTabEntry{ String: `ArrayLiteralElements : Rvalue << dsl.NewASTNodeUnary( nil, X[0], dsl.NodeTypeArrayLiteral, ) >>`, Id: "ArrayLiteralElements", NTType: 64, Index: 230, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeUnary( nil, X[0], dsl.NodeTypeArrayLiteral, ) }, }, ProdTabEntry{ String: `ArrayLiteralElements : Rvalue "," << dsl.NewASTNodeUnary( nil, X[0], dsl.NodeTypeArrayLiteral, ) >>`, Id: "ArrayLiteralElements", NTType: 64, Index: 231, NumSymbols: 2, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeUnary( nil, X[0], dsl.NodeTypeArrayLiteral, ) }, }, ProdTabEntry{ String: `ArrayLiteralElements : Rvalue "," ArrayLiteralElements << dsl.PrependChild( X[2], X[0], ) >>`, Id: "ArrayLiteralElements", NTType: 64, Index: 232, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.PrependChild( X[2], X[0], ) }, }, ProdTabEntry{ String: `MlrvalOrFunction : MapLiteral << >>`, Id: "MlrvalOrFunction", NTType: 62, Index: 233, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `MapLiteral : "{" "}" << dsl.NewASTNodeZary( dsl.NewASTToken("{}", X[0]), dsl.NodeTypeMapLiteral, ) >>`, Id: "MapLiteral", NTType: 65, Index: 234, NumSymbols: 2, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeZary( dsl.NewASTToken("{}", X[0]), dsl.NodeTypeMapLiteral, ) }, }, ProdTabEntry{ String: `MapLiteral : "{" MapLiteralKeyValuePairs "}" << dsl.AdoptChildren( dsl.NewASTNodeNestable( dsl.NewASTToken("{}", X[0]), dsl.NodeTypeMapLiteral, ), X[1], ) >>`, Id: "MapLiteral", NTType: 65, Index: 235, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.AdoptChildren( dsl.NewASTNodeNestable( dsl.NewASTToken("{}", X[0]), dsl.NodeTypeMapLiteral, ), X[1], ) }, }, ProdTabEntry{ String: `MapLiteralKeyValuePairs : MapLiteralKeyValuePair << dsl.NewASTNodeUnary( nil, X[0], dsl.NodeTypeMapLiteral, ) >>`, Id: "MapLiteralKeyValuePairs", NTType: 66, Index: 236, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeUnary( nil, X[0], dsl.NodeTypeMapLiteral, ) }, }, ProdTabEntry{ String: `MapLiteralKeyValuePairs : MapLiteralKeyValuePair "," << dsl.NewASTNodeUnary( nil, X[0], dsl.NodeTypeMapLiteral, ) >>`, Id: "MapLiteralKeyValuePairs", NTType: 66, Index: 237, NumSymbols: 2, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeUnary( nil, X[0], dsl.NodeTypeMapLiteral, ) }, }, ProdTabEntry{ String: `MapLiteralKeyValuePairs : MapLiteralKeyValuePair "," MapLiteralKeyValuePairs << dsl.PrependChild( X[2], X[0], ) >>`, Id: "MapLiteralKeyValuePairs", NTType: 66, Index: 238, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.PrependChild( X[2], X[0], ) }, }, ProdTabEntry{ String: `MapLiteralKeyValuePair : Rvalue ":" Rvalue << dsl.NewASTNodeBinary( X[1], X[0], X[2], dsl.NodeTypeMapLiteralKeyValuePair, ) >>`, Id: "MapLiteralKeyValuePair", NTType: 67, Index: 239, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary( X[1], X[0], X[2], dsl.NodeTypeMapLiteralKeyValuePair, ) }, }, ProdTabEntry{ String: `MlrvalOrFunction : ContextVariable << >>`, Id: "MlrvalOrFunction", NTType: 62, Index: 240, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `ContextVariable : ctx_IPS << dsl.NewASTNode(X[0], dsl.NodeTypeContextVariable) >>`, Id: "ContextVariable", NTType: 68, Index: 241, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNode(X[0], dsl.NodeTypeContextVariable) }, }, ProdTabEntry{ String: `ContextVariable : ctx_IFS << dsl.NewASTNode(X[0], dsl.NodeTypeContextVariable) >>`, Id: "ContextVariable", NTType: 68, Index: 242, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNode(X[0], dsl.NodeTypeContextVariable) }, }, ProdTabEntry{ String: `ContextVariable : ctx_IRS << dsl.NewASTNode(X[0], dsl.NodeTypeContextVariable) >>`, Id: "ContextVariable", NTType: 68, Index: 243, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNode(X[0], dsl.NodeTypeContextVariable) }, }, ProdTabEntry{ String: `ContextVariable : ctx_OPS << dsl.NewASTNode(X[0], dsl.NodeTypeContextVariable) >>`, Id: "ContextVariable", NTType: 68, Index: 244, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNode(X[0], dsl.NodeTypeContextVariable) }, }, ProdTabEntry{ String: `ContextVariable : ctx_OFS << dsl.NewASTNode(X[0], dsl.NodeTypeContextVariable) >>`, Id: "ContextVariable", NTType: 68, Index: 245, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNode(X[0], dsl.NodeTypeContextVariable) }, }, ProdTabEntry{ String: `ContextVariable : ctx_ORS << dsl.NewASTNode(X[0], dsl.NodeTypeContextVariable) >>`, Id: "ContextVariable", NTType: 68, Index: 246, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNode(X[0], dsl.NodeTypeContextVariable) }, }, ProdTabEntry{ String: `ContextVariable : ctx_FLATSEP << dsl.NewASTNode(X[0], dsl.NodeTypeContextVariable) >>`, Id: "ContextVariable", NTType: 68, Index: 247, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNode(X[0], dsl.NodeTypeContextVariable) }, }, ProdTabEntry{ String: `ContextVariable : ctx_NF << dsl.NewASTNode(X[0], dsl.NodeTypeContextVariable) >>`, Id: "ContextVariable", NTType: 68, Index: 248, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNode(X[0], dsl.NodeTypeContextVariable) }, }, ProdTabEntry{ String: `ContextVariable : ctx_NR << dsl.NewASTNode(X[0], dsl.NodeTypeContextVariable) >>`, Id: "ContextVariable", NTType: 68, Index: 249, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNode(X[0], dsl.NodeTypeContextVariable) }, }, ProdTabEntry{ String: `ContextVariable : ctx_FNR << dsl.NewASTNode(X[0], dsl.NodeTypeContextVariable) >>`, Id: "ContextVariable", NTType: 68, Index: 250, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNode(X[0], dsl.NodeTypeContextVariable) }, }, ProdTabEntry{ String: `ContextVariable : ctx_FILENAME << dsl.NewASTNode(X[0], dsl.NodeTypeContextVariable) >>`, Id: "ContextVariable", NTType: 68, Index: 251, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNode(X[0], dsl.NodeTypeContextVariable) }, }, ProdTabEntry{ String: `ContextVariable : ctx_FILENUM << dsl.NewASTNode(X[0], dsl.NodeTypeContextVariable) >>`, Id: "ContextVariable", NTType: 68, Index: 252, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNode(X[0], dsl.NodeTypeContextVariable) }, }, ProdTabEntry{ String: `MlrvalOrFunction : ENV << >>`, Id: "MlrvalOrFunction", NTType: 62, Index: 253, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `ENV : env "[" Rvalue "]" << dsl.NewASTNodeUnary( X[0], X[2], dsl.NodeTypeEnvironmentVariable, ) >>`, Id: "ENV", NTType: 69, Index: 254, NumSymbols: 4, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeUnary( X[0], X[2], dsl.NodeTypeEnvironmentVariable, ) }, }, ProdTabEntry{ String: `ENV : env "." non_sigil_name << dsl.NewASTNodeUnary( X[0], dsl.NewASTNodeNestable(X[2], dsl.NodeTypeStringLiteral), dsl.NodeTypeEnvironmentVariable, ) >>`, Id: "ENV", NTType: 69, Index: 255, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeUnary( X[0], dsl.NewASTNodeNestable(X[2], dsl.NodeTypeStringLiteral), dsl.NodeTypeEnvironmentVariable, ) }, }, ProdTabEntry{ String: `MlrvalOrFunction : ArrayOrMapIndexAccess << >>`, Id: "MlrvalOrFunction", NTType: 62, Index: 256, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `MlrvalOrFunction : ArrayOrMapPositionalNameAccess << >>`, Id: "MlrvalOrFunction", NTType: 62, Index: 257, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `MlrvalOrFunction : ArrayOrMapPositionalValueAccess << >>`, Id: "MlrvalOrFunction", NTType: 62, Index: 258, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `MlrvalOrFunction : ArraySliceAccess << >>`, Id: "MlrvalOrFunction", NTType: 62, Index: 259, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `ArrayOrMapIndexAccess : MlrvalOrFunction "[" Rvalue "]" << dsl.NewASTNodeBinary( dsl.NewASTToken("[]", X[1]), X[0], X[2], dsl.NodeTypeArrayOrMapIndexAccess, ) >>`, Id: "ArrayOrMapIndexAccess", NTType: 70, Index: 260, NumSymbols: 4, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary( dsl.NewASTToken("[]", X[1]), X[0], X[2], dsl.NodeTypeArrayOrMapIndexAccess, ) }, }, ProdTabEntry{ String: `ArrayOrMapPositionalNameAccess : MlrvalOrFunction "[[" Rvalue "]" "]" << dsl.NewASTNodeBinary( dsl.NewASTToken("[]", X[1]), X[0], X[2], dsl.NodeTypeArrayOrMapPositionalNameAccess, ) >>`, Id: "ArrayOrMapPositionalNameAccess", NTType: 71, Index: 261, NumSymbols: 5, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary( dsl.NewASTToken("[]", X[1]), X[0], X[2], dsl.NodeTypeArrayOrMapPositionalNameAccess, ) }, }, ProdTabEntry{ String: `ArrayOrMapPositionalValueAccess : MlrvalOrFunction "[[[" Rvalue "]" "]" "]" << dsl.NewASTNodeBinary( dsl.NewASTToken("[]", X[1]), X[0], X[2], dsl.NodeTypeArrayOrMapPositionalValueAccess, ) >>`, Id: "ArrayOrMapPositionalValueAccess", NTType: 72, Index: 262, NumSymbols: 6, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary( dsl.NewASTToken("[]", X[1]), X[0], X[2], dsl.NodeTypeArrayOrMapPositionalValueAccess, ) }, }, ProdTabEntry{ String: `ArraySliceAccess : MlrvalOrFunction "[" Rvalue ":" Rvalue "]" << dsl.NewASTNodeTernary( dsl.NewASTToken("[]", X[1]), X[0], X[2], X[4], dsl.NodeTypeArraySliceAccess, ) >>`, Id: "ArraySliceAccess", NTType: 73, Index: 263, NumSymbols: 6, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeTernary( dsl.NewASTToken("[]", X[1]), X[0], X[2], X[4], dsl.NodeTypeArraySliceAccess, ) }, }, ProdTabEntry{ String: `ArraySliceAccess : MlrvalOrFunction "[" ":" Rvalue "]" << dsl.NewASTNodeTernary( dsl.NewASTToken("[]", X[1]), X[0], dsl.NewASTNodeNestable( X[2], dsl.NodeTypeArraySliceEmptyLowerIndex, ), X[3], dsl.NodeTypeArraySliceAccess, ) >>`, Id: "ArraySliceAccess", NTType: 73, Index: 264, NumSymbols: 5, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeTernary( dsl.NewASTToken("[]", X[1]), X[0], dsl.NewASTNodeNestable( X[2], dsl.NodeTypeArraySliceEmptyLowerIndex, ), X[3], dsl.NodeTypeArraySliceAccess, ) }, }, ProdTabEntry{ String: `ArraySliceAccess : MlrvalOrFunction "[" Rvalue ":" "]" << dsl.NewASTNodeTernary( dsl.NewASTToken("[]", X[1]), X[0], X[2], dsl.NewASTNodeNestable( X[3], dsl.NodeTypeArraySliceEmptyUpperIndex, ), dsl.NodeTypeArraySliceAccess, ) >>`, Id: "ArraySliceAccess", NTType: 73, Index: 265, NumSymbols: 5, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeTernary( dsl.NewASTToken("[]", X[1]), X[0], X[2], dsl.NewASTNodeNestable( X[3], dsl.NodeTypeArraySliceEmptyUpperIndex, ), dsl.NodeTypeArraySliceAccess, ) }, }, ProdTabEntry{ String: `ArraySliceAccess : MlrvalOrFunction "[" ":" "]" << dsl.NewASTNodeTernary( dsl.NewASTToken("[]", X[1]), X[0], dsl.NewASTNodeNestable( X[2], dsl.NodeTypeArraySliceEmptyLowerIndex, ), dsl.NewASTNodeNestable( X[2], dsl.NodeTypeArraySliceEmptyUpperIndex, ), dsl.NodeTypeArraySliceAccess, ) >>`, Id: "ArraySliceAccess", NTType: 73, Index: 266, NumSymbols: 4, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeTernary( dsl.NewASTToken("[]", X[1]), X[0], dsl.NewASTNodeNestable( X[2], dsl.NodeTypeArraySliceEmptyLowerIndex, ), dsl.NewASTNodeNestable( X[2], dsl.NodeTypeArraySliceEmptyUpperIndex, ), dsl.NodeTypeArraySliceAccess, ) }, }, ProdTabEntry{ String: `MlrvalOrFunction : FunctionCallsite << >>`, Id: "MlrvalOrFunction", NTType: 62, Index: 267, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `FunctionCallsite : FunctionName "(" ")" << dsl.NewASTNodeZary( X[0], dsl.NodeTypeFunctionCallsite, ) >>`, Id: "FunctionCallsite", NTType: 74, Index: 268, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeZary( X[0], dsl.NodeTypeFunctionCallsite, ) }, }, ProdTabEntry{ String: `FunctionCallsite : FunctionName "(" FcnArgs ")" << dsl.AdoptChildren( dsl.NewASTNodeNestable( X[0], dsl.NodeTypeFunctionCallsite, ), X[2], ) >>`, Id: "FunctionCallsite", NTType: 74, Index: 269, NumSymbols: 4, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.AdoptChildren( dsl.NewASTNodeNestable( X[0], dsl.NodeTypeFunctionCallsite, ), X[2], ) }, }, ProdTabEntry{ String: `FunctionName : non_sigil_name << >>`, Id: "FunctionName", NTType: 75, Index: 270, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `FunctionName : int << >>`, Id: "FunctionName", NTType: 75, Index: 271, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `FunctionName : float << >>`, Id: "FunctionName", NTType: 75, Index: 272, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `FcnArgs : Rvalue << dsl.NewASTNodeUnary( nil, X[0], dsl.NodeTypeFunctionCallsite, ) >>`, Id: "FcnArgs", NTType: 76, Index: 273, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeUnary( nil, X[0], dsl.NodeTypeFunctionCallsite, ) }, }, ProdTabEntry{ String: `FcnArgs : Rvalue "," << dsl.NewASTNodeUnary( nil, X[0], dsl.NodeTypeFunctionCallsite, ) >>`, Id: "FcnArgs", NTType: 76, Index: 274, NumSymbols: 2, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeUnary( nil, X[0], dsl.NodeTypeFunctionCallsite, ) }, }, ProdTabEntry{ String: `FcnArgs : Rvalue "," FcnArgs << dsl.PrependChild( X[2], X[0], ) >>`, Id: "FcnArgs", NTType: 76, Index: 275, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.PrependChild( X[2], X[0], ) }, }, ProdTabEntry{ String: `SubroutineCallsite : call SubroutineName "(" ")" << dsl.NewASTNodeZary( X[1], dsl.NodeTypeSubroutineCallsite, ) >>`, Id: "SubroutineCallsite", NTType: 77, Index: 276, NumSymbols: 4, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeZary( X[1], dsl.NodeTypeSubroutineCallsite, ) }, }, ProdTabEntry{ String: `SubroutineCallsite : call SubroutineName "(" FcnArgs ")" << dsl.AdoptChildren( dsl.NewASTNodeNestable( X[1], dsl.NodeTypeSubroutineCallsite, ), X[3], ) >>`, Id: "SubroutineCallsite", NTType: 77, Index: 277, NumSymbols: 5, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.AdoptChildren( dsl.NewASTNodeNestable( X[1], dsl.NodeTypeSubroutineCallsite, ), X[3], ) }, }, ProdTabEntry{ String: `SubroutineName : non_sigil_name << >>`, Id: "SubroutineName", NTType: 78, Index: 278, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `BracefulStatement : BeginBlock << >>`, Id: "BracefulStatement", NTType: 79, Index: 279, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `BracefulStatement : EndBlock << >>`, Id: "BracefulStatement", NTType: 79, Index: 280, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `BracefulStatement : CondBlock << >>`, Id: "BracefulStatement", NTType: 79, Index: 281, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `BracefulStatement : IfChain << >>`, Id: "BracefulStatement", NTType: 79, Index: 282, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `BracefulStatement : WhileLoop << >>`, Id: "BracefulStatement", NTType: 79, Index: 283, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `BracefulStatement : ForLoop << >>`, Id: "BracefulStatement", NTType: 79, Index: 284, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `BracefulStatement : NamedFunctionDefinition << >>`, Id: "BracefulStatement", NTType: 79, Index: 285, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `BracefulStatement : SubroutineDefinition << >>`, Id: "BracefulStatement", NTType: 79, Index: 286, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `BeginBlock : begin StatementBlockInBraces << dsl.NewASTNodeUnary(nil, X[1], dsl.NodeTypeBeginBlock) >>`, Id: "BeginBlock", NTType: 80, Index: 287, NumSymbols: 2, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeUnary(nil, X[1], dsl.NodeTypeBeginBlock) }, }, ProdTabEntry{ String: `EndBlock : end StatementBlockInBraces << dsl.NewASTNodeUnary(nil, X[1], dsl.NodeTypeEndBlock) >>`, Id: "EndBlock", NTType: 81, Index: 288, NumSymbols: 2, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeUnary(nil, X[1], dsl.NodeTypeEndBlock) }, }, ProdTabEntry{ String: `CondBlock : Rvalue StatementBlockInBraces << dsl.NewASTNodeBinary(nil, X[0], X[1], dsl.NodeTypeCondBlock) >>`, Id: "CondBlock", NTType: 82, Index: 289, NumSymbols: 2, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary(nil, X[0], X[1], dsl.NodeTypeCondBlock) }, }, ProdTabEntry{ String: `IfChain : IfElifStar << >>`, Id: "IfChain", NTType: 83, Index: 290, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `IfChain : IfElifStar ElseBlock << dsl.AppendChild(X[0], X[1]) >>`, Id: "IfChain", NTType: 83, Index: 291, NumSymbols: 2, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.AppendChild(X[0], X[1]) }, }, ProdTabEntry{ String: `IfElifStar : IfBlock << dsl.NewASTNodeUnary(nil, X[0], dsl.NodeTypeIfChain) >>`, Id: "IfElifStar", NTType: 84, Index: 292, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeUnary(nil, X[0], dsl.NodeTypeIfChain) }, }, ProdTabEntry{ String: `IfElifStar : IfElifStar ElifBlock << dsl.AppendChild(X[0], X[1]) >>`, Id: "IfElifStar", NTType: 84, Index: 293, NumSymbols: 2, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.AppendChild(X[0], X[1]) }, }, ProdTabEntry{ String: `IfBlock : if "(" Rvalue ")" StatementBlockInBraces << dsl.NewASTNodeBinary(X[0], X[2], X[4], dsl.NodeTypeIfItem) >>`, Id: "IfBlock", NTType: 85, Index: 294, NumSymbols: 5, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary(X[0], X[2], X[4], dsl.NodeTypeIfItem) }, }, ProdTabEntry{ String: `ElifBlock : elif "(" Rvalue ")" StatementBlockInBraces << dsl.NewASTNodeBinary(X[0], X[2], X[4], dsl.NodeTypeIfItem) >>`, Id: "ElifBlock", NTType: 86, Index: 295, NumSymbols: 5, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary(X[0], X[2], X[4], dsl.NodeTypeIfItem) }, }, ProdTabEntry{ String: `ElseBlock : else StatementBlockInBraces << dsl.NewASTNodeUnary(X[0], X[1], dsl.NodeTypeIfItem) >>`, Id: "ElseBlock", NTType: 87, Index: 296, NumSymbols: 2, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeUnary(X[0], X[1], dsl.NodeTypeIfItem) }, }, ProdTabEntry{ String: `WhileLoop : while "(" Rvalue ")" StatementBlockInBraces << dsl.NewASTNodeBinary(X[0], X[2], X[4], dsl.NodeTypeWhileLoop) >>`, Id: "WhileLoop", NTType: 88, Index: 297, NumSymbols: 5, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary(X[0], X[2], X[4], dsl.NodeTypeWhileLoop) }, }, ProdTabEntry{ String: `DoWhileLoop : do StatementBlockInBraces while "(" Rvalue ")" << dsl.NewASTNodeBinary(X[0], X[1], X[4], dsl.NodeTypeDoWhileLoop) >>`, Id: "DoWhileLoop", NTType: 89, Index: 298, NumSymbols: 6, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary(X[0], X[1], X[4], dsl.NodeTypeDoWhileLoop) }, }, ProdTabEntry{ String: `ForLoop : ForLoopOneVariable << >>`, Id: "ForLoop", NTType: 90, Index: 299, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `ForLoop : ForLoopTwoVariable << >>`, Id: "ForLoop", NTType: 90, Index: 300, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `ForLoop : ForLoopMultivariable << >>`, Id: "ForLoop", NTType: 90, Index: 301, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `ForLoop : TripleForLoop << >>`, Id: "ForLoop", NTType: 90, Index: 302, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `ForLoopOneVariable : for "(" LocalVariable in Rvalue ")" StatementBlockInBraces << dsl.NewASTNodeTernary( X[0], // "for" X[2], // k, etc. X[4], // $*, etc. X[6], // { ... } dsl.NodeTypeForLoopOneVariable, ); >>`, Id: "ForLoopOneVariable", NTType: 91, Index: 303, NumSymbols: 7, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeTernary( X[0], // "for" X[2], // k, etc. X[4], // $*, etc. X[6], // { ... } dsl.NodeTypeForLoopOneVariable, ) }, }, ProdTabEntry{ String: `ForLoopTwoVariable : for "(" LocalVariable "," LocalVariable in Rvalue ")" StatementBlockInBraces << dsl.NewASTNodeQuaternary( X[0], // "for" X[2], // k, etc. X[4], // v, etc. X[6], // $*, etc. X[8], // { ... } dsl.NodeTypeForLoopTwoVariable, ); >>`, Id: "ForLoopTwoVariable", NTType: 92, Index: 304, NumSymbols: 9, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeQuaternary( X[0], // "for" X[2], // k, etc. X[4], // v, etc. X[6], // $*, etc. X[8], // { ... } dsl.NodeTypeForLoopTwoVariable, ) }, }, ProdTabEntry{ String: `ForLoopMultivariable : for "(" "(" MultiIndex ")" "," LocalVariable in Rvalue ")" StatementBlockInBraces << dsl.NewASTNodeQuaternary( X[0], // "for" X[3], // (k1, k2), etc. X[6], // v, etc. X[8], // $*, etc. X[10], // { ... } dsl.NodeTypeForLoopMultivariable, ); >>`, Id: "ForLoopMultivariable", NTType: 93, Index: 305, NumSymbols: 11, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeQuaternary( X[0], // "for" X[3], // (k1, k2), etc. X[6], // v, etc. X[8], // $*, etc. X[10], // { ... } dsl.NodeTypeForLoopMultivariable, ) }, }, ProdTabEntry{ String: `MultiIndex : LocalVariable "," LocalVariable << dsl.NewASTNodeBinary( nil, X[0], X[2], dsl.NodeTypeParameterList, ) >>`, Id: "MultiIndex", NTType: 94, Index: 306, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary( nil, X[0], X[2], dsl.NodeTypeParameterList, ) }, }, ProdTabEntry{ String: `MultiIndex : MultiIndex "," LocalVariable << dsl.AppendChild( X[0], X[2], ) >>`, Id: "MultiIndex", NTType: 94, Index: 307, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.AppendChild( X[0], X[2], ) }, }, ProdTabEntry{ String: `TripleForLoop : for "(" TripleForStart ";" TripleForContinuation ";" TripleForUpdate ")" StatementBlockInBraces << dsl.NewASTNodeQuaternary( X[0], // for X[2], // start X[4], // continuation X[6], // update X[8], // body dsl.NodeTypeTripleForLoop, ); >>`, Id: "TripleForLoop", NTType: 95, Index: 308, NumSymbols: 9, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeQuaternary( X[0], // for X[2], // start X[4], // continuation X[6], // update X[8], // body dsl.NodeTypeTripleForLoop, ) }, }, ProdTabEntry{ String: `TripleForStart : empty << dsl.NewASTNodeZary(nil, dsl.NodeTypeStatementBlock) >>`, Id: "TripleForStart", NTType: 96, Index: 309, NumSymbols: 0, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeZary(nil, dsl.NodeTypeStatementBlock) }, }, ProdTabEntry{ String: `TripleForStart : Assignment << dsl.NewASTNodeUnary(nil, X[0], dsl.NodeTypeStatementBlock) >>`, Id: "TripleForStart", NTType: 96, Index: 310, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeUnary(nil, X[0], dsl.NodeTypeStatementBlock) }, }, ProdTabEntry{ String: `TripleForStart : TripleForStart "," Assignment << dsl.AppendChild(X[0], X[2]) >>`, Id: "TripleForStart", NTType: 96, Index: 311, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.AppendChild(X[0], X[2]) }, }, ProdTabEntry{ String: `TripleForContinuation : empty << dsl.NewASTNodeZary(nil, dsl.NodeTypeStatementBlock) >>`, Id: "TripleForContinuation", NTType: 97, Index: 312, NumSymbols: 0, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeZary(nil, dsl.NodeTypeStatementBlock) }, }, ProdTabEntry{ String: `TripleForContinuation : TripleForContinuationItem << dsl.NewASTNodeUnary(nil, X[0], dsl.NodeTypeStatementBlock) >>`, Id: "TripleForContinuation", NTType: 97, Index: 313, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeUnary(nil, X[0], dsl.NodeTypeStatementBlock) }, }, ProdTabEntry{ String: `TripleForContinuation : TripleForContinuation "," TripleForContinuationItem << dsl.AppendChild(X[0], X[2]) >>`, Id: "TripleForContinuation", NTType: 97, Index: 314, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.AppendChild(X[0], X[2]) }, }, ProdTabEntry{ String: `TripleForContinuationItem : Assignment << >>`, Id: "TripleForContinuationItem", NTType: 98, Index: 315, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `TripleForContinuationItem : BareBoolean << >>`, Id: "TripleForContinuationItem", NTType: 98, Index: 316, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `TripleForUpdate : empty << dsl.NewASTNodeZary(nil, dsl.NodeTypeStatementBlock) >>`, Id: "TripleForUpdate", NTType: 99, Index: 317, NumSymbols: 0, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeZary(nil, dsl.NodeTypeStatementBlock) }, }, ProdTabEntry{ String: `TripleForUpdate : Assignment << dsl.NewASTNodeUnary(nil, X[0], dsl.NodeTypeStatementBlock) >>`, Id: "TripleForUpdate", NTType: 99, Index: 318, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeUnary(nil, X[0], dsl.NodeTypeStatementBlock) }, }, ProdTabEntry{ String: `TripleForUpdate : TripleForUpdate "," Assignment << dsl.AppendChild(X[0], X[2]) >>`, Id: "TripleForUpdate", NTType: 99, Index: 319, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.AppendChild(X[0], X[2]) }, }, ProdTabEntry{ String: `BreakStatement : break << dsl.NewASTNodeZary(X[0], dsl.NodeTypeBreak) >>`, Id: "BreakStatement", NTType: 100, Index: 320, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeZary(X[0], dsl.NodeTypeBreak) }, }, ProdTabEntry{ String: `ContinueStatement : continue << dsl.NewASTNodeZary(X[0], dsl.NodeTypeContinue) >>`, Id: "ContinueStatement", NTType: 101, Index: 321, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeZary(X[0], dsl.NodeTypeContinue) }, }, ProdTabEntry{ String: `NamedFunctionDefinition : func non_sigil_name "(" FuncOrSubrParameterList ")" StatementBlockInBraces << dsl.NewASTNodeBinary( X[1], X[3], // parameter list X[5], // { ... } dsl.NodeTypeNamedFunctionDefinition, ); >>`, Id: "NamedFunctionDefinition", NTType: 102, Index: 322, NumSymbols: 6, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary( X[1], X[3], // parameter list X[5], // { ... } dsl.NodeTypeNamedFunctionDefinition, ) }, }, ProdTabEntry{ String: `NamedFunctionDefinition : func non_sigil_name "(" FuncOrSubrParameterList ")" ":" Typedecl StatementBlockInBraces << dsl.NewASTNodeTernary( X[1], X[3], // parameter list X[7], // {...} X[6], // return type dsl.NodeTypeNamedFunctionDefinition, ); >>`, Id: "NamedFunctionDefinition", NTType: 102, Index: 323, NumSymbols: 8, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeTernary( X[1], X[3], // parameter list X[7], // {...} X[6], // return type dsl.NodeTypeNamedFunctionDefinition, ) }, }, ProdTabEntry{ String: `UnnamedFunctionDefinition : func "(" FuncOrSubrParameterList ")" StatementBlockInBraces << dsl.NewASTNodeBinary( X[0], X[2], // parameter list X[4], // { ... } dsl.NodeTypeUnnamedFunctionDefinition, ); >>`, Id: "UnnamedFunctionDefinition", NTType: 103, Index: 324, NumSymbols: 5, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary( X[0], X[2], // parameter list X[4], // { ... } dsl.NodeTypeUnnamedFunctionDefinition, ) }, }, ProdTabEntry{ String: `UnnamedFunctionDefinition : func "(" FuncOrSubrParameterList ")" ":" Typedecl StatementBlockInBraces << dsl.NewASTNodeTernary( X[0], X[2], // parameter list X[6], // {...} X[5], // return type dsl.NodeTypeUnnamedFunctionDefinition, ); >>`, Id: "UnnamedFunctionDefinition", NTType: 103, Index: 325, NumSymbols: 7, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeTernary( X[0], X[2], // parameter list X[6], // {...} X[5], // return type dsl.NodeTypeUnnamedFunctionDefinition, ) }, }, ProdTabEntry{ String: `SubroutineDefinition : subr non_sigil_name "(" FuncOrSubrParameterList ")" StatementBlockInBraces << dsl.NewASTNodeBinary( X[1], X[3], // parameter list X[5], // { ... } dsl.NodeTypeSubroutineDefinition, ); >>`, Id: "SubroutineDefinition", NTType: 104, Index: 326, NumSymbols: 6, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeBinary( X[1], X[3], // parameter list X[5], // { ... } dsl.NodeTypeSubroutineDefinition, ) }, }, ProdTabEntry{ String: `FuncOrSubrParameterList : empty << dsl.NewASTNodeZary(nil, dsl.NodeTypeParameterList) >>`, Id: "FuncOrSubrParameterList", NTType: 105, Index: 327, NumSymbols: 0, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeZary(nil, dsl.NodeTypeParameterList) }, }, ProdTabEntry{ String: `FuncOrSubrParameterList : FuncOrSubrNonEmptyParameterList << dsl.Wrap(X[0]) >>`, Id: "FuncOrSubrParameterList", NTType: 105, Index: 328, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.Wrap(X[0]) }, }, ProdTabEntry{ String: `FuncOrSubrNonEmptyParameterList : FuncOrSubrParameter << dsl.NewASTNodeUnary(nil, X[0], dsl.NodeTypeParameterList) >>`, Id: "FuncOrSubrNonEmptyParameterList", NTType: 106, Index: 329, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeUnary(nil, X[0], dsl.NodeTypeParameterList) }, }, ProdTabEntry{ String: `FuncOrSubrNonEmptyParameterList : FuncOrSubrParameter "," << dsl.NewASTNodeUnary(nil, X[0], dsl.NodeTypeParameterList) >>`, Id: "FuncOrSubrNonEmptyParameterList", NTType: 106, Index: 330, NumSymbols: 2, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeUnary(nil, X[0], dsl.NodeTypeParameterList) }, }, ProdTabEntry{ String: `FuncOrSubrNonEmptyParameterList : FuncOrSubrParameter "," FuncOrSubrNonEmptyParameterList << dsl.PrependChild(X[2], X[0]) >>`, Id: "FuncOrSubrNonEmptyParameterList", NTType: 106, Index: 331, NumSymbols: 3, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.PrependChild(X[2], X[0]) }, }, ProdTabEntry{ String: `FuncOrSubrParameter : UntypedFuncOrSubrParameterName << dsl.NewASTNodeUnary( nil, X[0], dsl.NodeTypeParameter, ) >>`, Id: "FuncOrSubrParameter", NTType: 107, Index: 332, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeUnary( nil, X[0], dsl.NodeTypeParameter, ) }, }, ProdTabEntry{ String: `FuncOrSubrParameter : TypedFuncOrSubrParameterName << dsl.NewASTNodeUnary( nil, X[0], dsl.NodeTypeParameter, ) >>`, Id: "FuncOrSubrParameter", NTType: 107, Index: 333, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeUnary( nil, X[0], dsl.NodeTypeParameter, ) }, }, ProdTabEntry{ String: `UntypedFuncOrSubrParameterName : non_sigil_name << dsl.NewASTNode(X[0], dsl.NodeTypeParameterName) >>`, Id: "UntypedFuncOrSubrParameterName", NTType: 108, Index: 334, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNode(X[0], dsl.NodeTypeParameterName) }, }, ProdTabEntry{ String: `TypedFuncOrSubrParameterName : Typedecl UntypedFuncOrSubrParameterName << dsl.AppendChild(X[1], X[0]) >>`, Id: "TypedFuncOrSubrParameterName", NTType: 109, Index: 335, NumSymbols: 2, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.AppendChild(X[1], X[0]) }, }, ProdTabEntry{ String: `ReturnStatement : return Rvalue << dsl.NewASTNodeUnary(X[0], X[1], dsl.NodeTypeReturn) >>`, Id: "ReturnStatement", NTType: 110, Index: 336, NumSymbols: 2, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeUnary(X[0], X[1], dsl.NodeTypeReturn) }, }, ProdTabEntry{ String: `ReturnStatement : return << dsl.NewASTNodeZary(X[0], dsl.NodeTypeReturn) >>`, Id: "ReturnStatement", NTType: 110, Index: 337, NumSymbols: 1, ReduceFunc: func(X []Attrib, C interface{}) (Attrib, error) { return dsl.NewASTNodeZary(X[0], dsl.NodeTypeReturn) }, }, }