summaryrefslogtreecommitdiffstats
path: root/Parser/node.c
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>1990-12-20 15:06:42 (GMT)
committerGuido van Rossum <guido@python.org>1990-12-20 15:06:42 (GMT)
commit3f5da24ea304e674a9abbdcffc4d671e32aa70f1 (patch)
treee932e31cb9381f40b7c87c377638216c043b5cfc /Parser/node.c
parent226d79eb4a776dd54c9e4544b17deaf928bcef3a (diff)
downloadcpython-3f5da24ea304e674a9abbdcffc4d671e32aa70f1.zip
cpython-3f5da24ea304e674a9abbdcffc4d671e32aa70f1.tar.gz
cpython-3f5da24ea304e674a9abbdcffc4d671e32aa70f1.tar.bz2
"Compiling" version
Diffstat (limited to 'Parser/node.c')
-rw-r--r--Parser/node.c34
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);
- }
-}