summaryrefslogtreecommitdiff
path: root/MLKLexicalEnvironment.m
diff options
context:
space:
mode:
authorMatthias Andreas Benkard <matthias@benkard.de>2008-06-30 21:43:35 +0200
committerMatthias Andreas Benkard <matthias@benkard.de>2008-06-30 21:43:35 +0200
commit786ddbd4cea2fa9808463a5b2ff23dd40b994846 (patch)
tree9db79c4a8906661d48a5fff9ac24ea4a12a54050 /MLKLexicalEnvironment.m
parenteb968f738101d87b2d0e170d757ea10a27bbb867 (diff)
Simplify environment inheritance.
Diffstat (limited to 'MLKLexicalEnvironment.m')
-rw-r--r--MLKLexicalEnvironment.m35
1 files changed, 5 insertions, 30 deletions
diff --git a/MLKLexicalEnvironment.m b/MLKLexicalEnvironment.m
index 78a3b93..c460111 100644
--- a/MLKLexicalEnvironment.m
+++ b/MLKLexicalEnvironment.m
@@ -37,15 +37,11 @@
#define MAKE_ENVIRONMENT(variable, parent, parent_member) \
- (variable \
- ? (id) [[MLKEnvironment alloc] \
- initWithParent:(parent \
- ? (id) parent_member \
- : nil) \
- values:variable] \
- : (id) (parent \
- ? (id) RETAIN (parent_member) \
- : [[MLKEnvironment alloc] init]));
+ [[MLKEnvironment alloc] \
+ initWithParent:(parent \
+ ? (id) parent_member \
+ : nil) \
+ values:variable]
static MLKLexicalEnvironment *global_environment;
@@ -115,25 +111,11 @@ static MLKLexicalEnvironment *global_environment;
-(void) addValue:(id)value forSymbol:(MLKSymbol *)symbol
{
- if (_parent && _variables == _parent->_variables)
- _variables = [[MLKEnvironment alloc] initWithParent:_parent->_variables
- values:nil];
- else if (!_variables)
- _variables = [[MLKEnvironment alloc] initWithParent:nil
- values:nil];
-
[_variables addValue:value forSymbol:symbol];
}
-(void) addBindingForSymbol:(MLKSymbol *)symbol
{
- if (_parent && _variables == _parent->_variables)
- _variables = [[MLKEnvironment alloc] initWithParent:_parent->_variables
- values:nil];
- else if (!_variables)
- _variables = [[MLKEnvironment alloc] initWithParent:nil
- values:nil];
-
[_variables addBindingForSymbol:symbol];
}
@@ -159,13 +141,6 @@ static MLKLexicalEnvironment *global_environment;
-(void) addFunction:(id)value forSymbol:(MLKSymbol *)symbol
{
- if (_parent && _functions == _parent->_functions)
- _functions = [[MLKEnvironment alloc] initWithParent:_parent->_functions
- values:nil];
- else if (!_functions)
- _functions = [[MLKEnvironment alloc] initWithParent:nil
- values:nil];
-
[_functions addValue:value forSymbol:symbol];
}