Exemple #1
0
        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;
        }
Exemple #2
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;
        }
Exemple #3
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;
        }
Exemple #4
0
 public virtual LabelOperand MakeLabel(string name = null)
 {
     return(Compiler.MakeLabel(name));
 }