openqasm/source/grammar/tests/reference/assignment/alias.yaml

187 lines
3.7 KiB
YAML

# indent w/ 2 spaces
source: |
bit[2] a;
creg b[2];
qubit[5] q1;
qreg q2[7];
let q = q1 ++ q2;
let c = a[{0,1}] ++ b[1:2];
let qq = q1[{1,3,4}];
let qqq = qq ++ q2[1:2:6];
let d = c;
let e = d[1];
reference: |
program
statementOrScope
statement
classicalDeclarationStatement
scalarType
bit
designator
[
expression
2
]
a
;
statementOrScope
statement
oldStyleDeclarationStatement
creg
b
designator
[
expression
2
]
;
statementOrScope
statement
quantumDeclarationStatement
qubitType
qubit
designator
[
expression
5
]
q1
;
statementOrScope
statement
oldStyleDeclarationStatement
qreg
q2
designator
[
expression
7
]
;
statementOrScope
statement
aliasDeclarationStatement
let
q
=
aliasExpression
expression
q1
++
expression
q2
;
statementOrScope
statement
aliasDeclarationStatement
let
c
=
aliasExpression
expression
expression
a
indexOperator
[
setExpression
{
expression
0
,
expression
1
}
]
++
expression
expression
b
indexOperator
[
rangeExpression
expression
1
:
expression
2
]
;
statementOrScope
statement
aliasDeclarationStatement
let
qq
=
aliasExpression
expression
expression
q1
indexOperator
[
setExpression
{
expression
1
,
expression
3
,
expression
4
}
]
;
statementOrScope
statement
aliasDeclarationStatement
let
qqq
=
aliasExpression
expression
qq
++
expression
expression
q2
indexOperator
[
rangeExpression
expression
1
:
expression
2
:
expression
6
]
;
statementOrScope
statement
aliasDeclarationStatement
let
d
=
aliasExpression
expression
c
;
statementOrScope
statement
aliasDeclarationStatement
let
e
=
aliasExpression
expression
expression
d
indexOperator
[
expression
1
]
;
<EOF>