コード例 #1
0
        public override void Generate(int b, int a)
        {
            int label = NewLabel();

            ex.Jump(0, a);
            EmitLabel(label);
            st.Generate(label, a);
        }
コード例 #2
0
 public override void Generate(int b, int a)
 {
     if (st1 == Nul)
     {
         st2.Generate(b, a);
     }
     else if (st2 == Nul)
     {
         st1.Generate(b, a);
     }
     else
     {
         int label = NewLabel();
         st1.Generate(b, label);
         EmitLabel(label);
         st2.Generate(label, a);
     }
 }
コード例 #3
0
        public override void Generate(int b, int a)
        {
            After = a;
            int label = NewLabel();

            st.Generate(b, label);
            EmitLabel(label);
            ex.Jump(b, 0);
        }
コード例 #4
0
        public override void Generate(int b, int a)
        {
            After = a;                // save label a
            expr.Jump(0, a);
            int label = NewLabel();   // label for stmt

            EmitLabel(label);
            stmt.Generate(label, b);
            EmitStatement("goto L" + b);
        }
コード例 #5
0
        public override void Generate(int b, int a)
        {
            int label1 = NewLabel();
            int label2 = NewLabel();

            ex.Jump(0, label2);
            EmitLabel(label1);
            st1.Generate(label1, a);
            EmitStatement("Goto L" + a);
            EmitLabel(label2);
            st2.Generate(label2, a);
        }