// Code generated by gocc; DO NOT EDIT. package parser import "github.com/awalterschulze/gographviz/ast" type ( //TODO: change type and variable names to be consistent with other tables ProdTab [numProductions]ProdTabEntry ProdTabEntry struct { String string Id string NTType int Index int NumSymbols int ReduceFunc func([]Attrib) (Attrib, error) } Attrib interface { } ) var productionsTable = ProdTab{ ProdTabEntry{ String: `S' : DotGraph << >>`, Id: "S'", NTType: 0, Index: 0, NumSymbols: 1, ReduceFunc: func(X []Attrib) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `DotGraph : graphx "{" "}" << ast.NewGraph(ast.GRAPH, ast.FALSE, nil, nil) >>`, Id: "DotGraph", NTType: 1, Index: 1, NumSymbols: 3, ReduceFunc: func(X []Attrib) (Attrib, error) { return ast.NewGraph(ast.GRAPH, ast.FALSE, nil, nil) }, }, ProdTabEntry{ String: `DotGraph : strict graphx "{" "}" << ast.NewGraph(ast.GRAPH, ast.TRUE, nil, nil) >>`, Id: "DotGraph", NTType: 1, Index: 2, NumSymbols: 4, ReduceFunc: func(X []Attrib) (Attrib, error) { return ast.NewGraph(ast.GRAPH, ast.TRUE, nil, nil) }, }, ProdTabEntry{ String: `DotGraph : graphx Id "{" "}" << ast.NewGraph(ast.GRAPH, ast.FALSE, X[1], nil) >>`, Id: "DotGraph", NTType: 1, Index: 3, NumSymbols: 4, ReduceFunc: func(X []Attrib) (Attrib, error) { return ast.NewGraph(ast.GRAPH, ast.FALSE, X[1], nil) }, }, ProdTabEntry{ String: `DotGraph : strict graphx Id "{" "}" << ast.NewGraph(ast.GRAPH, ast.TRUE, X[2], nil) >>`, Id: "DotGraph", NTType: 1, Index: 4, NumSymbols: 5, ReduceFunc: func(X []Attrib) (Attrib, error) { return ast.NewGraph(ast.GRAPH, ast.TRUE, X[2], nil) }, }, ProdTabEntry{ String: `DotGraph : graphx "{" StmtList "}" << ast.NewGraph(ast.GRAPH, ast.FALSE, nil, X[2]) >>`, Id: "DotGraph", NTType: 1, Index: 5, NumSymbols: 4, ReduceFunc: func(X []Attrib) (Attrib, error) { return ast.NewGraph(ast.GRAPH, ast.FALSE, nil, X[2]) }, }, ProdTabEntry{ String: `DotGraph : graphx Id "{" StmtList "}" << ast.NewGraph(ast.GRAPH, ast.FALSE, X[1], X[3]) >>`, Id: "DotGraph", NTType: 1, Index: 6, NumSymbols: 5, ReduceFunc: func(X []Attrib) (Attrib, error) { return ast.NewGraph(ast.GRAPH, ast.FALSE, X[1], X[3]) }, }, ProdTabEntry{ String: `DotGraph : strict graphx "{" StmtList "}" << ast.NewGraph(ast.GRAPH, ast.TRUE, nil, X[3]) >>`, Id: "DotGraph", NTType: 1, Index: 7, NumSymbols: 5, ReduceFunc: func(X []Attrib) (Attrib, error) { return ast.NewGraph(ast.GRAPH, ast.TRUE, nil, X[3]) }, }, ProdTabEntry{ String: `DotGraph : strict graphx Id "{" StmtList "}" << ast.NewGraph(ast.GRAPH, ast.TRUE, X[2], X[4]) >>`, Id: "DotGraph", NTType: 1, Index: 8, NumSymbols: 6, ReduceFunc: func(X []Attrib) (Attrib, error) { return ast.NewGraph(ast.GRAPH, ast.TRUE, X[2], X[4]) }, }, ProdTabEntry{ String: `DotGraph : digraph "{" "}" << ast.NewGraph(ast.DIGRAPH, ast.FALSE, nil, nil) >>`, Id: "DotGraph", NTType: 1, Index: 9, NumSymbols: 3, ReduceFunc: func(X []Attrib) (Attrib, error) { return ast.NewGraph(ast.DIGRAPH, ast.FALSE, nil, nil) }, }, ProdTabEntry{ String: `DotGraph : strict digraph "{" "}" << ast.NewGraph(ast.DIGRAPH, ast.TRUE, nil, nil) >>`, Id: "DotGraph", NTType: 1, Index: 10, NumSymbols: 4, ReduceFunc: func(X []Attrib) (Attrib, error) { return ast.NewGraph(ast.DIGRAPH, ast.TRUE, nil, nil) }, }, ProdTabEntry{ String: `DotGraph : digraph Id "{" "}" << ast.NewGraph(ast.DIGRAPH, ast.FALSE, X[1], nil) >>`, Id: "DotGraph", NTType: 1, Index: 11, NumSymbols: 4, ReduceFunc: func(X []Attrib) (Attrib, error) { return ast.NewGraph(ast.DIGRAPH, ast.FALSE, X[1], nil) }, }, ProdTabEntry{ String: `DotGraph : strict digraph Id "{" "}" << ast.NewGraph(ast.DIGRAPH, ast.TRUE, X[2], nil) >>`, Id: "DotGraph", NTType: 1, Index: 12, NumSymbols: 5, ReduceFunc: func(X []Attrib) (Attrib, error) { return ast.NewGraph(ast.DIGRAPH, ast.TRUE, X[2], nil) }, }, ProdTabEntry{ String: `DotGraph : digraph "{" StmtList "}" << ast.NewGraph(ast.DIGRAPH, ast.FALSE, nil, X[2]) >>`, Id: "DotGraph", NTType: 1, Index: 13, NumSymbols: 4, ReduceFunc: func(X []Attrib) (Attrib, error) { return ast.NewGraph(ast.DIGRAPH, ast.FALSE, nil, X[2]) }, }, ProdTabEntry{ String: `DotGraph : digraph Id "{" StmtList "}" << ast.NewGraph(ast.DIGRAPH, ast.FALSE, X[1], X[3]) >>`, Id: "DotGraph", NTType: 1, Index: 14, NumSymbols: 5, ReduceFunc: func(X []Attrib) (Attrib, error) { return ast.NewGraph(ast.DIGRAPH, ast.FALSE, X[1], X[3]) }, }, ProdTabEntry{ String: `DotGraph : strict digraph "{" StmtList "}" << ast.NewGraph(ast.DIGRAPH, ast.TRUE, nil, X[3]) >>`, Id: "DotGraph", NTType: 1, Index: 15, NumSymbols: 5, ReduceFunc: func(X []Attrib) (Attrib, error) { return ast.NewGraph(ast.DIGRAPH, ast.TRUE, nil, X[3]) }, }, ProdTabEntry{ String: `DotGraph : strict digraph Id "{" StmtList "}" << ast.NewGraph(ast.DIGRAPH, ast.TRUE, X[2], X[4]) >>`, Id: "DotGraph", NTType: 1, Index: 16, NumSymbols: 6, ReduceFunc: func(X []Attrib) (Attrib, error) { return ast.NewGraph(ast.DIGRAPH, ast.TRUE, X[2], X[4]) }, }, ProdTabEntry{ String: `StmtList : Stmt1 << ast.NewStmtList(X[0]) >>`, Id: "StmtList", NTType: 2, Index: 17, NumSymbols: 1, ReduceFunc: func(X []Attrib) (Attrib, error) { return ast.NewStmtList(X[0]) }, }, ProdTabEntry{ String: `StmtList : StmtList Stmt1 << ast.AppendStmtList(X[0], X[1]) >>`, Id: "StmtList", NTType: 2, Index: 18, NumSymbols: 2, ReduceFunc: func(X []Attrib) (Attrib, error) { return ast.AppendStmtList(X[0], X[1]) }, }, ProdTabEntry{ String: `Stmt1 : Stmt << X[0], nil >>`, Id: "Stmt1", NTType: 3, Index: 19, NumSymbols: 1, ReduceFunc: func(X []Attrib) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `Stmt1 : Stmt ";" << X[0], nil >>`, Id: "Stmt1", NTType: 3, Index: 20, NumSymbols: 2, ReduceFunc: func(X []Attrib) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `Stmt : Id "=" Id << ast.NewAttr(X[0], X[2]) >>`, Id: "Stmt", NTType: 4, Index: 21, NumSymbols: 3, ReduceFunc: func(X []Attrib) (Attrib, error) { return ast.NewAttr(X[0], X[2]) }, }, ProdTabEntry{ String: `Stmt : NodeStmt << X[0], nil >>`, Id: "Stmt", NTType: 4, Index: 22, NumSymbols: 1, ReduceFunc: func(X []Attrib) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `Stmt : EdgeStmt << X[0], nil >>`, Id: "Stmt", NTType: 4, Index: 23, NumSymbols: 1, ReduceFunc: func(X []Attrib) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `Stmt : AttrStmt << X[0], nil >>`, Id: "Stmt", NTType: 4, Index: 24, NumSymbols: 1, ReduceFunc: func(X []Attrib) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `Stmt : SubGraphStmt << X[0], nil >>`, Id: "Stmt", NTType: 4, Index: 25, NumSymbols: 1, ReduceFunc: func(X []Attrib) (Attrib, error) { return X[0], nil }, }, ProdTabEntry{ String: `AttrStmt : graphx AttrList << ast.NewGraphAttrs(X[1]) >>`, Id: "AttrStmt", NTType: 5, Index: 26, NumSymbols: 2, ReduceFunc: func(X []Attrib) (Attrib, error) { return ast.NewGraphAttrs(X[1]) }, }, ProdTabEntry{ String: `AttrStmt : node AttrList << ast.NewNodeAttrs(X[1]) >>`, Id: "AttrStmt", NTType: 5, Index: 27, NumSymbols: 2, ReduceFunc: func(X []Attrib) (Attrib, error) { return ast.NewNodeAttrs(X[1]) }, }, ProdTabEntry{ String: `AttrStmt : edge AttrList << ast.NewEdgeAttrs(X[1]) >>`, Id: "AttrStmt", NTType: 5, Index: 28, NumSymbols: 2, ReduceFunc: func(X []Attrib) (Attrib, error) { return ast.NewEdgeAttrs(X[1]) }, }, ProdTabEntry{ String: `AttrList : "[" "]" << ast.NewAttrList(nil) >>`, Id: "AttrList", NTType: 6, Index: 29, NumSymbols: 2, ReduceFunc: func(X []Attrib) (Attrib, error) { return ast.NewAttrList(nil) }, }, ProdTabEntry{ String: `AttrList : "[" AList "]" << ast.NewAttrList(X[1]) >>`, Id: "AttrList", NTType: 6, Index: 30, NumSymbols: 3, ReduceFunc: func(X []Attrib) (Attrib, error) { return ast.NewAttrList(X[1]) }, }, ProdTabEntry{ String: `AttrList : AttrList "[" "]" << ast.AppendAttrList(X[0], nil) >>`, Id: "AttrList", NTType: 6, Index: 31, NumSymbols: 3, ReduceFunc: func(X []Attrib) (Attrib, error) { return ast.AppendAttrList(X[0], nil) }, }, ProdTabEntry{ String: `AttrList : AttrList "[" AList "]" << ast.AppendAttrList(X[0], X[2]) >>`, Id: "AttrList", NTType: 6, Index: 32, NumSymbols: 4, ReduceFunc: func(X []Attrib) (Attrib, error) { return ast.AppendAttrList(X[0], X[2]) }, }, ProdTabEntry{ String: `AList : Attr << ast.NewAList(X[0]) >>`, Id: "AList", NTType: 7, Index: 33, NumSymbols: 1, ReduceFunc: func(X []Attrib) (Attrib, error) { return ast.NewAList(X[0]) }, }, ProdTabEntry{ String: `AList : AList Attr << ast.AppendAList(X[0], X[1]) >>`, Id: "AList", NTType: 7, Index: 34, NumSymbols: 2, ReduceFunc: func(X []Attrib) (Attrib, error) { return ast.AppendAList(X[0], X[1]) }, }, ProdTabEntry{ String: `AList : AList "," Attr << ast.AppendAList(X[0], X[2]) >>`, Id: "AList", NTType: 7, Index: 35, NumSymbols: 3, ReduceFunc: func(X []Attrib) (Attrib, error) { return ast.AppendAList(X[0], X[2]) }, }, ProdTabEntry{ String: `Attr : Id << ast.NewAttr(X[0], nil) >>`, Id: "Attr", NTType: 8, Index: 36, NumSymbols: 1, ReduceFunc: func(X []Attrib) (Attrib, error) { return ast.NewAttr(X[0], nil) }, }, ProdTabEntry{ String: `Attr : Id "=" Id << ast.NewAttr(X[0], X[2]) >>`, Id: "Attr", NTType: 8, Index: 37, NumSymbols: 3, ReduceFunc: func(X []Attrib) (Attrib, error) { return ast.NewAttr(X[0], X[2]) }, }, ProdTabEntry{ String: `EdgeStmt : NodeId EdgeRHS << ast.NewEdgeStmt(X[0], X[1], nil) >>`, Id: "EdgeStmt", NTType: 9, Index: 38, NumSymbols: 2, ReduceFunc: func(X []Attrib) (Attrib, error) { return ast.NewEdgeStmt(X[0], X[1], nil) }, }, ProdTabEntry{ String: `EdgeStmt : NodeId EdgeRHS AttrList << ast.NewEdgeStmt(X[0], X[1], X[2]) >>`, Id: "EdgeStmt", NTType: 9, Index: 39, NumSymbols: 3, ReduceFunc: func(X []Attrib) (Attrib, error) { return ast.NewEdgeStmt(X[0], X[1], X[2]) }, }, ProdTabEntry{ String: `EdgeStmt : SubGraphStmt EdgeRHS << ast.NewEdgeStmt(X[0], X[1], nil) >>`, Id: "EdgeStmt", NTType: 9, Index: 40, NumSymbols: 2, ReduceFunc: func(X []Attrib) (Attrib, error) { return ast.NewEdgeStmt(X[0], X[1], nil) }, }, ProdTabEntry{ String: `EdgeStmt : SubGraphStmt EdgeRHS AttrList << ast.NewEdgeStmt(X[0], X[1], X[2]) >>`, Id: "EdgeStmt", NTType: 9, Index: 41, NumSymbols: 3, ReduceFunc: func(X []Attrib) (Attrib, error) { return ast.NewEdgeStmt(X[0], X[1], X[2]) }, }, ProdTabEntry{ String: `EdgeRHS : EdgeOp NodeId << ast.NewEdgeRHS(X[0], X[1]) >>`, Id: "EdgeRHS", NTType: 10, Index: 42, NumSymbols: 2, ReduceFunc: func(X []Attrib) (Attrib, error) { return ast.NewEdgeRHS(X[0], X[1]) }, }, ProdTabEntry{ String: `EdgeRHS : EdgeOp SubGraphStmt << ast.NewEdgeRHS(X[0], X[1]) >>`, Id: "EdgeRHS", NTType: 10, Index: 43, NumSymbols: 2, ReduceFunc: func(X []Attrib) (Attrib, error) { return ast.NewEdgeRHS(X[0], X[1]) }, }, ProdTabEntry{ String: `EdgeRHS : EdgeRHS EdgeOp NodeId << ast.AppendEdgeRHS(X[0], X[1], X[2]) >>`, Id: "EdgeRHS", NTType: 10, Index: 44, NumSymbols: 3, ReduceFunc: func(X []Attrib) (Attrib, error) { return ast.AppendEdgeRHS(X[0], X[1], X[2]) }, }, ProdTabEntry{ String: `EdgeRHS : EdgeRHS EdgeOp SubGraphStmt << ast.AppendEdgeRHS(X[0], X[1], X[2]) >>`, Id: "EdgeRHS", NTType: 10, Index: 45, NumSymbols: 3, ReduceFunc: func(X []Attrib) (Attrib, error) { return ast.AppendEdgeRHS(X[0], X[1], X[2]) }, }, ProdTabEntry{ String: `NodeStmt : NodeId << ast.NewNodeStmt(X[0], nil) >>`, Id: "NodeStmt", NTType: 11, Index: 46, NumSymbols: 1, ReduceFunc: func(X []Attrib) (Attrib, error) { return ast.NewNodeStmt(X[0], nil) }, }, ProdTabEntry{ String: `NodeStmt : NodeId AttrList << ast.NewNodeStmt(X[0], X[1]) >>`, Id: "NodeStmt", NTType: 11, Index: 47, NumSymbols: 2, ReduceFunc: func(X []Attrib) (Attrib, error) { return ast.NewNodeStmt(X[0], X[1]) }, }, ProdTabEntry{ String: `NodeId : Id << ast.NewNodeID(X[0], nil) >>`, Id: "NodeId", NTType: 12, Index: 48, NumSymbols: 1, ReduceFunc: func(X []Attrib) (Attrib, error) { return ast.NewNodeID(X[0], nil) }, }, ProdTabEntry{ String: `NodeId : Id Port << ast.NewNodeID(X[0], X[1]) >>`, Id: "NodeId", NTType: 12, Index: 49, NumSymbols: 2, ReduceFunc: func(X []Attrib) (Attrib, error) { return ast.NewNodeID(X[0], X[1]) }, }, ProdTabEntry{ String: `Port : ":" Id << ast.NewPort(X[1], nil), nil >>`, Id: "Port", NTType: 13, Index: 50, NumSymbols: 2, ReduceFunc: func(X []Attrib) (Attrib, error) { return ast.NewPort(X[1], nil), nil }, }, ProdTabEntry{ String: `Port : ":" Id ":" Id << ast.NewPort(X[1], X[3]), nil >>`, Id: "Port", NTType: 13, Index: 51, NumSymbols: 4, ReduceFunc: func(X []Attrib) (Attrib, error) { return ast.NewPort(X[1], X[3]), nil }, }, ProdTabEntry{ String: `SubGraphStmt : "{" StmtList "}" << ast.NewSubGraph(nil, X[1]) >>`, Id: "SubGraphStmt", NTType: 14, Index: 52, NumSymbols: 3, ReduceFunc: func(X []Attrib) (Attrib, error) { return ast.NewSubGraph(nil, X[1]) }, }, ProdTabEntry{ String: `SubGraphStmt : subgraph "{" StmtList "}" << ast.NewSubGraph(nil, X[2]) >>`, Id: "SubGraphStmt", NTType: 14, Index: 53, NumSymbols: 4, ReduceFunc: func(X []Attrib) (Attrib, error) { return ast.NewSubGraph(nil, X[2]) }, }, ProdTabEntry{ String: `SubGraphStmt : subgraph Id "{" StmtList "}" << ast.NewSubGraph(X[1], X[3]) >>`, Id: "SubGraphStmt", NTType: 14, Index: 54, NumSymbols: 5, ReduceFunc: func(X []Attrib) (Attrib, error) { return ast.NewSubGraph(X[1], X[3]) }, }, ProdTabEntry{ String: `SubGraphStmt : subgraph "{" "}" << ast.NewSubGraph(nil, nil) >>`, Id: "SubGraphStmt", NTType: 14, Index: 55, NumSymbols: 3, ReduceFunc: func(X []Attrib) (Attrib, error) { return ast.NewSubGraph(nil, nil) }, }, ProdTabEntry{ String: `SubGraphStmt : subgraph Id "{" "}" << ast.NewSubGraph(X[1], nil) >>`, Id: "SubGraphStmt", NTType: 14, Index: 56, NumSymbols: 4, ReduceFunc: func(X []Attrib) (Attrib, error) { return ast.NewSubGraph(X[1], nil) }, }, ProdTabEntry{ String: `EdgeOp : "->" << ast.DIRECTED, nil >>`, Id: "EdgeOp", NTType: 15, Index: 57, NumSymbols: 1, ReduceFunc: func(X []Attrib) (Attrib, error) { return ast.DIRECTED, nil }, }, ProdTabEntry{ String: `EdgeOp : "--" << ast.UNDIRECTED, nil >>`, Id: "EdgeOp", NTType: 15, Index: 58, NumSymbols: 1, ReduceFunc: func(X []Attrib) (Attrib, error) { return ast.UNDIRECTED, nil }, }, ProdTabEntry{ String: `Id : id << ast.NewID(X[0]) >>`, Id: "Id", NTType: 16, Index: 59, NumSymbols: 1, ReduceFunc: func(X []Attrib) (Attrib, error) { return ast.NewID(X[0]) }, }, }