diff options
author | Guido van Rossum <guido@python.org> | 1990-12-20 15:06:42 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 1990-12-20 15:06:42 (GMT) |
commit | 3f5da24ea304e674a9abbdcffc4d671e32aa70f1 (patch) | |
tree | e932e31cb9381f40b7c87c377638216c043b5cfc /Parser/node.c | |
parent | 226d79eb4a776dd54c9e4544b17deaf928bcef3a (diff) | |
download | cpython-3f5da24ea304e674a9abbdcffc4d671e32aa70f1.zip cpython-3f5da24ea304e674a9abbdcffc4d671e32aa70f1.tar.gz cpython-3f5da24ea304e674a9abbdcffc4d671e32aa70f1.tar.bz2 |
"Compiling" version
Diffstat (limited to 'Parser/node.c')
-rw-r--r-- | Parser/node.c | 34 |
1 files changed, 20 insertions, 14 deletions
diff --git a/Parser/node.c b/Parser/node.c index 264fd9e..024dbd4 100644 --- a/Parser/node.c +++ b/Parser/node.c @@ -1,11 +1,10 @@ /* Parse tree node implementation */ -#include "PROTO.h" -#include "malloc.h" +#include "pgenheaders.h" #include "node.h" node * -newnode(type) +newtree(type) int type; { node *n = NEW(node, 1); @@ -13,6 +12,7 @@ newnode(type) return NULL; n->n_type = type; n->n_str = NULL; + n->n_lineno = 0; n->n_nchildren = 0; n->n_child = NULL; return n; @@ -22,10 +22,11 @@ newnode(type) #define XXXROUNDUP(n) ((n) == 1 ? 1 : ((n) + XXX - 1) / XXX * XXX) node * -addchild(n1, type, str) +addchild(n1, type, str, lineno) register node *n1; int type; char *str; + int lineno; { register int nch = n1->n_nchildren; register int nch1 = nch+1; @@ -41,11 +42,26 @@ addchild(n1, type, str) n = &n1->n_child[n1->n_nchildren++]; n->n_type = type; n->n_str = str; + n->n_lineno = lineno; n->n_nchildren = 0; n->n_child = NULL; return n; } +/* Forward */ +static void freechildren PROTO((node *)); + + +void +freetree(n) + node *n; +{ + if (n != NULL) { + freechildren(n); + DEL(n); + } +} + static void freechildren(n) node *n; @@ -58,13 +74,3 @@ freechildren(n) if (STR(n) != NULL) DEL(STR(n)); } - -void -freenode(n) - node *n; -{ - if (n != NULL) { - freechildren(n); - DEL(n); - } -} |