Example #1
0
        private static LoopData MakeLoopBegin(TokenizerOutput program, TLine line)
        {
            var kwFor = (KwFor)line.Statement;
            var ret   = new LoopData {
                StartLine = (program.Program.Count + 2)
            };

            // step 1: var = initial
            NumVariable forVar = kwFor.Variable;

            program.Program.Add(line.Clone(new NumBinaryOperator(forVar, kwFor.Initial, "=")));
            ret.LoopVariable = forVar;

            // step 2: make step variable
            var          stepVar   = new NumVariable("$" + ret.StartLine + forVar.Name + "_StepVariable");
            NumStatement stepValue = kwFor.Step ?? new NumConstant("1");

            program.Program.Add(line.Clone(new NumBinaryOperator(stepVar, stepValue, "=")));
            ret.StepVariable = stepVar;

            // step 3: loop
            var condition = new NumBoolBinaryOperator(forVar, kwFor.End, ">");
            var jmp       = new KwrJumpIfTrue(condition, -1);

            program.Program.Add(line.Clone(jmp));

            return(ret);
        }
Example #2
0
 public KwFor(NumVariable var, NumStatement initial, NumStatement end, NumStatement step)
 {
     Variable = var;
     Initial  = initial;
     End      = end;
     Step     = step;
 }
Example #3
0
        public KwOn(NumStatement statement, object list)
        {
            Statement = statement;
            var l = (KwOnJumpList)list;

            Kind     = l.Kind;
            JumpList = l.JumpList;
        }
Example #4
0
 public NfRnd(NumStatement numStatement)
 {
     Statement = numStatement;
 }
Example #5
0
 public NfFrac(NumStatement numStatement)
 {
     Statement = numStatement;
 }
Example #6
0
 public NotOperator(NumStatement st)
 {
     Statement = st;
 }
Example #7
0
 public Statement Visit(NumStatement numberStatement)
 {
     return(null);
 }
Example #8
0
        public Type Visit(NumStatement numStatement, FunctionGeneratorEnvironment arg)
        {
            Program.Emit(T42Instruction.PUSHINT(numStatement.num));

            return(new IntType());
        }
Example #9
0
 public SfRight(StringStatement statement, NumStatement positionStart)
 {
     Statement     = statement;
     PositionStart = positionStart;
 }
Example #10
0
 public SfMid(StringStatement statement, NumStatement positionStart, NumStatement positionEnd)
 {
     Statement     = statement;
     PositionStart = positionStart;
     PositionEnd   = positionEnd;
 }
Example #11
0
 public KwRandomize(NumStatement numStatement)
 {
     Statement = numStatement;
 }
Example #12
0
 public KwPause(NumStatement interval)
 {
     Interval = interval;
 }
Example #13
0
 public KwLocate(NumStatement x, NumStatement y)
 {
     X = x; Y = y;
 }
Example #14
0
 public NumBoolBinaryOperator(NumStatement l, NumStatement r, string op) : base(l, r, op)
 {
 }
Example #15
0
 public Type Visit(NumStatement numStatement)
 {
     return(new IntType());
 }
Example #16
0
 public Void Visit(NumStatement numberStatement, SortedSet <string> free)
 {
     return(null);
 }
Example #17
0
 public SfStr(NumStatement numStatement)
 {
     Statement = numStatement;
 }
Example #18
0
 public SfChr(NumStatement numStatement)
 {
     Statement = numStatement;
 }
Example #19
0
 public NfInt(NumStatement numStatement)
 {
     Statement = numStatement;
 }
Example #20
0
 public IValue Visit(NumStatement numStatement)
 {
     return(new NumberValue(numStatement.num));
 }
Example #21
0
 public NumUnaryMinus(NumStatement st)
 {
     Statement = st;
 }