summaryrefslogtreecommitdiff
path: root/s3/sym.c
diff options
context:
space:
mode:
authorrodri <rgl@antares-labs.eu>2024-08-31 16:07:15 +0000
committerrodri <rgl@antares-labs.eu>2024-08-31 16:07:15 +0000
commit8cca4d1fe83f792d0f3c5dd897611ea2ff441de0 (patch)
tree45eb5ba6c3d750819a7b2c13ec35a75c23015631 /s3/sym.c
parent53d3939960fe177c1958bce8e93c435cba7cf5e3 (diff)
downloadrhoc-8cca4d1fe83f792d0f3c5dd897611ea2ff441de0.tar.gz
rhoc-8cca4d1fe83f792d0f3c5dd897611ea2ff441de0.tar.bz2
rhoc-8cca4d1fe83f792d0f3c5dd897611ea2ff441de0.zip
stage 3.
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;
+}