Open sah4ez opened 5 years ago
As example, we can send to interpreter this command:
H 0
CNOT 0 1
MEASURE 0 1
this algorithm of Bell state.
So we should this commands load to some runtime, and apply this commands on register.
First apply Hadamard gate on 0 register,
Second apply C-NOT gate on 0 -> 1,
And the last to measure state of qubits.
After this we should have 0,0
or 1, 1
values for qubits.
Equivalent of command in prev comment in golang using register commands:
r := Register(2)
m := r.Apply(H(),1).Apply(CNOT(),2,1).Measure()
// m[0] = |0> -> m[1] = |0>
// or
// m[0] = |1> -> m[1] = |1>
Need create AST for Intermediate Representation (IR) and create a parser and a lexer for the each of implementations QASM, which will be parse source code in IR and execute on simulator or real QPU.
Exist several specification of Quantum Assembly Languages, as example: https://github.com/Qiskit/openqasm https://github.com/rigetti/quil https://arxiv.org/pdf/1805.09607.pdf so, need create an intermediate representation of quantum language, which will loading from human-redable format to binary data and simulation or execute on real QPU.