History

add hg and python

cinap_lenrek committed 15 years ago

Commit 4bb9e221 parent 987265c3706 files · +1228772 −-233Browse files

Showing the changes to sys/src/cmd/python/Include/node.h (1 of 3706 files). Show all

Unified · Split

sys/src/cmd/python/Include/node.h+40−0
@@ -0,0 +1,40 @@
1+
2+/* Parse tree node interface */
3+
4+#ifndef Py_NODE_H
5+#define Py_NODE_H
6+#ifdef __cplusplus
7+extern "C" {
8+#endif
9+
10+typedef struct _node {
11+ short n_type;
12+ char *n_str;
13+ int n_lineno;
14+ int n_col_offset;
15+ int n_nchildren;
16+ struct _node *n_child;
17+} node;
18+
19+PyAPI_FUNC(node *) PyNode_New(int type);
20+PyAPI_FUNC(int) PyNode_AddChild(node *n, int type,
21+ char *str, int lineno, int col_offset);
22+PyAPI_FUNC(void) PyNode_Free(node *n);
23+
24+/* Node access functions */
25+#define NCH(n) ((n)->n_nchildren)
26+
27+#define CHILD(n, i) (&(n)->n_child[i])
28+#define RCHILD(n, i) (CHILD(n, NCH(n) + i))
29+#define TYPE(n) ((n)->n_type)
30+#define STR(n) ((n)->n_str)
31+
32+/* Assert that the type of a node is what we expect */
33+#define REQ(n, type) assert(TYPE(n) == (type))
34+
35+PyAPI_FUNC(void) PyNode_ListTree(node *);
36+
37+#ifdef __cplusplus
38+}
39+#endif
40+#endif /* !Py_NODE_H */