From 97bc549d4b8bf638946ac4ff3b066941bca9a03b Mon Sep 17 00:00:00 2001 From: rodri Date: Thu, 5 Sep 2024 15:45:27 +0000 Subject: initial compiler work. --- sym.c | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 sym.c (limited to 'sym.c') diff --git a/sym.c b/sym.c new file mode 100644 index 0000000..d84fec5 --- /dev/null +++ b/sym.c @@ -0,0 +1,33 @@ +#include +#include +#include +#include "dat.h" +#include "fns.h" + +static Symbol *symtab; + +Symbol * +install(char *s, int t, double v) +{ + Symbol *sym; + + sym = emalloc(sizeof(Symbol)); + memset(sym, 0, sizeof *sym); + sym->name = estrdup(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; +} -- cgit v1.2.3