From cb23a76bbd3b7b1ccf4a5ec8894437e449a9047d Mon Sep 17 00:00:00 2001 From: Matthias Andreas Benkard Date: Fri, 27 Jun 2008 12:44:25 +0200 Subject: MLKInterpreter: Implement the %LAMBDA operator. --- MLKLexicalContext.m | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) (limited to 'MLKLexicalContext.m') diff --git a/MLKLexicalContext.m b/MLKLexicalContext.m index 85539f1..32c1bf2 100644 --- a/MLKLexicalContext.m +++ b/MLKLexicalContext.m @@ -101,6 +101,24 @@ static MLKSymbol *LEXICAL; return self; } ++(MLKLexicalContext *) contextWithParent:(MLKLexicalContext *)context + variables:(NSSet *)vars + functions:(NSSet *)functions + goTags:(NSDictionary *)goTags + macros:(NSDictionary *)macros + symbolMacros:(NSDictionary *)symbolMacros + declarations:(id)declarations +{ + return AUTORELEASE ([[self alloc] + initWithParent:context + variables:vars + functions:functions + goTags:goTags + macros:macros + symbolMacros:symbolMacros + declarations:declarations]); +} + +(MLKLexicalContext *) globalContext { return global_context; @@ -111,7 +129,12 @@ static MLKSymbol *LEXICAL; return [_macros valueForSymbol:symbol]; } --(void) setMacro:(MLKFuncallable *)value forSymbol:(MLKSymbol *)symbol +-(void) addMacro:(id )value forSymbol:(MLKSymbol *)symbol +{ + [_symbolMacros addValue:value forSymbol:symbol]; +} + +-(void) setMacro:(id )value forSymbol:(MLKSymbol *)symbol { [_symbolMacros setValue:value forSymbol:symbol]; } @@ -121,7 +144,7 @@ static MLKSymbol *LEXICAL; return [_symbolMacros valueForSymbol:symbol]; } --(void) setSymbolMacro:(MLKFuncallable *)value forSymbol:(MLKSymbol *)symbol +-(void) setSymbolMacro:(id )value forSymbol:(MLKSymbol *)symbol { [_symbolMacros setValue:value forSymbol:symbol]; } -- cgit v1.2.3