Ejemplo n.º 1
0
 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))))
Ejemplo n.º 2
0
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)
Ejemplo n.º 3
0
 def exchange(self, left, right):
     return ClassicalExchange(left, right)
Ejemplo n.º 4
0
 def exitExchange(self, ctx):
     # type: (QuilParser.ExchangeContext) -> None
     self.result.append(
         ClassicalExchange(_addr(ctx.addr(0)), _addr(ctx.addr(1))))