WIP: symbols
authorLukas Krickl <lukas@krickl.dev>
Thu, 30 Nov 2023 06:05:53 +0000 (07:05 +0100)
committerLukas Krickl <lukas@krickl.dev>
Thu, 30 Nov 2023 06:05:53 +0000 (07:05 +0100)
src/ulas.c

index d149d5ca1cef5a5615b78e04d14b3f3554a6381f..225ac2e198b6b64da10d3bbb737fb1db02facaab 100644 (file)
@@ -208,7 +208,13 @@ int ulas_isname(const char *tok, unsigned long n) {
 }
 
 struct ulas_tok *ulas_symbolresolve(const char *name, int *rc) {
-  // TODO: implement
+  for (int i = 0; i < ulas.syms.len; i++) {
+    struct ulas_sym *sym = &ulas.syms.buf[i];
+    // when scope is the same as the current one, or scope 0 (global)
+    if ((sym->scope & ulas.scope) == 0 && strcmp(name, sym->name) == 0) {
+      return &sym->tok;
+    }
+  }
   return NULL;
 }