]> thyrsus.com Git - cupl.git/commitdiff
Avoid a core dump.
authorEric S. Raymond <esr@thyrsus.com>
Fri, 4 Nov 1994 00:42:17 +0000 (00:42 +0000)
committerEric S. Raymond <esr@thyrsus.com>
Fri, 4 Nov 1994 00:42:17 +0000 (00:42 +0000)
execute.c
interpret.c

index c8ff0a3dcac2f0b12c4fe5653f22730cb3b69a6e..11054f94dd3ebb3f7ce1f8d1b0463099584c700b 100644 (file)
--- a/execute.c
+++ b/execute.c
@@ -13,9 +13,59 @@ handed off to execute().
 *****************************************************************************/
 /*LINTLIBRARY*/
 #include "cupl.h"
+#include "tokens.h"
+
+#define car    u.n.left
+#define cdr    u.n.right
+
+static node *pc;       /* the statement node to evaluate next */
+
+static void cupl_read(node *tp)
+/* evaluate a READ item */
+{
+}
+
+static void cupl_write(node *tp)
+/* evaluate a WRITE item */
+{
+}
+
+static value cupl_eval(node *tree)
+/* recursively evaluate a CUPL parse tree */
+{
+    value      leftside, rightside;
+    node       *np;
+
+    switch(tree->type)
+    {
+    case READ:
+       for_cdr(np, tree->car)
+           cupl_read(np->car);
+       break;
+
+    case WRITE:
+       for_cdr(np, tree->car)
+           cupl_write(np->car);
+       break;
+
+    default:
+       die("unknown node type %d (%s), cannot execute\n",tokdump(tree->type));
+       break;
+    }
+}
 
 void execute(node *tree)
+/* execute a CUPL program described by a parse tree */
 {
+#ifdef FOO
+    node       *next;
+
+    for (pc = tree; pc; pc = next)
+    {
+       next = pc->cdr;
+       (void) cupl_eval(pc->car);
+    }
+#endif /* FOO */
 }
 
 /* execute.c ends here */
index d993deb30843a4700ee951ef7750ab393683aafd..62cbb677fa58f89fd1399c66bd0b6e614ced99f7 100644 (file)
@@ -330,7 +330,7 @@ static void rewrite(node *tree)
                                  endnode->car->car->u.string) == 0)
                {
                    found = TRUE;
-                   np->syminf->endnode = endnode;
+                   sp->car->syminf->endnode = endnode;
                    break;
                }
            if (!found)