Exemplo n.º 1
0
        public override Executable ResolveNamesAndCullUnusedCode(PastelCompiler compiler)
        {
            this.InitCode  = Executable.ResolveNamesAndCullUnusedCodeForBlock(this.InitCode, compiler).ToArray();
            this.Condition = this.Condition.ResolveNamesAndCullUnusedCode(compiler);
            this.StepCode  = Executable.ResolveNamesAndCullUnusedCodeForBlock(this.StepCode, compiler).ToArray();

            // TODO: check Condition for falseness

            this.Code = Executable.ResolveNamesAndCullUnusedCodeForBlock(this.Code, compiler).ToArray();

            return(this);
        }
Exemplo n.º 2
0
        public override Executable ResolveNamesAndCullUnusedCode(PastelCompiler compiler)
        {
            this.Condition = this.Condition.ResolveNamesAndCullUnusedCode(compiler);
            for (int i = 0; i < this.Chunks.Length; ++i)
            {
                SwitchChunk chunk = this.Chunks[i];
                for (int j = 0; j < chunk.Cases.Length; ++j)
                {
                    if (chunk.Cases[j] != null)
                    {
                        chunk.Cases[j] = chunk.Cases[j].ResolveNamesAndCullUnusedCode(compiler);
                    }
                }

                chunk.Code = Executable.ResolveNamesAndCullUnusedCodeForBlock(chunk.Code, compiler).ToArray();
            }
            return(this);
        }
Exemplo n.º 3
0
        public override Executable ResolveNamesAndCullUnusedCode(PastelCompiler compiler)
        {
            this.Condition = this.Condition.ResolveNamesAndCullUnusedCode(compiler);

            if (this.Condition is InlineConstant)
            {
                object value = ((InlineConstant)this.Condition).Value;
                if (value is bool)
                {
                    return(new ExecutableBatch(this.FirstToken, Executable.ResolveNamesAndCullUnusedCodeForBlock(
                                                   ((bool)value) ? this.IfCode : this.ElseCode,
                                                   compiler)));
                }
            }
            this.IfCode   = Executable.ResolveNamesAndCullUnusedCodeForBlock(this.IfCode, compiler).ToArray();
            this.ElseCode = Executable.ResolveNamesAndCullUnusedCodeForBlock(this.ElseCode, compiler).ToArray();

            return(this);
        }
Exemplo n.º 4
0
 public void ResolveNamesAndCullUnusedCode(PastelCompiler compiler)
 {
     this.Code = Executable.ResolveNamesAndCullUnusedCodeForBlock(this.Code, compiler).ToArray();
 }
Exemplo n.º 5
0
 public override Executable ResolveNamesAndCullUnusedCode(PastelCompiler compiler)
 {
     this.Condition = this.Condition.ResolveNamesAndCullUnusedCode(compiler);
     this.Code      = Executable.ResolveNamesAndCullUnusedCodeForBlock(this.Code, compiler).ToArray();
     return(this);
 }