summaryrefslogtreecommitdiff
path: root/s3/sym.c
diff options
context:
space:
mode:
Diffstat (limited to 's3/sym.c')
-rw-r--r--s3/sym.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/s3/sym.c b/s3/sym.c
new file mode 100644
index 0000000..8749791
--- /dev/null
+++ b/s3/sym.c
@@ -0,0 +1,31 @@
+#include <u.h>
+#include <libc.h>
+#include "dat.h"
+#include "fns.h"
+
+static Symbol *symtab;
+
+Symbol *
+install(char *s, int t, double v)
+{
+ Symbol *sym;
+
+ sym = emalloc(sizeof(Symbol));
+ sym->name = strdup(s);
+ sym->type = t;
+ sym->u.val = v;
+ sym->next = symtab;
+ symtab = sym;
+ return sym;
+}
+
+Symbol *
+lookup(char *s)
+{
+ Symbol *sym;
+
+ for(sym = symtab; sym != nil; sym = sym->next)
+ if(strcmp(sym->name, s) == 0)
+ return sym;
+ return nil;
+}