summaryrefslogtreecommitdiff
path: root/apl9.h
diff options
context:
space:
mode:
authorPeter Mikkelsen <petermikkelsen10@gmail.com>2022-02-22 11:05:30 +0000
committerPeter Mikkelsen <petermikkelsen10@gmail.com>2022-02-22 11:05:30 +0000
commitdf6c3247c40b05266894d45136dc64f96b0cbac9 (patch)
tree568b29e803bc9e58a1147b64dedb9cbd3b34c13d /apl9.h
parent7c39c4eab3e16c201b22e0bf29e51006f60e99e7 (diff)
Implement lexical scope instead of dynamic scope rules.
Diffstat (limited to 'apl9.h')
-rw-r--r--apl9.h6
1 files changed, 4 insertions, 2 deletions
diff --git a/apl9.h b/apl9.h
index bbba10f..2cf0069 100644
--- a/apl9.h
+++ b/apl9.h
@@ -153,6 +153,7 @@ struct Function
QuadnameDef *quad;
FunctionTrain train;
};
+ DfnFrame *scope;
Array *left;
};
@@ -219,7 +220,8 @@ struct DfnFrame
Array *right;
Datum *lefto;
Datum *righto;
- DfnFrame *prev;
+ DfnFrame *prev; /* prev in the call stack */
+ DfnFrame *chain; /* prev in the lexical scope */
};
struct ThreadData
@@ -279,7 +281,7 @@ Datum *eval(Statement *, int);
Symbol *getsym(Rune *, int);
void initsymtab(void);
DfnFrame *getcurrentdfn(void);
-DfnFrame *pushdfnframe(Rune *, Datum *, Datum *, Array *, Array *);
+DfnFrame *pushdfnframe(Rune *, DfnFrame *, Datum *, Datum *, Array *, Array *);
void popdfnframe(void);
vlong globalIO(void);
void globalIOset(vlong);