def exitClassicalBinary(self, ctx): # type: (QuilParser.ClassicalBinaryContext) -> None if ctx.AND(): self.result.append(ClassicalAnd(_addr(ctx.addr(0)), _addr(ctx.addr(1)))) elif ctx.OR(): self.result.append(ClassicalOr(_addr(ctx.addr(0)), _addr(ctx.addr(1)))) elif ctx.MOVE(): self.result.append(ClassicalMove(_addr(ctx.addr(0)), _addr(ctx.addr(1)))) elif ctx.EXCHANGE(): self.result.append(ClassicalExchange(_addr(ctx.addr(0)), _addr(ctx.addr(1))))
def EXCHANGE(classical_reg1, classical_reg2): """ Produce an EXCHANGE instruction. :param classical_reg1: The first classical register, which gets modified. :param classical_reg2: The second classical register, which gets modified. :return: A ClassicalExchange instance. """ left = unpack_classical_reg(classical_reg1) right = unpack_classical_reg(classical_reg2) return ClassicalExchange(left, right)
def exchange(self, left, right): return ClassicalExchange(left, right)
def exitExchange(self, ctx): # type: (QuilParser.ExchangeContext) -> None self.result.append( ClassicalExchange(_addr(ctx.addr(0)), _addr(ctx.addr(1))))