Skip to content

Base

Base classes for the QASM3 emitter using the EmitABC pattern.

Follows the same abstract-interpretation approach as the QASM2 emitter, using method tables for dispatch instead of long if-chains.

EmitQASM3Base dataclass

EmitQASM3Base(
    *, prefix: str = "", prefix_if_none: str = "var_"
)

Bases: EmitABC[EmitQASM3Frame, str | None], ABC


              flowchart TD
              bloqade.qasm3.emit.base.EmitQASM3Base[EmitQASM3Base]

              

              click bloqade.qasm3.emit.base.EmitQASM3Base href "" "bloqade.qasm3.emit.base.EmitQASM3Base"
            

Base emitter for QASM3 string output via abstract interpretation.

format_float staticmethod

format_float(value: float) -> str

Format a float for QASM3 output, using 'pi' for common values.

Source code in .venv/lib/python3.12/site-packages/bloqade/qasm3/emit/base.py
73
74
75
76
77
78
79
80
@staticmethod
def format_float(value: float) -> str:
    """Format a float for QASM3 output, using 'pi' for common values."""
    if value == math.pi:
        return "pi"
    elif value == -math.pi:
        return "-pi"
    return repr(value)

EmitQASM3Frame dataclass

EmitQASM3Frame(
    body: list[str] = list(),
    worklist: WorkList[Successor] = WorkList(),
    block_ref: dict[Block, str | None] = dict(),
)

Bases: EmitFrame[str | None]


              flowchart TD
              bloqade.qasm3.emit.base.EmitQASM3Frame[EmitQASM3Frame]

              

              click bloqade.qasm3.emit.base.EmitQASM3Frame href "" "bloqade.qasm3.emit.base.EmitQASM3Frame"
            

Frame for QASM3 emission.

Collects emitted lines (strings) and tracks SSA-to-string mappings.