diff options
author | Peter Mikkelsen <petermikkelsen10@gmail.com> | 2022-01-11 23:21:05 +0000 |
---|---|---|
committer | Peter Mikkelsen <petermikkelsen10@gmail.com> | 2022-01-11 23:21:05 +0000 |
commit | 37fe04b08b3cae7390f75eb1bb25d8fd4e958384 (patch) | |
tree | 53a6fd51258c5a7113b7bd7fa3766a47a0173070 /symbol.c | |
parent | ba681c740d09deb36587b847a3307c68de933c4c (diff) |
First try at implementing variables
Diffstat (limited to 'symbol.c')
-rw-r--r-- | symbol.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/symbol.c b/symbol.c new file mode 100644 index 0000000..a9d1d1f --- /dev/null +++ b/symbol.c @@ -0,0 +1,31 @@ +#include <u.h> +#include <libc.h> +#include <bio.h> + +#include "apl9.h" + +Symtab *globalsymtab; + +Symbol * +getsym(Symtab *tab, Rune *name) +{ + for(int i = 0; i < tab->nsyms; i++) + if(runestrcmp(tab->syms[i]->name, name) == 0) + return tab->syms[i]; + + tab->nsyms++; + tab->syms = realloc(tab->syms, sizeof(Symbol *) * tab->nsyms); + tab->syms[tab->nsyms-1] = malloc(sizeof(Symbol)); + tab->syms[tab->nsyms-1]->name = runestrdup(name); + tab->syms[tab->nsyms-1]->undefined = 1; + return tab->syms[tab->nsyms-1]; +} + +Symtab * +newsymtab(void) +{ + Symtab *tab = malloc(sizeof(Symtab)); + tab->nsyms = 0; + tab->syms = nil; + return tab; +}
\ No newline at end of file |