Inheritance: IASTNode
Beispiel #1
0
 public void Visit(ASTNode_If node)
 {
     node.predNode.AcceptVisitor(this);
     if ((bool)Value)
     {
         node.thenNode.AcceptVisitor(this);
     }
     else
     {
         node.elseNode.AcceptVisitor(this);
     }
 }
Beispiel #2
0
            public void Visit(ASTNode_If node)
            {
                mTailFlag.Push(false);
                node.predNode.AcceptVisitor(this);
                mTailFlag.Pop();

                ByteCodes.Add(ByteCodeEnum.CJMP);
                int cjmpOff = ByteCodes.Count; ByteCodes.Add(0);

                mTailFlag.Push(true);
                node.elseNode.AcceptVisitor(this);
                mTailFlag.Pop();

                ByteCodes.Add(ByteCodeEnum.JMP);
                int jmpOff = ByteCodes.Count; ByteCodes.Add(0);

                ByteCodes[cjmpOff] = ByteCodes.Count;

                mTailFlag.Push(true);
                node.thenNode.AcceptVisitor(this);
                mTailFlag.Pop();

                ByteCodes[jmpOff] = ByteCodes.Count;
            }
Beispiel #3
0
 public void Visit(ASTNode_If node)
 {
     node.predNode.AcceptVisitor(this);
     if ((bool)Value) node.thenNode.AcceptVisitor(this);
     else node.elseNode.AcceptVisitor(this);
 }
Beispiel #4
0
 public void Visit(ASTNode_If node)
 {
     node.predNode.AcceptVisitor(this);
     node.thenNode.AcceptVisitor(this);
     node.elseNode.AcceptVisitor(this);
 }
 public void Visit(ASTNode_If node)
 {
     node.predNode.AcceptVisitor(this);
     node.thenNode.AcceptVisitor(this);
     node.elseNode.AcceptVisitor(this);
 }
            public void Visit(ASTNode_If node)
            {
                mTailFlag.Push(false);
                node.predNode.AcceptVisitor(this);
                mTailFlag.Pop();

                ByteCodes.Add(ByteCodeEnum.CJMP);
                int cjmpOff = ByteCodes.Count; ByteCodes.Add(0);

                mTailFlag.Push(true);
                node.elseNode.AcceptVisitor(this);
                mTailFlag.Pop();

                ByteCodes.Add(ByteCodeEnum.JMP);
                int jmpOff = ByteCodes.Count; ByteCodes.Add(0);

                ByteCodes[cjmpOff] = ByteCodes.Count;

                mTailFlag.Push(true);
                node.thenNode.AcceptVisitor(this);
                mTailFlag.Pop();

                ByteCodes[jmpOff] = ByteCodes.Count;
            }