|
#region License
/* **********************************************************************************
* Copyright (c) Roman Ivantsov
* This source code is subject to terms and conditions of the MIT License
* for Irony. A copy of the license can be found in the License.txt file
* at the root of this distribution.
* By using this source code in any fashion, you are agreeing to be bound by the terms of the
* MIT License.
* You must not remove this notice from this software.
* **********************************************************************************/
#endregion
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Irony.Compiler;
namespace Irony.Runtime {
public class Closure {
public string MethodName; //either BindingInfo.Name, or name of the variable storing lambda expression
public readonly Frame ParentFrame;
public readonly AstNode Node;
public readonly FunctionBindingInfo BindingInfo;
public Closure(Frame parentFrame, AstNode node, FunctionBindingInfo bindingInfo) {
MethodName = bindingInfo.Name;
ParentFrame = parentFrame;
Node = node;
BindingInfo = bindingInfo;
}
public void Evaluate(EvaluationContext context) {
context.PushFrame(MethodName, Node, ParentFrame);
try {
BindingInfo.Evaluate(context);
} finally {
context.PopFrame();
}//finally
}//method
}//class
}//namespace
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.