Ejemplo n.º 1
0
        private void printMain(Output @out, Decompiler d, bool includeFirst)
        {
            @out.print("(");
            int Start = includeFirst ? 0 : 1;

            if (function.numParams > Start)
            {
                new VariableTarget(d.declList[Start]).print(@out);
                for (int i = Start + 1; i < function.numParams; i++)
                {
                    @out.print(", ");
                    new VariableTarget(d.declList[i]).print(@out);
                }
            }
            if ((function.vararg & 1) == 1)
            {
                if (function.numParams > Start)
                {
                    @out.print(", ...");
                }
                else
                {
                    @out.print("...");
                }
            }
            @out.print(")");
            @out.println();
            @out.indent();
            d.decompile();
            d.print(@out);
            @out.dedent();
            @out.print("end");
            //out.println(); //This is an extra space for formatting
        }
Ejemplo n.º 2
0
 public override void print(Output @out)
 {
     @out.print("repeat");
     @out.println();
     @out.indent();
     Statement.printSequence(@out, statements);
     @out.dedent();
     @out.print("until ");
     branch.asExpression(r).print(@out);
 }
Ejemplo n.º 3
0
 public override void print(Output @out)
 {
     @out.print("while ");
     branch.asExpression(r).print(@out);
     @out.print(" do");
     @out.println();
     @out.indent();
     Statement.printSequence(@out, statements);
     @out.dedent();
     @out.print("end");
 }
Ejemplo n.º 4
0
 public override void print(Output @out)
 {
     @out.print("for ");
     r.getTarget(register + 3, begin - 1).print(@out);
     @out.print(" = ");
     r.getValue(register, begin - 1).print(@out);
     @out.print(", ");
     r.getValue(register + 1, begin - 1).print(@out);
     Expression step = r.getValue(register + 2, begin - 1);
     if(!step.isInteger() || step.asInteger() != 1)
     {
       @out.print(", ");
       step.print(@out);
     }
     @out.print(" do");
     @out.println();
     @out.indent();
     Statement.printSequence(@out, statements);
     @out.dedent();
     @out.print("end");
 }
Ejemplo n.º 5
0
 public override void print(Output @out)
 {
     if(statements.Count == 1 && statements[0] is IfThenEndBlock)
     {
       @out.print("else");
       statements[0].print(@out);
     }
     else if(statements.Count == 2 && statements[0] is IfThenElseBlock && statements[1] is ElseEndBlock)
     {
       @out.print("else");
       statements[0].print(@out);
       statements[1].print(@out);
     }
     else
     {
       @out.print("else");
       @out.println();
       @out.indent();
       Statement.printSequence(@out, statements);
       @out.dedent();
       @out.print("end");
     }
 }
Ejemplo n.º 6
0
 public override void print(Output @out)
 {
     @out.print("for ");
     r.getTarget(register + 3, begin - 1).print(@out);
     for(int r1 = register + 4; r1 <= register + 2 + length; r1++)
     {
       @out.print(", ");
       r.getTarget(r1, begin - 1).print(@out);
     }
     @out.print(" in ");
     Expression @value;
     @value = r.getValue(register, begin - 1);
     @value.print(@out);
     if([email protected]())
     {
       @out.print(", ");
       @value = r.getValue(register + 1, begin - 1);
       @value.print(@out);
       if([email protected]())
       {
     @out.print(", ");
     @value = r.getValue(register + 2, begin - 1);
     @value.print(@out);
       }
     }
     @out.print(" do");
     @out.println();
     @out.indent();
     Statement.printSequence(@out, statements);
     @out.dedent();
     @out.print("end");
 }
Ejemplo n.º 7
0
 public override void print(Output @out)
 {
     @out.print("if ");
     branch.asExpression(r).print(@out);
     @out.print(" then");
     @out.println();
     @out.indent();
     //Handle the case where the "then" is empty in if-then-else.
     //The jump over the else block is falsely detected as a break.
     if(statements.Count == 1 && statements[0] is Break)
     {
       Break b = (Break) statements[0];
       if(b.target == loopback)
       {
     @out.dedent();
     return;
       }
     }
     Statement.printSequence(@out, statements);
     @out.dedent();
     if(emptyElse)
     {
       @out.println("else");
       @out.println("end");
     }
 }
Ejemplo n.º 8
0
 private void printMain(Output @out, Decompiler d, bool includeFirst)
 {
     @out.print("(");
     int Start = includeFirst ? 0 : 1;
     if(function.numParams > Start)
     {
       new VariableTarget(d.declList[Start]).print(@out);
       for(int i = Start + 1; i < function.numParams; i++)
       {
     @out.print(", ");
     new VariableTarget(d.declList[i]).print(@out);
       }
     }
     if((function.vararg & 1) == 1)
     {
       if(function.numParams > Start)
       {
     @out.print(", ...");
       }
       else
       {
     @out.print("...");
       }
     }
     @out.print(")");
     @out.println();
     @out.indent();
     d.decompile();
     d.print(@out);
     @out.dedent();
     @out.print("end");
     //out.println(); //This is an extra space for formatting
 }