Struct qasmsim::grammar::ast::OpenQasmProgram
source · pub struct OpenQasmProgram {
pub version: String,
pub program: Vec<Span<Statement>>,
}
Expand description
Represent a OPENQASM program. A valid program contains a version string and a list of instructions.
Examples
The AST corresponding to the following program:
OPENQASM 2.0;
qreg q[1];
U(pi/2, 0, pi) q[0];
Can be built programmatically with:
use qasmsim::grammar::ast::{
OpenQasmProgram,
Span,
Statement,
QuantumOperation,
UnitaryOperation,
OpCode,
Expression,
Argument
};
use qasmsim::grammar::lexer::Location;
let program = OpenQasmProgram {
version: "2.0".to_string(),
program: vec![
Span {
boundaries: (Location(14), Location(24)),
node: Box::new(
Statement::QRegDecl(
"q".to_string(),
1
)
)
},
Span {
boundaries: (Location(25), Location(45)),
node: Box::new(
Statement::QuantumOperation(
QuantumOperation::Unitary(
UnitaryOperation(
"U".to_string(),
vec![
Expression::Op(
OpCode::Div,
Box::new(Expression::Pi),
Box::new(Expression::Int(2))
),
Expression::Int(0),
Expression::Pi
],
vec![
Argument::Item("q".to_string(), 0)
]
)
)
)
)
}
]
};
Fields§
§version: String
The version of the language as in X.Y
. Current supported version is
2.0
.
program: Vec<Span<Statement>>
List of statements conforming the program body.
Trait Implementations§
source§impl Clone for OpenQasmProgram
impl Clone for OpenQasmProgram
source§fn clone(&self) -> OpenQasmProgram
fn clone(&self) -> OpenQasmProgram
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresource§impl Debug for OpenQasmProgram
impl Debug for OpenQasmProgram
source§impl PartialEq for OpenQasmProgram
impl PartialEq for OpenQasmProgram
source§fn eq(&self, other: &OpenQasmProgram) -> bool
fn eq(&self, other: &OpenQasmProgram) -> bool
This method tests for
self
and other
values to be equal, and is used
by ==
.impl StructuralPartialEq for OpenQasmProgram
Auto Trait Implementations§
impl RefUnwindSafe for OpenQasmProgram
impl Send for OpenQasmProgram
impl Sync for OpenQasmProgram
impl Unpin for OpenQasmProgram
impl UnwindSafe for OpenQasmProgram
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more