summaryrefslogtreecommitdiff
path: root/quadnames.c
diff options
context:
space:
mode:
authorPeter Mikkelsen <petermikkelsen10@gmail.com>2022-01-23 21:16:02 +0000
committerPeter Mikkelsen <petermikkelsen10@gmail.com>2022-01-23 21:16:02 +0000
commit9a938d3ce26b2d3728d791c0f858acdbd50223b5 (patch)
treea64151c171f0c289847c83367a678fd3252f2f99 /quadnames.c
parent3aa88a917e8c44ab088498dcfc18c48e66ceb243 (diff)
Rework symbol lookup to use lexical scoping, and implement recursive function call via ∇
Diffstat (limited to 'quadnames.c')
-rw-r--r--quadnames.c10
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 */