================================================================================ The header, registers and every scalar type ================================================================================ OPENQASM 3.0; include "stdgates.inc"; qubit q; qubit[3] r; bit[3] c; int[32] n = 0; uint u; float[64] f = 1.5e-3; angle[20] a = π / 4; bool b = true; complex[float[64]] z = 1.0 + 2.0im; duration d = 100ns; stretch s; bit[4] bits = "0101"; -------------------------------------------------------------------------------- (source_file (version (float_literal)) (include (string)) (quantum_declaration (qubit_type) (identifier)) (quantum_declaration (qubit_type (designator (integer_literal))) (identifier)) (classical_declaration (scalar_type (designator (integer_literal))) (identifier)) (classical_declaration (scalar_type (designator (integer_literal))) (identifier) (integer_literal)) (classical_declaration (scalar_type) (identifier)) (classical_declaration (scalar_type (designator (integer_literal))) (identifier) (float_literal)) (classical_declaration (scalar_type (designator (integer_literal))) (identifier) (binary_expression (identifier) (integer_literal))) (classical_declaration (scalar_type) (identifier) (boolean_literal)) (classical_declaration (scalar_type (scalar_type (designator (integer_literal)))) (identifier) (binary_expression (float_literal) (imaginary_literal))) (classical_declaration (scalar_type) (identifier) (timing_literal)) (classical_declaration (scalar_type) (identifier)) (classical_declaration (scalar_type (designator (integer_literal))) (identifier) (string))) ================================================================================ Constants, inputs, outputs, arrays and aliases ================================================================================ input uint n; input float[64] theta; output bit[2] result; const int k = 2 * n + 1; array[int[8], 3] values = {1, 2, 3}; array[float[32], 2, 2] grid = {{0.5, 1.5}, {2.5, 3.5}}; let pair = q[0:1] ++ r; let last = q[-1]; -------------------------------------------------------------------------------- (source_file (io_declaration (scalar_type) (identifier)) (io_declaration (scalar_type (designator (integer_literal))) (identifier)) (io_declaration (scalar_type (designator (integer_literal))) (identifier)) (const_declaration (scalar_type) (identifier) (binary_expression (binary_expression (integer_literal) (identifier)) (integer_literal))) (classical_declaration (array_type (scalar_type (designator (integer_literal))) (integer_literal)) (identifier) (array_literal (integer_literal) (integer_literal) (integer_literal))) (classical_declaration (array_type (scalar_type (designator (integer_literal))) (integer_literal) (integer_literal)) (identifier) (array_literal (array_literal (float_literal) (float_literal)) (array_literal (float_literal) (float_literal)))) (alias_declaration (identifier) (alias_expression (index_expression (identifier) (index (range_expression (integer_literal) (integer_literal)))) (identifier))) (alias_declaration (identifier) (alias_expression (index_expression (identifier) (index (unary_expression (integer_literal))))))) ================================================================================ OpenQASM 2 registers ================================================================================ OPENQASM 2.0; include "qelib1.inc"; qreg q[3]; creg c[3]; -------------------------------------------------------------------------------- (source_file (version (float_literal)) (include (string)) (old_style_declaration (identifier) (designator (integer_literal))) (old_style_declaration (identifier) (designator (integer_literal)))) ================================================================================ Integer literals in every base ================================================================================ uint[8] mask = 0x0F | 0b1010 | 0o17 | 1_000; -------------------------------------------------------------------------------- (source_file (classical_declaration (scalar_type (designator (integer_literal))) (identifier) (binary_expression (binary_expression (binary_expression (integer_literal) (integer_literal)) (integer_literal)) (integer_literal))))