AjTalk.Language.Block.CompileLocal C# (CSharp) Method

CompileLocal() public method

public CompileLocal ( string localname ) : void
localname string
return void
        public void CompileLocal(string localname)
        {
            if (this.localnames.Contains(localname))
            {
                throw new Exception("Repeated Local: " + localname);
            }

            this.localnames.Add(localname);
        }

Usage Example

Example #1
0
        public override void Visit(BlockExpression expression)
        {
            Block newblock = new Block(null, this.block);

            // TODO Review is the copy of argument and local names is needed
            foreach (var parname in this.block.ParameterNames)
                newblock.CompileArgument(parname);

            foreach (var locname in this.block.LocalNames)
                newblock.CompileLocal(locname);

            if (expression.ParameterNames != null)
                foreach (var parname in expression.ParameterNames)
                    newblock.CompileArgument(parname);

            if (expression.LocalVariables != null)
                foreach (var locname in expression.LocalVariables)
                    newblock.CompileLocal(locname);

            var compiler = new BytecodeCompiler(newblock);
            compiler.Visit(expression.Body);
            this.block.CompileGetBlock(newblock);
        }
All Usage Examples Of AjTalk.Language.Block::CompileLocal