public void Visit(ASTNode_If node) { node.predNode.AcceptVisitor(this); if ((bool)Value) { node.thenNode.AcceptVisitor(this); } else { 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; }
public void Visit(ASTNode_If node) { node.predNode.AcceptVisitor(this); if ((bool)Value) node.thenNode.AcceptVisitor(this); else node.elseNode.AcceptVisitor(this); }
public void Visit(ASTNode_If node) { node.predNode.AcceptVisitor(this); node.thenNode.AcceptVisitor(this); node.elseNode.AcceptVisitor(this); }