diff options
author | Peter Mikkelsen <petermikkelsen10@gmail.com> | 2022-01-23 21:16:02 +0000 |
---|---|---|
committer | Peter Mikkelsen <petermikkelsen10@gmail.com> | 2022-01-23 21:16:02 +0000 |
commit | 9a938d3ce26b2d3728d791c0f858acdbd50223b5 (patch) | |
tree | a64151c171f0c289847c83367a678fd3252f2f99 /quadnames.c | |
parent | 3aa88a917e8c44ab088498dcfc18c48e66ceb243 (diff) |
Rework symbol lookup to use lexical scoping, and implement recursive function call via ∇
Diffstat (limited to 'quadnames.c')
-rw-r--r-- | quadnames.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/quadnames.c b/quadnames.c index df98193..fa1b247 100644 --- a/quadnames.c +++ b/quadnames.c @@ -34,7 +34,7 @@ quadnamedatum(QuadnameDef q) d.tag = q.tag; switch(q.tag){ case NameTag: - d.symbol = getsym(currentsymtab, q.name); + d.symbol = getsym(q.name); d.symbol->getfn = q.get; d.symbol->setfn = q.set; d.symbol->undefined = 0; @@ -76,7 +76,7 @@ getio(void) { Datum *d = mallocz(sizeof(Datum), 1); d->tag = ArrayTag; - d->array = mkscalarint(currentsymtab->io); + d->array = mkscalarint(globalIO()); return d; } @@ -86,7 +86,7 @@ setio(Datum new) if(new.tag != ArrayTag || new.array->rank != 0 || new.array->type != AtypeInt || (new.array->intdata[0] != 0 && new.array->intdata[0] != 1)) throwerror(nil, EDomain); else - currentsymtab->io = new.array->intdata[0]; + globalIOset(new.array->intdata[0]); } /* ⎕PP */ @@ -114,7 +114,7 @@ getdiv(void) { Datum *d = mallocz(sizeof(Datum), 1); d->tag = ArrayTag; - d->array = mkscalarint(currentsymtab->div); + d->array = mkscalarint(globalDIV()); return d; } @@ -124,7 +124,7 @@ setdiv(Datum new) if(new.tag != ArrayTag || new.array->rank != 0 || new.array->type != AtypeInt || (new.array->intdata[0] != 0 && new.array->intdata[0] != 1)) throwerror(nil, EDomain); else - currentsymtab->div = new.array->intdata[0]; + globalDIVset(new.array->intdata[0]); } /* ⎕RUN */ |