diff options
author | rodri <rgl@antares-labs.eu> | 2024-09-05 15:45:27 +0000 |
---|---|---|
committer | rodri <rgl@antares-labs.eu> | 2024-09-05 15:45:27 +0000 |
commit | 97bc549d4b8bf638946ac4ff3b066941bca9a03b (patch) | |
tree | 5bd5ca788c8e3577dda001e0454157c9408ac08f /sym.c | |
parent | 11087295a24b0a8d08897824c7ee9676026fa159 (diff) | |
download | semblance-97bc549d4b8bf638946ac4ff3b066941bca9a03b.tar.gz semblance-97bc549d4b8bf638946ac4ff3b066941bca9a03b.tar.bz2 semblance-97bc549d4b8bf638946ac4ff3b066941bca9a03b.zip |
initial compiler work.
Diffstat (limited to 'sym.c')
-rw-r--r-- | sym.c | 33 |
1 files changed, 33 insertions, 0 deletions
@@ -0,0 +1,33 @@ +#include <u.h> +#include <libc.h> +#include <geometry.h> +#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; +} |