summaryrefslogtreecommitdiff
path: root/MLKEnvironment.m
diff options
context:
space:
mode:
Diffstat (limited to 'MLKEnvironment.m')
-rw-r--r--MLKEnvironment.m17
1 files changed, 16 insertions, 1 deletions
diff --git a/MLKEnvironment.m b/MLKEnvironment.m
index 6011f90..8a7c270 100644
--- a/MLKEnvironment.m
+++ b/MLKEnvironment.m
@@ -48,6 +48,11 @@
return [self initWithParent:nil bindings:bindings];
}
+-(MLKEnvironment *) parent
+{
+ return _parent;
+}
+
-(void) setBinding:(MLKSymbol *)symbol to:(id)value
{
[self setBinding:symbol to:value inEnvironment:self];
@@ -81,7 +86,7 @@
else
[[[MLKUndefinedVariableException alloc] initWithEnvironment:env
variableName:symbol]
- raise];;
+ raise];
return nil; // avoid a stupid compiler warning
}
@@ -96,6 +101,16 @@
[_bindings setObject:value forKey:symbol];
}
+-(MLKEnvironment *) environmentForBinding:(MLKSymbol *)symbol
+{
+ if ([[_bindings allKeys] containsObject:symbol])
+ return self;
+ else if (_parent)
+ return [_parent environmentForBinding:symbol];
+ else
+ return nil;
+}
+
-(void) dealloc
{
RELEASE (_bindings);