public FunctionContext(ExpressionCompiler compiler, string name) { _compiler = compiler; _instructions = new List<Instruction>(); _loopLabels = new IndexedStack<Tuple<LabelOperand, LabelOperand>>(); Name = name != null ? _compiler.Identifier(name) : null; Label = _compiler.MakeLabel("function"); IdentifierCount = 0; }
public FunctionContext(ExpressionCompiler compiler, int frameIndex, Scope prevScope, string parentName, string name) { _instructions = new List <Instruction>(); _loopLabels = new IndexedStack <Tuple <LabelOperand, LabelOperand> >(); Compiler = compiler; FrameIndex = frameIndex; Scope = new Scope(frameIndex, prevScope); ParentName = parentName; Name = name; FullName = string.Format("{0}{1}{2}", parentName, string.IsNullOrEmpty(parentName) ? "" : ".", Name ?? ""); AssignedName = name != null?prevScope.Get(name) : null; Label = Compiler.MakeLabel("function"); IdentifierCount = 0; }
public FunctionContext(ExpressionCompiler compiler, int argIndex, int localIndex, Scope prevScope, string parentName, string name) { _instructions = new List<Instruction>(); _loopLabels = new IndexedStack<Tuple<LabelOperand, LabelOperand>>(); Compiler = compiler; ArgIndex = argIndex; LocalIndex = localIndex; Scope = prevScope; ParentName = parentName; Name = name; FullName = string.Format("{0}{1}{2}", parentName, string.IsNullOrEmpty(parentName) ? "" : ".", Name ?? ""); AssignedName = name != null ? prevScope.Get(name) : null; Label = Compiler.MakeLabel("function"); IdentifierCount = 0; }
public virtual LabelOperand MakeLabel(string name = null) { return(Compiler.MakeLabel(name)); }