--- /dev/null
+#ifndef GDEFS_H
+#define GDEFS_H
+
+/* generated by mkdefs; do not edit */
+
+#define Y(i) (1<<(i))
+
+#define V 0x4 /* NODE */
+#define E 0x5 /* EDGE */
+#define G 0x6 /* GRAPH */
+#define O 0x7 /* OBJECT */
+#define TV 0x8 /* TV_ */
+#define YALL (Y(V)|Y(E)|Y(G))
+
+#define V_this 1
+#define V_thisg 2
+#define V_nextg 3
+#define V_targt 4
+#define V_outgraph 5
+#define V_tgtname 6
+#define V_infname 7
+#define V_travroot 8
+#define V_travnext 9
+#define V_travedge 10
+#define V_travtype 11
+#define V_ARGC 12
+#define M_degree 13
+#define M_X 14
+#define M_Y 15
+#define M_head 16
+#define M_tail 17
+#define M_name 18
+#define M_indegree 19
+#define M_outdegree 20
+#define M_root 21
+#define M_parent 22
+#define M_n_edges 23
+#define M_n_nodes 24
+#define M_directed 25
+#define M_strict 26
+#define T_node 27
+#define T_edge 28
+#define T_graph 29
+#define T_obj 30
+#define T_tvtyp 31
+#define A_ARGV 32
+#define F_graph 33
+#define F_subg 34
+#define F_issubg 35
+#define F_fstsubg 36
+#define F_nxtsubg 37
+#define F_node 38
+#define F_addnode 39
+#define F_fstnode 40
+#define F_nxtnode 41
+#define F_nxtnodesg 42
+#define F_isnode 43
+#define F_issubnode 44
+#define F_indegree 45
+#define F_outdegree 46
+#define F_degree 47
+#define F_isin 48
+#define F_edge 49
+#define F_edgesg 50
+#define F_addedge 51
+#define F_opp 52
+#define F_fstout 53
+#define F_nxtout 54
+#define F_fstin 55
+#define F_nxtin 56
+#define F_fstedge 57
+#define F_nxtedge 58
+#define F_fstoutsg 59
+#define F_nxtoutsg 60
+#define F_fstinsg 61
+#define F_nxtinsg 62
+#define F_fstedgesg 63
+#define F_nxtedgesg 64
+#define F_compof 65
+#define F_kindof 66
+#define F_index 67
+#define F_rindex 68
+#define F_isedge 69
+#define F_isedgesg 70
+#define F_issubedge 71
+#define F_length 72
+#define F_match 73
+#define F_write 74
+#define F_writeg 75
+#define F_readg 76
+#define F_fwriteg 77
+#define F_freadg 78
+#define F_openf 79
+#define F_closef 80
+#define F_readl 81
+#define F_induce 82
+#define F_isdirect 83
+#define F_isstrict 84
+#define F_delete 85
+#define F_clone 86
+#define F_cloneG 87
+#define F_copy 88
+#define F_copya 89
+#define F_lock 90
+#define F_nnodes 91
+#define F_nedges 92
+#define F_sqrt 93
+#define F_cos 94
+#define F_sin 95
+#define F_atan2 96
+#define F_exp 97
+#define F_pow 98
+#define F_log 99
+#define F_min 100
+#define F_max 101
+#define F_sys 102
+#define F_xof 103
+#define F_yof 104
+#define F_llof 105
+#define F_urof 106
+#define F_html 107
+#define F_ishtml 108
+#define F_canon 109
+#define F_get 110
+#define F_set 111
+#define F_dget 112
+#define F_dset 113
+#define F_hasattr 114
+#define F_isattr 115
+#define F_fstattr 116
+#define F_nxtattr 117
+#define F_tolower 118
+#define F_toupper 119
+#define F_strcmp 120
+#define F_atoi 121
+#define F_atof 122
+#define F_colorx 123
+#define F_call 124
+#define C_flat 125
+#define C_ne 126
+#define C_en 127
+#define C_bfs 128
+#define C_dfs 129
+#define C_fwd 130
+#define C_rev 131
+#define C_postdfs 132
+#define C_postfwd 133
+#define C_postrev 134
+#define C_prepostdfs 135
+#define C_prepostfwd 136
+#define C_prepostrev 137
+#define C_null 138
+
+#define LAST_V 12
+#define LAST_M 26
+#define MINNAME 1
+#define MAXNAME 138
+
+static Exid_t symbols[] = {
+ EX_ID ( "$", ID, V_this, T_obj, 0),
+ EX_ID ( "$G", ID, V_thisg, T_graph, 0),
+ EX_ID ( "$NG", ID, V_nextg, T_graph, 0),
+ EX_ID ( "$T", ID, V_targt, T_graph, 0),
+ EX_ID ( "$O", ID, V_outgraph, T_graph, 0),
+ EX_ID ( "$tgtname", ID, V_tgtname, STRING, 0),
+ EX_ID ( "$F", ID, V_infname, STRING, 0),
+ EX_ID ( "$tvroot", ID, V_travroot, T_node, 0),
+ EX_ID ( "$tvnext", ID, V_travnext, T_node, 0),
+ EX_ID ( "$tvedge", ID, V_travedge, T_edge, 0),
+ EX_ID ( "$tvtype", ID, V_travtype, T_tvtyp, 0),
+ EX_ID ( "ARGC", ID, V_ARGC, INTEGER, 0),
+ EX_ID ( "degree", ID, M_degree, INTEGER, 0),
+ EX_ID ( "X", ID, M_X, FLOATING, 0),
+ EX_ID ( "Y", ID, M_Y, FLOATING, 0),
+ EX_ID ( "head", ID, M_head, T_node, 0),
+ EX_ID ( "tail", ID, M_tail, T_node, 0),
+ EX_ID ( "name", ID, M_name, STRING, 0),
+ EX_ID ( "indegree", ID, M_indegree, INTEGER, 0),
+ EX_ID ( "outdegree", ID, M_outdegree, INTEGER, 0),
+ EX_ID ( "root", ID, M_root, T_graph, 0),
+ EX_ID ( "parent", ID, M_parent, T_graph, 0),
+ EX_ID ( "n_edges", ID, M_n_edges, INTEGER, 0),
+ EX_ID ( "n_nodes", ID, M_n_nodes, INTEGER, 0),
+ EX_ID ( "directed", ID, M_directed, INTEGER, 0),
+ EX_ID ( "strict", ID, M_strict, INTEGER, 0),
+ EX_ID ( "node_t", DECLARE, T_node, T_node, 0),
+ EX_ID ( "edge_t", DECLARE, T_edge, T_edge, 0),
+ EX_ID ( "graph_t", DECLARE, T_graph, T_graph, 0),
+ EX_ID ( "obj_t", DECLARE, T_obj, T_obj, 0),
+ EX_ID ( "tvtype_t", DECLARE, T_tvtyp, T_tvtyp, 0),
+ EX_ID ( "ARGV", ARRAY, A_ARGV, S|A(1,I), 0),
+ EX_ID ( "graph", FUNCTION, F_graph, G|A(1,S)|A(2,S), 0),
+ EX_ID ( "subg", FUNCTION, F_subg, G|A(1,G)|A(2,S), 0),
+ EX_ID ( "isSubg", FUNCTION, F_issubg, G|A(1,G)|A(2,S), 0),
+ EX_ID ( "fstsubg", FUNCTION, F_fstsubg, G|A(1,G), 0),
+ EX_ID ( "nxtsubg", FUNCTION, F_nxtsubg, G|A(1,G), 0),
+ EX_ID ( "node", FUNCTION, F_node, V|A(1,G)|A(2,S), 0),
+ EX_ID ( "subnode", FUNCTION, F_addnode, V|A(1,G)|A(2,V), 0),
+ EX_ID ( "fstnode", FUNCTION, F_fstnode, V|A(1,G), 0),
+ EX_ID ( "nxtnode", FUNCTION, F_nxtnode, V|A(1,V), 0),
+ EX_ID ( "nxtnode_sg", FUNCTION, F_nxtnodesg, V|A(1,G)|A(2,V), 0),
+ EX_ID ( "isNode", FUNCTION, F_isnode, V|A(1,G)|A(2,S), 0),
+ EX_ID ( "isSubnode", FUNCTION, F_issubnode, I|A(1,G)|A(2,V), 0),
+ EX_ID ( "indegreeOf", FUNCTION, F_indegree, I|A(1,G)|A(2,V), 0),
+ EX_ID ( "outdegreeOf", FUNCTION, F_outdegree, I|A(1,G)|A(2,V), 0),
+ EX_ID ( "degreeOf", FUNCTION, F_degree, I|A(1,G)|A(2,V), 0),
+ EX_ID ( "isIn", FUNCTION, F_isin, I|A(1,G)|A(2,O), 0),
+ EX_ID ( "edge", FUNCTION, F_edge, E|A(1,V)|A(2,V)|A(3,S), 0),
+ EX_ID ( "edge_sg", FUNCTION, F_edgesg, E|A(1,G)|A(2,V)|A(3,V)|A(4,S), 0),
+ EX_ID ( "subedge", FUNCTION, F_addedge, E|A(1,G)|A(2,E), 0),
+ EX_ID ( "opp", FUNCTION, F_opp, V|A(1,E)|A(2,V), 0),
+ EX_ID ( "fstout", FUNCTION, F_fstout, E|A(1,V), 0),
+ EX_ID ( "nxtout", FUNCTION, F_nxtout, E|A(1,E), 0),
+ EX_ID ( "fstin", FUNCTION, F_fstin, E|A(1,V), 0),
+ EX_ID ( "nxtin", FUNCTION, F_nxtin, E|A(1,E), 0),
+ EX_ID ( "fstedge", FUNCTION, F_fstedge, E|A(1,V), 0),
+ EX_ID ( "nxtedge", FUNCTION, F_nxtedge, E|A(1,E)|A(2,V), 0),
+ EX_ID ( "fstout_sg", FUNCTION, F_fstoutsg, E|A(1,G)|A(2,V), 0),
+ EX_ID ( "nxtout_sg", FUNCTION, F_nxtoutsg, E|A(1,G)|A(2,E), 0),
+ EX_ID ( "fstin_sg", FUNCTION, F_fstinsg, E|A(1,G)|A(2,V), 0),
+ EX_ID ( "nxtin_sg", FUNCTION, F_nxtinsg, E|A(1,G)|A(2,E), 0),
+ EX_ID ( "fstedge_sg", FUNCTION, F_fstedgesg, E|A(1,G)|A(2,V), 0),
+ EX_ID ( "nxtedge_sg", FUNCTION, F_nxtedgesg, E|A(1,G)|A(2,E)|A(3,V), 0),
+ EX_ID ( "compOf", FUNCTION, F_compof, G|A(1,G)|A(2,V), 0),
+ EX_ID ( "kindOf", FUNCTION, F_kindof, S|A(1,O), 0),
+ EX_ID ( "index", FUNCTION, F_index, I|A(1,S)|A(2,S), 0),
+ EX_ID ( "rindex", FUNCTION, F_rindex, I|A(1,S)|A(2,S), 0),
+ EX_ID ( "isEdge", FUNCTION, F_isedge, E|A(1,V)|A(2,V)|A(3,S), 0),
+ EX_ID ( "isEdge_sg", FUNCTION, F_isedgesg, E|A(1,G)|A(2,V)|A(3,V)|A(4,S), 0),
+ EX_ID ( "isSubedge", FUNCTION, F_issubedge, I|A(1,G)|A(2,E), 0),
+ EX_ID ( "length", FUNCTION, F_length, I|A(1,S), 0),
+ EX_ID ( "match", FUNCTION, F_match, I|A(1,S)|A(2,S), 0),
+ EX_ID ( "write", FUNCTION, F_write, I|A(1,G), 0),
+ EX_ID ( "writeG", FUNCTION, F_writeg, I|A(1,G)|A(2,S), 0),
+ EX_ID ( "readG", FUNCTION, F_readg, G|A(1,S), 0),
+ EX_ID ( "fwriteG", FUNCTION, F_fwriteg, I|A(1,G)|A(2,I), 0),
+ EX_ID ( "freadG", FUNCTION, F_freadg, G|A(1,I), 0),
+ EX_ID ( "openF", FUNCTION, F_openf, I|A(1,S)|A(2,S), 0),
+ EX_ID ( "closeF", FUNCTION, F_closef, I|A(1,I), 0),
+ EX_ID ( "readL", FUNCTION, F_readl, S|A(1,I), 0),
+ EX_ID ( "induce", FUNCTION, F_induce, I|A(1,G), 0),
+ EX_ID ( "isDirect", FUNCTION, F_isdirect, I|A(1,G), 0),
+ EX_ID ( "isStrict", FUNCTION, F_isstrict, I|A(1,G), 0),
+ EX_ID ( "delete", FUNCTION, F_delete, I|A(1,G)|A(2,O), 0),
+ EX_ID ( "clone", FUNCTION, F_clone, O|A(1,G)|A(2,O), 0),
+ EX_ID ( "cloneG", FUNCTION, F_cloneG, G|A(1,G)|A(2,S), 0),
+ EX_ID ( "copy", FUNCTION, F_copy, O|A(1,G)|A(2,O), 0),
+ EX_ID ( "copyA", FUNCTION, F_copya, I|A(1,O)|A(2,O), 0),
+ EX_ID ( "lock", FUNCTION, F_lock, I|A(1,G)|A(2,I), 0),
+ EX_ID ( "nNodes", FUNCTION, F_nnodes, I|A(1,G), 0),
+ EX_ID ( "nEdges", FUNCTION, F_nedges, I|A(1,G), 0),
+ EX_ID ( "sqrt", FUNCTION, F_sqrt, F|A(1,F), 0),
+ EX_ID ( "cos", FUNCTION, F_cos, F|A(1,F), 0),
+ EX_ID ( "sin", FUNCTION, F_sin, F|A(1,F), 0),
+ EX_ID ( "atan2", FUNCTION, F_atan2, F|A(1,F)|A(2,F), 0),
+ EX_ID ( "exp", FUNCTION, F_exp, F|A(1,F), 0),
+ EX_ID ( "pow", FUNCTION, F_pow, F|A(1,F)|A(2,F), 0),
+ EX_ID ( "log", FUNCTION, F_log, F|A(1,F), 0),
+ EX_ID ( "MIN", FUNCTION, F_min, F|A(1,F)|A(2,F), 0),
+ EX_ID ( "MAX", FUNCTION, F_max, F|A(1,F)|A(2,F), 0),
+ EX_ID ( "system", FUNCTION, F_sys, I|A(1,S), 0),
+ EX_ID ( "xOf", FUNCTION, F_xof, S|A(1,S), 0),
+ EX_ID ( "yOf", FUNCTION, F_yof, S|A(1,S), 0),
+ EX_ID ( "llOf", FUNCTION, F_llof, S|A(1,S), 0),
+ EX_ID ( "urOf", FUNCTION, F_urof, S|A(1,S), 0),
+ EX_ID ( "html", FUNCTION, F_html, S|A(1,G)|A(2,S), 0),
+ EX_ID ( "ishtml", FUNCTION, F_ishtml, I|A(1,S), 0),
+ EX_ID ( "canon", FUNCTION, F_canon, S|A(1,S), 0),
+ EX_ID ( "aget", FUNCTION, F_get, S|A(1,O)|A(2,S), 0),
+ EX_ID ( "aset", FUNCTION, F_set, I|A(1,O)|A(2,S)|A(3,S), 0),
+ EX_ID ( "getDflt", FUNCTION, F_dget, S|A(1,G)|A(2,S)|A(3,S), 0),
+ EX_ID ( "setDflt", FUNCTION, F_dset, I|A(1,G)|A(2,S)|A(3,S)|A(4,S), 0),
+ EX_ID ( "hasAttr", FUNCTION, F_hasattr, I|A(1,O)|A(2,S), 0),
+ EX_ID ( "isAttr", FUNCTION, F_isattr, I|A(1,G)|A(2,S)|A(3,S), 0),
+ EX_ID ( "fstAttr", FUNCTION, F_fstattr, S|A(1,G)|A(2,S), 0),
+ EX_ID ( "nxtAttr", FUNCTION, F_nxtattr, S|A(1,G)|A(2,S)|A(3,S), 0),
+ EX_ID ( "tolower", FUNCTION, F_tolower, S|A(1,S), 0),
+ EX_ID ( "toupper", FUNCTION, F_toupper, S|A(1,S), 0),
+ EX_ID ( "strcmp", FUNCTION, F_strcmp, I|A(1,S)|A(2,S), 0),
+ EX_ID ( "atoi", FUNCTION, F_atoi, I|A(1,S), 0),
+ EX_ID ( "atof", FUNCTION, F_atof, F|A(1,S), 0),
+ EX_ID ( "colorx", FUNCTION, F_colorx, S|A(1,S)|A(2,S), 0),
+ EX_ID ( "call", FUNCTION, F_call, I|A(1,S)|A(2,S), 0),
+ EX_ID ( "TV_flat", CONSTANT, C_flat, T_tvtyp, 0),
+ EX_ID ( "TV_ne", CONSTANT, C_ne, T_tvtyp, 0),
+ EX_ID ( "TV_en", CONSTANT, C_en, T_tvtyp, 0),
+ EX_ID ( "TV_bfs", CONSTANT, C_bfs, T_tvtyp, 0),
+ EX_ID ( "TV_dfs", CONSTANT, C_dfs, T_tvtyp, 0),
+ EX_ID ( "TV_fwd", CONSTANT, C_fwd, T_tvtyp, 0),
+ EX_ID ( "TV_rev", CONSTANT, C_rev, T_tvtyp, 0),
+ EX_ID ( "TV_postdfs", CONSTANT, C_postdfs, T_tvtyp, 0),
+ EX_ID ( "TV_postfwd", CONSTANT, C_postfwd, T_tvtyp, 0),
+ EX_ID ( "TV_postrev", CONSTANT, C_postrev, T_tvtyp, 0),
+ EX_ID ( "TV_prepostdfs", CONSTANT, C_prepostdfs, T_tvtyp, 0),
+ EX_ID ( "TV_prepostfwd", CONSTANT, C_prepostfwd, T_tvtyp, 0),
+ EX_ID ( "TV_prepostrev", CONSTANT, C_prepostrev, T_tvtyp, 0),
+ EX_ID ( "NULL", CONSTANT, C_null, T_obj, 0),
+ EX_ID ( {0}, 0, 0, 0, 0)
+};
+
+static char* typenames[] = {
+ "node_t",
+ "edge_t",
+ "graph_t",
+ "obj_t",
+ "tvtype_t",
+};
+
+#ifdef DEBUG
+static char* gprnames[] = {
+ "",
+ "V_this",
+ "V_thisg",
+ "V_nextg",
+ "V_targt",
+ "V_outgraph",
+ "V_tgtname",
+ "V_infname",
+ "V_travroot",
+ "V_travnext",
+ "V_travedge",
+ "V_travtype",
+ "V_ARGC",
+ "M_degree",
+ "M_X",
+ "M_Y",
+ "M_head",
+ "M_tail",
+ "M_name",
+ "M_indegree",
+ "M_outdegree",
+ "M_root",
+ "M_parent",
+ "M_n_edges",
+ "M_n_nodes",
+ "M_directed",
+ "M_strict",
+ "T_node",
+ "T_edge",
+ "T_graph",
+ "T_obj",
+ "T_tvtyp",
+ "A_ARGV",
+ "F_graph",
+ "F_subg",
+ "F_issubg",
+ "F_fstsubg",
+ "F_nxtsubg",
+ "F_node",
+ "F_addnode",
+ "F_fstnode",
+ "F_nxtnode",
+ "F_nxtnodesg",
+ "F_isnode",
+ "F_issubnode",
+ "F_indegree",
+ "F_outdegree",
+ "F_degree",
+ "F_isin",
+ "F_edge",
+ "F_edgesg",
+ "F_addedge",
+ "F_opp",
+ "F_fstout",
+ "F_nxtout",
+ "F_fstin",
+ "F_nxtin",
+ "F_fstedge",
+ "F_nxtedge",
+ "F_fstoutsg",
+ "F_nxtoutsg",
+ "F_fstinsg",
+ "F_nxtinsg",
+ "F_fstedgesg",
+ "F_nxtedgesg",
+ "F_compof",
+ "F_kindof",
+ "F_index",
+ "F_rindex",
+ "F_isedge",
+ "F_isedgesg",
+ "F_issubedge",
+ "F_length",
+ "F_match",
+ "F_write",
+ "F_writeg",
+ "F_readg",
+ "F_fwriteg",
+ "F_freadg",
+ "F_openf",
+ "F_closef",
+ "F_readl",
+ "F_induce",
+ "F_isdirect",
+ "F_isstrict",
+ "F_delete",
+ "F_clone",
+ "F_cloneG",
+ "F_copy",
+ "F_copya",
+ "F_lock",
+ "F_nnodes",
+ "F_nedges",
+ "F_sqrt",
+ "F_cos",
+ "F_sin",
+ "F_atan2",
+ "F_exp",
+ "F_pow",
+ "F_log",
+ "F_min",
+ "F_max",
+ "F_sys",
+ "F_xof",
+ "F_yof",
+ "F_llof",
+ "F_urof",
+ "F_html",
+ "F_ishtml",
+ "F_canon",
+ "F_get",
+ "F_set",
+ "F_dget",
+ "F_dset",
+ "F_hasattr",
+ "F_isattr",
+ "F_fstattr",
+ "F_nxtattr",
+ "F_tolower",
+ "F_toupper",
+ "F_strcmp",
+ "F_atoi",
+ "F_atof",
+ "F_colorx",
+ "F_call",
+ "C_flat",
+ "C_ne",
+ "C_en",
+ "C_bfs",
+ "C_dfs",
+ "C_fwd",
+ "C_rev",
+ "C_postdfs",
+ "C_postfwd",
+ "C_postrev",
+ "C_prepostdfs",
+ "C_prepostfwd",
+ "C_prepostrev",
+ "C_null",
+};
+#endif
+
+typedef unsigned short tctype;
+
+static tctype tchk[][2] = {
+ { 0, 0 },
+ { 0, YALL },
+ { 0, Y(G) },
+ { 0, Y(G) },
+ { 0, Y(G) },
+ { 0, Y(G) },
+ { 0, Y(S) },
+ { 0, Y(S) },
+ { 0, Y(V) },
+ { 0, Y(V) },
+ { 0, Y(E) },
+ { 0, Y(TV) },
+ { 0, Y(I) },
+ { Y(V), Y(I) },
+ { Y(V), Y(F) },
+ { Y(V), Y(F) },
+ { Y(E), Y(V) },
+ { Y(E), Y(V) },
+ { YALL, Y(S) },
+ { Y(V), Y(I) },
+ { Y(V), Y(I) },
+ { YALL, Y(G) },
+ { Y(G), Y(G) },
+ { Y(G), Y(I) },
+ { Y(G), Y(I) },
+ { Y(G), Y(I) },
+ { Y(G), Y(I) },
+};
+
+#endif