Example #1
0
        private static void MakeOnStatement(TokenizerOutput program, TLine line)
        {
            var kw = (KwOn)line.Statement;

            for (int j = 0; j < kw.JumpList.Count; ++j)
            {
                var cnd = new NumBoolBinaryOperator(kw.Statement, new NumConstant((j + 1).ToString()), "==");
                var ifc = new KwrJumpIfNotTrue(cnd, -1);
                program.Program.Add(line.Clone(ifc));

                int     jumpPos = kw.JumpList[j].Value;
                KwrJump jmp     = kw.Kind == KwOn.OnKind.Goto ? new KwrGoto(jumpPos, false) : (KwrJump) new KwrGosub(jumpPos, false);
                program.Program.Add(line.Clone(jmp));

                ifc.JumpPos = program.Program.Count;
            }
        }