qasm-ts 2.0.0 → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/draft-pdf.yml +24 -0
- package/CONTRIBUTING.md +3 -0
- package/LICENSE +201 -0
- package/dist/errors.js +9 -0
- package/dist/lexer.js +74 -0
- package/dist/main.js +82 -7
- package/dist/parser.js +71 -0
- package/dist/qasm2/ast.js +33 -0
- package/dist/qasm2/lexer.js +54 -1
- package/dist/qasm2/parser.js +51 -1
- package/dist/qasm2/token.js +30 -0
- package/dist/qasm3/lexer.js +59 -1
- package/dist/qasm3/parser.js +55 -2
- package/dist/qasm3/token.js +93 -10
- package/dist/version.js +17 -1
- package/docs/assets/hierarchy.js +1 -0
- package/docs/custom.css +3 -0
- package/docs/docs-readme.md +208 -0
- package/docs/index.html +17 -55
- package/docs/typedoc/assets/custom.css +3 -0
- package/docs/typedoc/assets/hierarchy.js +1 -0
- package/docs/{assets → typedoc/assets}/highlight.css +20 -20
- package/docs/{assets → typedoc/assets}/icons.js +1 -1
- package/docs/{assets → typedoc/assets}/icons.svg +1 -1
- package/docs/typedoc/assets/main.js +60 -0
- package/docs/typedoc/assets/navigation.js +1 -0
- package/docs/typedoc/assets/search.js +1 -0
- package/docs/typedoc/assets/style.css +1633 -0
- package/docs/typedoc/classes/Error_Handling.BadArgumentError.html +12 -0
- package/docs/typedoc/classes/Error_Handling.BadBarrierError.html +12 -0
- package/docs/typedoc/classes/Error_Handling.BadClassicalTypeError.html +12 -0
- package/docs/typedoc/classes/Error_Handling.BadConditionalError.html +12 -0
- package/docs/typedoc/classes/Error_Handling.BadCregError.html +12 -0
- package/docs/typedoc/classes/Error_Handling.BadEqualsError.html +12 -0
- package/docs/typedoc/classes/Error_Handling.BadExpressionError.html +12 -0
- package/docs/typedoc/classes/Error_Handling.BadGateError.html +12 -0
- package/docs/typedoc/classes/Error_Handling.BadIncludeError.html +12 -0
- package/docs/typedoc/classes/Error_Handling.BadLoopError.html +12 -0
- package/docs/typedoc/classes/Error_Handling.BadMeasurementError.html +12 -0
- package/docs/typedoc/classes/Error_Handling.BadParameterError.html +12 -0
- package/docs/typedoc/classes/Error_Handling.BadQregError.html +12 -0
- package/docs/typedoc/classes/Error_Handling.BadQuantumInstructionError.html +12 -0
- package/docs/typedoc/classes/Error_Handling.BadStringLiteralError.html +12 -0
- package/docs/typedoc/classes/Error_Handling.BadSubroutineError.html +12 -0
- package/docs/typedoc/classes/Error_Handling.MissingBraceError.html +12 -0
- package/docs/typedoc/classes/Error_Handling.MissingSemicolonError.html +12 -0
- package/docs/typedoc/classes/Error_Handling.UnsupportedOpenQASMVersionError.html +12 -0
- package/docs/typedoc/classes/Version_Management.OpenQASMVersion.html +16 -0
- package/docs/typedoc/classes/qasm2_ast.ApplyGate.html +6 -0
- package/docs/typedoc/classes/qasm2_ast.AstNode.html +3 -0
- package/docs/typedoc/classes/qasm2_ast.Barrier.html +5 -0
- package/docs/typedoc/classes/qasm2_ast.CReg.html +5 -0
- package/docs/typedoc/classes/qasm2_ast.Cos.html +3 -0
- package/docs/typedoc/classes/qasm2_ast.Divide.html +3 -0
- package/docs/typedoc/classes/qasm2_ast.Exp.html +3 -0
- package/docs/typedoc/classes/qasm2_ast.Gate.html +7 -0
- package/docs/typedoc/classes/qasm2_ast.Id.html +4 -0
- package/docs/typedoc/classes/qasm2_ast.If.html +6 -0
- package/docs/typedoc/classes/qasm2_ast.Include.html +4 -0
- package/docs/typedoc/classes/qasm2_ast.Ln.html +3 -0
- package/docs/typedoc/classes/qasm2_ast.Measure.html +7 -0
- package/docs/typedoc/classes/qasm2_ast.Minus.html +3 -0
- package/docs/typedoc/classes/qasm2_ast.NNInteger.html +4 -0
- package/docs/typedoc/classes/qasm2_ast.Opaque.html +6 -0
- package/docs/typedoc/classes/qasm2_ast.Pi.html +3 -0
- package/docs/typedoc/classes/qasm2_ast.Plus.html +3 -0
- package/docs/typedoc/classes/qasm2_ast.Power.html +3 -0
- package/docs/typedoc/classes/qasm2_ast.QReg.html +5 -0
- package/docs/typedoc/classes/qasm2_ast.Real.html +4 -0
- package/docs/typedoc/classes/qasm2_ast.Sin.html +3 -0
- package/docs/typedoc/classes/qasm2_ast.Sqrt.html +3 -0
- package/docs/typedoc/classes/qasm2_ast.Tan.html +3 -0
- package/docs/typedoc/classes/qasm2_ast.Times.html +3 -0
- package/docs/typedoc/classes/qasm2_ast.Variable.html +4 -0
- package/docs/typedoc/classes/qasm2_ast.Version.html +4 -0
- package/docs/typedoc/classes/qasm2_lexer.default.html +57 -0
- package/docs/typedoc/classes/qasm2_parser.default.html +93 -0
- package/docs/typedoc/classes/qasm3_ast.AliasStatement.html +5 -0
- package/docs/typedoc/classes/qasm3_ast.AngleType.html +4 -0
- package/docs/typedoc/classes/qasm3_ast.Arithmetic.html +6 -0
- package/docs/typedoc/classes/qasm3_ast.ArrayAccess.html +5 -0
- package/docs/typedoc/classes/qasm3_ast.ArrayDeclaration.html +7 -0
- package/docs/typedoc/classes/qasm3_ast.ArrayInitializer.html +4 -0
- package/docs/typedoc/classes/qasm3_ast.ArrayReference.html +5 -0
- package/docs/typedoc/classes/qasm3_ast.AssignmentStatement.html +5 -0
- package/docs/typedoc/classes/qasm3_ast.AstNode.html +3 -0
- package/docs/typedoc/classes/qasm3_ast.Binary.html +6 -0
- package/docs/typedoc/classes/qasm3_ast.BitType.html +4 -0
- package/docs/typedoc/classes/qasm3_ast.BitstringLiteral.html +4 -0
- package/docs/typedoc/classes/qasm3_ast.BoolType.html +3 -0
- package/docs/typedoc/classes/qasm3_ast.BooleanLiteral.html +4 -0
- package/docs/typedoc/classes/qasm3_ast.BoxDefinition.html +7 -0
- package/docs/typedoc/classes/qasm3_ast.BranchingStatement.html +8 -0
- package/docs/typedoc/classes/qasm3_ast.BreakStatement.html +3 -0
- package/docs/typedoc/classes/qasm3_ast.CalibrationGrammarDeclaration.html +6 -0
- package/docs/typedoc/classes/qasm3_ast.CaseStatement.html +5 -0
- package/docs/typedoc/classes/qasm3_ast.Cast.html +5 -0
- package/docs/typedoc/classes/qasm3_ast.ClassicalDeclaration.html +7 -0
- package/docs/typedoc/classes/qasm3_ast.ClassicalType.html +3 -0
- package/docs/typedoc/classes/qasm3_ast.ComplexType.html +6 -0
- package/docs/typedoc/classes/qasm3_ast.ContinueStatement.html +3 -0
- package/docs/typedoc/classes/qasm3_ast.DefaultStatement.html +4 -0
- package/docs/typedoc/classes/qasm3_ast.DurationLiteral.html +5 -0
- package/docs/typedoc/classes/qasm3_ast.DurationOf.html +4 -0
- package/docs/typedoc/classes/qasm3_ast.DurationType.html +3 -0
- package/docs/typedoc/classes/qasm3_ast.Euler.html +3 -0
- package/docs/typedoc/classes/qasm3_ast.Expression.html +3 -0
- package/docs/typedoc/classes/qasm3_ast.ExternSignature.html +8 -0
- package/docs/typedoc/classes/qasm3_ast.FloatLiteral.html +4 -0
- package/docs/typedoc/classes/qasm3_ast.FloatType.html +6 -0
- package/docs/typedoc/classes/qasm3_ast.ForLoopStatement.html +12 -0
- package/docs/typedoc/classes/qasm3_ast.HardwareQubit.html +5 -0
- package/docs/typedoc/classes/qasm3_ast.IODeclaration.html +5 -0
- package/docs/typedoc/classes/qasm3_ast.Identifier.html +4 -0
- package/docs/typedoc/classes/qasm3_ast.ImaginaryLiteral.html +4 -0
- package/docs/typedoc/classes/qasm3_ast.Include.html +6 -0
- package/docs/typedoc/classes/qasm3_ast.IndexSet.html +5 -0
- package/docs/typedoc/classes/qasm3_ast.IntType.html +4 -0
- package/docs/typedoc/classes/qasm3_ast.IntegerLiteral.html +4 -0
- package/docs/typedoc/classes/qasm3_ast.MathFunction.html +5 -0
- package/docs/typedoc/classes/qasm3_ast.NumericLiteral.html +4 -0
- package/docs/typedoc/classes/qasm3_ast.Parameters.html +4 -0
- package/docs/typedoc/classes/qasm3_ast.Pi.html +3 -0
- package/docs/typedoc/classes/qasm3_ast.ProgramBlock.html +7 -0
- package/docs/typedoc/classes/qasm3_ast.QuantumBarrier.html +6 -0
- package/docs/typedoc/classes/qasm3_ast.QuantumBlock.html +6 -0
- package/docs/typedoc/classes/qasm3_ast.QuantumDeclaration.html +8 -0
- package/docs/typedoc/classes/qasm3_ast.QuantumDelay.html +5 -0
- package/docs/typedoc/classes/qasm3_ast.QuantumGateCall.html +9 -0
- package/docs/typedoc/classes/qasm3_ast.QuantumGateDefinition.html +9 -0
- package/docs/typedoc/classes/qasm3_ast.QuantumGateModifier.html +5 -0
- package/docs/typedoc/classes/qasm3_ast.QuantumMeasurement.html +6 -0
- package/docs/typedoc/classes/qasm3_ast.QuantumMeasurementAssignment.html +8 -0
- package/docs/typedoc/classes/qasm3_ast.QuantumReset.html +4 -0
- package/docs/typedoc/classes/qasm3_ast.Range.html +6 -0
- package/docs/typedoc/classes/qasm3_ast.ReturnStatement.html +4 -0
- package/docs/typedoc/classes/qasm3_ast.SizeOf.html +5 -0
- package/docs/typedoc/classes/qasm3_ast.Statement.html +12 -0
- package/docs/typedoc/classes/qasm3_ast.StretchType.html +3 -0
- package/docs/typedoc/classes/qasm3_ast.SubroutineBlock.html +6 -0
- package/docs/typedoc/classes/qasm3_ast.SubroutineCall.html +5 -0
- package/docs/typedoc/classes/qasm3_ast.SubroutineDefinition.html +10 -0
- package/docs/typedoc/classes/qasm3_ast.SubscriptedIdentifier.html +5 -0
- package/docs/typedoc/classes/qasm3_ast.SwitchStatement.html +6 -0
- package/docs/typedoc/classes/qasm3_ast.Tau.html +3 -0
- package/docs/typedoc/classes/qasm3_ast.TrigFunction.html +5 -0
- package/docs/typedoc/classes/qasm3_ast.UIntType.html +4 -0
- package/docs/typedoc/classes/qasm3_ast.Unary.html +5 -0
- package/docs/typedoc/classes/qasm3_ast.Version.html +6 -0
- package/docs/typedoc/classes/qasm3_ast.WhileLoopStatement.html +6 -0
- package/docs/typedoc/classes/qasm3_lexer.default.html +71 -0
- package/docs/typedoc/classes/qasm3_parser.default.html +237 -0
- package/docs/typedoc/enums/Version_Management.OpenQASMMajorVersion.html +4 -0
- package/docs/typedoc/enums/qasm2_token.Token.html +42 -0
- package/docs/typedoc/enums/qasm3_ast.ArithmeticOp.html +9 -0
- package/docs/typedoc/enums/qasm3_ast.ArrayReferenceModifier.html +4 -0
- package/docs/typedoc/enums/qasm3_ast.BinaryOp.html +15 -0
- package/docs/typedoc/enums/qasm3_ast.DurationUnit.html +7 -0
- package/docs/typedoc/enums/qasm3_ast.IOModifier.html +4 -0
- package/docs/typedoc/enums/qasm3_ast.MathFunctionTypes.html +12 -0
- package/docs/typedoc/enums/qasm3_ast.QuantumGateModifierName.html +6 -0
- package/docs/typedoc/enums/qasm3_ast.TrigFunctionTypes.html +8 -0
- package/docs/typedoc/enums/qasm3_ast.UnaryOp.html +5 -0
- package/docs/typedoc/enums/qasm3_token.Token.html +113 -0
- package/docs/typedoc/functions/Lexing.lex.html +24 -0
- package/docs/typedoc/functions/Main_Functions.parseFile.html +13 -0
- package/docs/typedoc/functions/Main_Functions.parseString.html +19 -0
- package/docs/typedoc/functions/Parsing.parse.html +15 -0
- package/docs/typedoc/functions/qasm2_token.inverseLookup.html +3 -0
- package/docs/typedoc/functions/qasm2_token.lookup.html +4 -0
- package/docs/typedoc/functions/qasm2_token.notParam.html +3 -0
- package/docs/typedoc/functions/qasm3_token.inverseLookup.html +9 -0
- package/docs/typedoc/functions/qasm3_token.lookup.html +10 -0
- package/docs/typedoc/functions/qasm3_token.notParam.html +11 -0
- package/docs/typedoc/hierarchy.html +1 -0
- package/docs/typedoc/index.html +76 -0
- package/docs/typedoc/modules/Error_Handling.html +5 -0
- package/docs/typedoc/modules/Lexing.html +20 -0
- package/docs/typedoc/modules/Main_Functions.html +2 -0
- package/docs/typedoc/modules/Parsing.html +24 -0
- package/docs/typedoc/modules/Version_Management.html +8 -0
- package/docs/typedoc/modules/qasm2_ast.html +22 -0
- package/docs/typedoc/modules/qasm2_lexer.html +24 -0
- package/docs/typedoc/modules/qasm2_parser.html +21 -0
- package/docs/typedoc/modules/qasm2_token.html +15 -0
- package/docs/typedoc/modules/qasm3_ast.html +26 -0
- package/docs/typedoc/modules/qasm3_lexer.html +25 -0
- package/docs/typedoc/modules/qasm3_parser.html +25 -0
- package/docs/typedoc/modules/qasm3_token.html +15 -0
- package/docs/typedoc/modules.html +1 -0
- package/docs/typedoc/types/Error_Handling.ReturnErrorConstructor.html +2 -0
- package/docs/typedoc.json +47 -0
- package/package.json +6 -2
- package/paper/jats/paper.jats +464 -0
- package/paper/main.bib +191 -0
- package/paper/paper.md +166 -0
- package/paper/paper.pdf +0 -0
- package/readme.md +73 -10
- package/docs/assets/main.js +0 -60
- package/docs/assets/navigation.js +0 -1
- package/docs/assets/search.js +0 -1
- package/docs/assets/style.css +0 -1493
- package/docs/classes/errors.BadArgumentError.html +0 -12
- package/docs/classes/errors.BadBarrierError.html +0 -12
- package/docs/classes/errors.BadClassicalTypeError.html +0 -12
- package/docs/classes/errors.BadConditionalError.html +0 -12
- package/docs/classes/errors.BadCregError.html +0 -12
- package/docs/classes/errors.BadEqualsError.html +0 -12
- package/docs/classes/errors.BadExpressionError.html +0 -12
- package/docs/classes/errors.BadGateError.html +0 -12
- package/docs/classes/errors.BadIncludeError.html +0 -12
- package/docs/classes/errors.BadLoopError.html +0 -12
- package/docs/classes/errors.BadMeasurementError.html +0 -12
- package/docs/classes/errors.BadParameterError.html +0 -12
- package/docs/classes/errors.BadQregError.html +0 -12
- package/docs/classes/errors.BadQuantumInstructionError.html +0 -12
- package/docs/classes/errors.BadStringLiteralError.html +0 -12
- package/docs/classes/errors.BadSubroutineError.html +0 -12
- package/docs/classes/errors.MissingBraceError.html +0 -12
- package/docs/classes/errors.MissingSemicolonError.html +0 -12
- package/docs/classes/errors.UnsupportedOpenQASMVersionError.html +0 -12
- package/docs/classes/qasm2_ast.ApplyGate.html +0 -6
- package/docs/classes/qasm2_ast.AstNode.html +0 -3
- package/docs/classes/qasm2_ast.Barrier.html +0 -5
- package/docs/classes/qasm2_ast.CReg.html +0 -5
- package/docs/classes/qasm2_ast.Cos.html +0 -3
- package/docs/classes/qasm2_ast.Divide.html +0 -3
- package/docs/classes/qasm2_ast.Exp.html +0 -3
- package/docs/classes/qasm2_ast.Gate.html +0 -7
- package/docs/classes/qasm2_ast.Id.html +0 -4
- package/docs/classes/qasm2_ast.If.html +0 -6
- package/docs/classes/qasm2_ast.Include.html +0 -4
- package/docs/classes/qasm2_ast.Ln.html +0 -3
- package/docs/classes/qasm2_ast.Measure.html +0 -7
- package/docs/classes/qasm2_ast.Minus.html +0 -3
- package/docs/classes/qasm2_ast.NNInteger.html +0 -4
- package/docs/classes/qasm2_ast.Opaque.html +0 -6
- package/docs/classes/qasm2_ast.Pi.html +0 -3
- package/docs/classes/qasm2_ast.Plus.html +0 -3
- package/docs/classes/qasm2_ast.Power.html +0 -3
- package/docs/classes/qasm2_ast.QReg.html +0 -5
- package/docs/classes/qasm2_ast.Real.html +0 -4
- package/docs/classes/qasm2_ast.Sin.html +0 -3
- package/docs/classes/qasm2_ast.Sqrt.html +0 -3
- package/docs/classes/qasm2_ast.Tan.html +0 -3
- package/docs/classes/qasm2_ast.Times.html +0 -3
- package/docs/classes/qasm2_ast.Variable.html +0 -4
- package/docs/classes/qasm2_ast.Version.html +0 -4
- package/docs/classes/qasm2_lexer.default.html +0 -50
- package/docs/classes/qasm2_parser.default.html +0 -87
- package/docs/classes/qasm3_ast.AliasStatement.html +0 -5
- package/docs/classes/qasm3_ast.AngleType.html +0 -4
- package/docs/classes/qasm3_ast.Arithmetic.html +0 -6
- package/docs/classes/qasm3_ast.ArrayAccess.html +0 -5
- package/docs/classes/qasm3_ast.ArrayDeclaration.html +0 -7
- package/docs/classes/qasm3_ast.ArrayInitializer.html +0 -4
- package/docs/classes/qasm3_ast.ArrayReference.html +0 -5
- package/docs/classes/qasm3_ast.AssignmentStatement.html +0 -5
- package/docs/classes/qasm3_ast.AstNode.html +0 -3
- package/docs/classes/qasm3_ast.Binary.html +0 -6
- package/docs/classes/qasm3_ast.BitType.html +0 -4
- package/docs/classes/qasm3_ast.BitstringLiteral.html +0 -4
- package/docs/classes/qasm3_ast.BoolType.html +0 -3
- package/docs/classes/qasm3_ast.BooleanLiteral.html +0 -4
- package/docs/classes/qasm3_ast.BoxDefinition.html +0 -7
- package/docs/classes/qasm3_ast.BranchingStatement.html +0 -8
- package/docs/classes/qasm3_ast.BreakStatement.html +0 -3
- package/docs/classes/qasm3_ast.CalibrationGrammarDeclaration.html +0 -6
- package/docs/classes/qasm3_ast.CaseStatement.html +0 -5
- package/docs/classes/qasm3_ast.Cast.html +0 -5
- package/docs/classes/qasm3_ast.ClassicalDeclaration.html +0 -7
- package/docs/classes/qasm3_ast.ClassicalType.html +0 -3
- package/docs/classes/qasm3_ast.ComplexType.html +0 -6
- package/docs/classes/qasm3_ast.ContinueStatement.html +0 -3
- package/docs/classes/qasm3_ast.DefaultStatement.html +0 -4
- package/docs/classes/qasm3_ast.DurationLiteral.html +0 -5
- package/docs/classes/qasm3_ast.DurationOf.html +0 -4
- package/docs/classes/qasm3_ast.DurationType.html +0 -3
- package/docs/classes/qasm3_ast.Euler.html +0 -3
- package/docs/classes/qasm3_ast.Expression.html +0 -3
- package/docs/classes/qasm3_ast.ExternSignature.html +0 -8
- package/docs/classes/qasm3_ast.FloatLiteral.html +0 -4
- package/docs/classes/qasm3_ast.FloatType.html +0 -6
- package/docs/classes/qasm3_ast.ForLoopStatement.html +0 -12
- package/docs/classes/qasm3_ast.HardwareQubit.html +0 -5
- package/docs/classes/qasm3_ast.IODeclaration.html +0 -5
- package/docs/classes/qasm3_ast.Identifier.html +0 -4
- package/docs/classes/qasm3_ast.ImaginaryLiteral.html +0 -4
- package/docs/classes/qasm3_ast.Include.html +0 -6
- package/docs/classes/qasm3_ast.IndexSet.html +0 -5
- package/docs/classes/qasm3_ast.IntType.html +0 -4
- package/docs/classes/qasm3_ast.IntegerLiteral.html +0 -4
- package/docs/classes/qasm3_ast.MathFunction.html +0 -5
- package/docs/classes/qasm3_ast.NumericLiteral.html +0 -4
- package/docs/classes/qasm3_ast.Parameters.html +0 -4
- package/docs/classes/qasm3_ast.Pi.html +0 -3
- package/docs/classes/qasm3_ast.ProgramBlock.html +0 -7
- package/docs/classes/qasm3_ast.QuantumBarrier.html +0 -6
- package/docs/classes/qasm3_ast.QuantumBlock.html +0 -6
- package/docs/classes/qasm3_ast.QuantumDeclaration.html +0 -8
- package/docs/classes/qasm3_ast.QuantumDelay.html +0 -5
- package/docs/classes/qasm3_ast.QuantumGateCall.html +0 -9
- package/docs/classes/qasm3_ast.QuantumGateDefinition.html +0 -9
- package/docs/classes/qasm3_ast.QuantumGateModifier.html +0 -5
- package/docs/classes/qasm3_ast.QuantumMeasurement.html +0 -6
- package/docs/classes/qasm3_ast.QuantumMeasurementAssignment.html +0 -8
- package/docs/classes/qasm3_ast.QuantumReset.html +0 -4
- package/docs/classes/qasm3_ast.Range.html +0 -6
- package/docs/classes/qasm3_ast.ReturnStatement.html +0 -4
- package/docs/classes/qasm3_ast.SizeOf.html +0 -5
- package/docs/classes/qasm3_ast.Statement.html +0 -12
- package/docs/classes/qasm3_ast.StretchType.html +0 -3
- package/docs/classes/qasm3_ast.SubroutineBlock.html +0 -6
- package/docs/classes/qasm3_ast.SubroutineCall.html +0 -5
- package/docs/classes/qasm3_ast.SubroutineDefinition.html +0 -10
- package/docs/classes/qasm3_ast.SubscriptedIdentifier.html +0 -5
- package/docs/classes/qasm3_ast.SwitchStatement.html +0 -6
- package/docs/classes/qasm3_ast.Tau.html +0 -3
- package/docs/classes/qasm3_ast.TrigFunction.html +0 -5
- package/docs/classes/qasm3_ast.UIntType.html +0 -4
- package/docs/classes/qasm3_ast.Unary.html +0 -5
- package/docs/classes/qasm3_ast.Version.html +0 -6
- package/docs/classes/qasm3_ast.WhileLoopStatement.html +0 -6
- package/docs/classes/qasm3_lexer.default.html +0 -60
- package/docs/classes/qasm3_parser.default.html +0 -227
- package/docs/classes/version.OpenQASMVersion.html +0 -16
- package/docs/enums/qasm2_token.Token.html +0 -39
- package/docs/enums/qasm3_ast.ArithmeticOp.html +0 -9
- package/docs/enums/qasm3_ast.ArrayReferenceModifier.html +0 -4
- package/docs/enums/qasm3_ast.BinaryOp.html +0 -15
- package/docs/enums/qasm3_ast.DurationUnit.html +0 -7
- package/docs/enums/qasm3_ast.IOModifier.html +0 -4
- package/docs/enums/qasm3_ast.MathFunctionTypes.html +0 -12
- package/docs/enums/qasm3_ast.QuantumGateModifierName.html +0 -6
- package/docs/enums/qasm3_ast.TrigFunctionTypes.html +0 -8
- package/docs/enums/qasm3_ast.UnaryOp.html +0 -5
- package/docs/enums/qasm3_token.Token.html +0 -101
- package/docs/enums/version.OpenQASMMajorVersion.html +0 -4
- package/docs/functions/lexer.lex.html +0 -1
- package/docs/functions/main.parseFile.html +0 -4
- package/docs/functions/main.parseString.html +0 -4
- package/docs/functions/parser.parse.html +0 -1
- package/docs/functions/qasm2_token.inverseLookup.html +0 -3
- package/docs/functions/qasm2_token.lookup.html +0 -4
- package/docs/functions/qasm2_token.notParam.html +0 -3
- package/docs/functions/qasm3_token.inverseLookup.html +0 -3
- package/docs/functions/qasm3_token.lookup.html +0 -4
- package/docs/functions/qasm3_token.notParam.html +0 -3
- package/docs/hierarchy.html +0 -1
- package/docs/modules/errors.html +0 -21
- package/docs/modules/lexer.html +0 -2
- package/docs/modules/main.html +0 -3
- package/docs/modules/parser.html +0 -2
- package/docs/modules/qasm2_ast.html +0 -28
- package/docs/modules/qasm2_lexer.html +0 -2
- package/docs/modules/qasm2_parser.html +0 -2
- package/docs/modules/qasm2_token.html +0 -5
- package/docs/modules/qasm3_ast.html +0 -83
- package/docs/modules/qasm3_lexer.html +0 -2
- package/docs/modules/qasm3_parser.html +0 -2
- package/docs/modules/qasm3_token.html +0 -5
- package/docs/modules/version.html +0 -3
- package/docs/modules.html +0 -14
- package/docs/types/errors.ReturnErrorConstructor.html +0 -2
- /package/docs/{.nojekyll → typedoc/.nojekyll} +0 -0
|
@@ -0,0 +1,464 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="utf-8" ?>
|
|
2
|
+
<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD v1.2 20190208//EN"
|
|
3
|
+
"JATS-publishing1.dtd">
|
|
4
|
+
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" dtd-version="1.2" article-type="other">
|
|
5
|
+
<front>
|
|
6
|
+
<journal-meta>
|
|
7
|
+
<journal-id></journal-id>
|
|
8
|
+
<journal-title-group>
|
|
9
|
+
<journal-title>Journal of Open Source Software</journal-title>
|
|
10
|
+
<abbrev-journal-title>JOSS</abbrev-journal-title>
|
|
11
|
+
</journal-title-group>
|
|
12
|
+
<issn publication-format="electronic">2475-9066</issn>
|
|
13
|
+
<publisher>
|
|
14
|
+
<publisher-name>Open Journals</publisher-name>
|
|
15
|
+
</publisher>
|
|
16
|
+
</journal-meta>
|
|
17
|
+
<article-meta>
|
|
18
|
+
<article-id pub-id-type="publisher-id">0</article-id>
|
|
19
|
+
<article-id pub-id-type="doi">N/A</article-id>
|
|
20
|
+
<title-group>
|
|
21
|
+
<article-title>Enabling the Verification and Formalization of Hybrid
|
|
22
|
+
Quantum-Classical Computing with OpenQASM 3.0 compatible QASM-TS
|
|
23
|
+
2.0</article-title>
|
|
24
|
+
</title-group>
|
|
25
|
+
<contrib-group>
|
|
26
|
+
<contrib contrib-type="author">
|
|
27
|
+
<contrib-id contrib-id-type="orcid">https://orcid.org/0009-0006-1223-1895</contrib-id>
|
|
28
|
+
<name>
|
|
29
|
+
<surname>Kim</surname>
|
|
30
|
+
<given-names>Sean</given-names>
|
|
31
|
+
</name>
|
|
32
|
+
<xref ref-type="aff" rid="aff-2"/>
|
|
33
|
+
</contrib>
|
|
34
|
+
<contrib contrib-type="author">
|
|
35
|
+
<contrib-id contrib-id-type="orcid">https://orcid.org/0000-0001-6591-9585</contrib-id>
|
|
36
|
+
<name>
|
|
37
|
+
<surname>Edwards</surname>
|
|
38
|
+
<given-names>Marcus</given-names>
|
|
39
|
+
</name>
|
|
40
|
+
<xref ref-type="aff" rid="aff-1"/>
|
|
41
|
+
</contrib>
|
|
42
|
+
<aff id="aff-1">
|
|
43
|
+
<institution-wrap>
|
|
44
|
+
<institution>University of British Columbia</institution>
|
|
45
|
+
</institution-wrap>
|
|
46
|
+
</aff>
|
|
47
|
+
<aff id="aff-2">
|
|
48
|
+
<institution-wrap>
|
|
49
|
+
<institution>George Washington University</institution>
|
|
50
|
+
</institution-wrap>
|
|
51
|
+
</aff>
|
|
52
|
+
</contrib-group>
|
|
53
|
+
<pub-date date-type="pub" publication-format="electronic" iso-8601-date="2025-07-30">
|
|
54
|
+
<day>30</day>
|
|
55
|
+
<month>7</month>
|
|
56
|
+
<year>2025</year>
|
|
57
|
+
</pub-date>
|
|
58
|
+
<volume>¿VOL?</volume>
|
|
59
|
+
<issue>¿ISSUE?</issue>
|
|
60
|
+
<fpage>¿PAGE?</fpage>
|
|
61
|
+
<permissions>
|
|
62
|
+
<copyright-statement>Authors of papers retain copyright and release the
|
|
63
|
+
work under a Creative Commons Attribution 4.0 International License (CC
|
|
64
|
+
BY 4.0)</copyright-statement>
|
|
65
|
+
<copyright-year>1970</copyright-year>
|
|
66
|
+
<copyright-holder>The article authors</copyright-holder>
|
|
67
|
+
<license license-type="open-access" xlink:href="https://creativecommons.org/licenses/by/4.0/">
|
|
68
|
+
<license-p>Authors of papers retain copyright and release the work under
|
|
69
|
+
a Creative Commons Attribution 4.0 International License (CC BY
|
|
70
|
+
4.0)</license-p>
|
|
71
|
+
</license>
|
|
72
|
+
</permissions>
|
|
73
|
+
<kwd-group kwd-group-type="author">
|
|
74
|
+
<kwd>TypeScript</kwd>
|
|
75
|
+
<kwd>Quantum computing</kwd>
|
|
76
|
+
<kwd>Compiling</kwd>
|
|
77
|
+
</kwd-group>
|
|
78
|
+
</article-meta>
|
|
79
|
+
</front>
|
|
80
|
+
<body>
|
|
81
|
+
<sec id="summary">
|
|
82
|
+
<title>Summary</title>
|
|
83
|
+
<p>The unique features of the hybrid quantum-classical computing model
|
|
84
|
+
implied by the specification of OpenQASM 3.0 motivate new approaches
|
|
85
|
+
to quantum program verification. We implement and thoroughly test a
|
|
86
|
+
QASM 3.0 parser in TypeScript to enable implementations of
|
|
87
|
+
verification and validation software, compilers and more. We aim to
|
|
88
|
+
help the community to formalize the logic of hybrid quantum-classical
|
|
89
|
+
computing by providing tools that may help with such efforts.</p>
|
|
90
|
+
<sec id="top-level-abstractions">
|
|
91
|
+
<title>Top Level Abstractions</title>
|
|
92
|
+
<p>Users can simply invoke the entire parsing process by calling the
|
|
93
|
+
two main package entry points:</p>
|
|
94
|
+
<list list-type="bullet">
|
|
95
|
+
<list-item>
|
|
96
|
+
<p><italic>parseFile</italic></p>
|
|
97
|
+
</list-item>
|
|
98
|
+
<list-item>
|
|
99
|
+
<p><italic>parseString</italic></p>
|
|
100
|
+
</list-item>
|
|
101
|
+
</list>
|
|
102
|
+
<p>The parser implements recursive descent parsing with support for
|
|
103
|
+
expression precedence and type checking. At a high level, the
|
|
104
|
+
parsing can be split into three logical sections: expression
|
|
105
|
+
parsing, quantum-specific parsing, and classical parsing.</p>
|
|
106
|
+
<p>Expression parsing forms the foundation for both quantum and
|
|
107
|
+
classical parsing by breaking down expressions into their
|
|
108
|
+
constituent parts and rebuilding them according to the mathematical
|
|
109
|
+
and operator syntax defined in the OpenQASM 3.0 official grammar
|
|
110
|
+
(<xref alt="OpenQASM 3.0 Grammar, n.d." rid="ref-noauthor_qasm_grammar_nodate" ref-type="bibr"><italic>OpenQASM
|
|
111
|
+
3.0 Grammar</italic>, n.d.</xref>). Starting with basic elements
|
|
112
|
+
like numbers, variables, and operators, the parser constructs an
|
|
113
|
+
abstract syntax tree that reflects proper operator precedence and
|
|
114
|
+
nesting. This process handles not only mathematical operations but
|
|
115
|
+
also array accesses, function calls, and parameter lists, creating a
|
|
116
|
+
structured representation that maintains the logical relationships
|
|
117
|
+
between all parts of the expression.</p>
|
|
118
|
+
<p>Quantum operation parsing manages the core quantum computing
|
|
119
|
+
elements of QASM, ensuring that quantum operations are syntactically
|
|
120
|
+
correct. The parser maintains strict tracking of quantum resources
|
|
121
|
+
through its <italic>gates</italic>, <italic>standardGates</italic>,
|
|
122
|
+
and <italic>customGates</italic> sets, validating that each quantum
|
|
123
|
+
operation references only properly defined gates and qubits. It
|
|
124
|
+
processes quantum register declarations, custom gate definitions,
|
|
125
|
+
gate applications (including gate modifiers), measurement
|
|
126
|
+
operations, and timing-critical operations like barriers and delays.
|
|
127
|
+
Each quantum operation is validated in its context.</p>
|
|
128
|
+
<p>The classical parsing processes classical variable declarations
|
|
129
|
+
with strict type checking, function definitions with parameter and
|
|
130
|
+
return type validation, control flow structures like conditional
|
|
131
|
+
statements and loops, and array operations. The parser maintains
|
|
132
|
+
separate tracking for classical and quantum resources while ensuring
|
|
133
|
+
they can interact in well-defined ways. This enables QASM programs
|
|
134
|
+
to express complex quantum algorithms that require classical
|
|
135
|
+
processing while maintaining type safety and operational
|
|
136
|
+
validity.</p>
|
|
137
|
+
<p>Our parser produces a strongly-typed AST that captures the full
|
|
138
|
+
structure of QASM programs and is designed to enable subsequent
|
|
139
|
+
semantic analysis.</p>
|
|
140
|
+
</sec>
|
|
141
|
+
</sec>
|
|
142
|
+
<sec id="statement-of-need">
|
|
143
|
+
<title>Statement of Need</title>
|
|
144
|
+
<p>The OpenQASM 3.0 type system supports classical and quantum types
|
|
145
|
+
as well as functions which can be used to specify hybrid
|
|
146
|
+
quantum-classical programs.</p>
|
|
147
|
+
<p>There is need for formal analysis and verification of hybrid
|
|
148
|
+
quantum classical programs and we argue that mathematical frameworks
|
|
149
|
+
and software frameworks are needed to address this gap.</p>
|
|
150
|
+
<p>Hand-in-hand with formalization efforts are the development of
|
|
151
|
+
community standards for quantum programming. The standardization of
|
|
152
|
+
quantum computer programming is ongoing
|
|
153
|
+
(<xref alt="Cross et al., 2022" rid="ref-Cross_2022" ref-type="bibr">Cross
|
|
154
|
+
et al., 2022</xref>;
|
|
155
|
+
<xref alt="Di Matteo et al., 2024" rid="ref-di_matteo_abstraction_2024" ref-type="bibr">Di
|
|
156
|
+
Matteo et al., 2024</xref>) and relies significantly on open source
|
|
157
|
+
software and frameworks including some released only last year
|
|
158
|
+
(<xref alt="Seidel et al., 2024" rid="ref-seidel2024qrispframeworkcompilablehighlevel" ref-type="bibr">Seidel
|
|
159
|
+
et al., 2024</xref>;
|
|
160
|
+
<xref alt="Wille et al., 2024" rid="ref-qdmi" ref-type="bibr">Wille et
|
|
161
|
+
al., 2024</xref>). Some community standards such as the 2022 Open
|
|
162
|
+
Quantum Assembly (OpenQASM) 3.0 specification boast typing as well as
|
|
163
|
+
interoperability and portability between quantum systems of different
|
|
164
|
+
types. However, others such as the QUASAR instruction set architecture
|
|
165
|
+
assume some backend details such as a classical co-processor to
|
|
166
|
+
complement our Quantum Processing Unit (QPU)
|
|
167
|
+
(<xref alt="Shammah et al., 2024" rid="ref-shammah_open_2024" ref-type="bibr">Shammah
|
|
168
|
+
et al., 2024</xref>). To what extent the classical surrounds of a
|
|
169
|
+
quantum processing unit should be assumed or specified and at what
|
|
170
|
+
part of the stack is an open question. This “piping” can leverage many
|
|
171
|
+
classical programming paradigms including web technology. What we
|
|
172
|
+
refer to here is distinct from cloud quantum computing which simply
|
|
173
|
+
offers a web-accessible front-end to users of quantum computers.
|
|
174
|
+
Instead, we are interested in parts of the programming model itself,
|
|
175
|
+
such as pieces of the compile toolchain (compilers, transpilers,
|
|
176
|
+
assemblers, noise profilers, schedulers), which are implemented using
|
|
177
|
+
web technology. An example of this is Quantinuum’s QEC decoder toolkit
|
|
178
|
+
which uses a WebAssembly (WASM) virtual machine (WAVM) as a real-time
|
|
179
|
+
classical compute environment for QEC decoding
|
|
180
|
+
(<xref alt="QEC Decoder Toolkit - H-Series, n.d." rid="ref-noauthor_qec_nodate" ref-type="bibr"><italic>QEC
|
|
181
|
+
Decoder Toolkit - H-Series</italic>, n.d.</xref>). Other examples
|
|
182
|
+
include our ports of Quantum Assembly (QASM), Quantum Macro Assembler
|
|
183
|
+
(QMASM) and Blackbrid to TypeScript
|
|
184
|
+
(<xref alt="Edwards, 2023" rid="ref-edwards_three_2023" ref-type="bibr">Edwards,
|
|
185
|
+
2023</xref>).</p>
|
|
186
|
+
<p>An important part of standardization is verification. By our typed
|
|
187
|
+
implementation of an OpenQASM 3.0 parser, we implement a system that
|
|
188
|
+
infers types from QASM syntax. This opens the door to the type based
|
|
189
|
+
formal verification of QASM code. A body of work exists regarding the
|
|
190
|
+
verification of quantum software, which is summarized in
|
|
191
|
+
(<xref alt="Fortunato et al., 2024" rid="ref-exman_verification_2024" ref-type="bibr">Fortunato
|
|
192
|
+
et al., 2024</xref>).</p>
|
|
193
|
+
<p>The primary future direction that we see is the development of
|
|
194
|
+
verification tools such as static analysis tools based on QASM-TS in
|
|
195
|
+
the vein of QChecker
|
|
196
|
+
(<xref alt="Zhao et al., 2023" rid="ref-zhao_qchecker_2023" ref-type="bibr">Zhao
|
|
197
|
+
et al., 2023</xref>). This could be complemented by a formal type
|
|
198
|
+
theory of OpenQASM 3.0.</p>
|
|
199
|
+
<p>Virtually every quantum computing company has provided access
|
|
200
|
+
through a hybrid cloud. This demands that parts of the stack be
|
|
201
|
+
implemented in web technology, and we argue that it is optimal in a
|
|
202
|
+
sense to use technology that is designed for this environment when we
|
|
203
|
+
find ourselves working in a hybrid quantum / classical cloud. We
|
|
204
|
+
suggest that a closer marriage of open source efforts to the
|
|
205
|
+
inherently web based stack supporting existing quantum computing
|
|
206
|
+
offerings is desirable.</p>
|
|
207
|
+
</sec>
|
|
208
|
+
<sec id="outcomes">
|
|
209
|
+
<title>Outcomes</title>
|
|
210
|
+
<p>Our comparative analysis focused on two promiment OpenQASM 3.0
|
|
211
|
+
parsers: Qiskit’s Python ANLTR-based reference implementation and
|
|
212
|
+
Qiskit’s experimental Rust parser.</p>
|
|
213
|
+
<sec id="performance-benchmarking">
|
|
214
|
+
<title>Performance Benchmarking</title>
|
|
215
|
+
<table-wrap>
|
|
216
|
+
<table>
|
|
217
|
+
<thead>
|
|
218
|
+
<tr>
|
|
219
|
+
<th align="left">Benchmark Results</th>
|
|
220
|
+
<th></th>
|
|
221
|
+
<th></th>
|
|
222
|
+
<th></th>
|
|
223
|
+
</tr>
|
|
224
|
+
</thead>
|
|
225
|
+
<tbody>
|
|
226
|
+
<tr>
|
|
227
|
+
<td align="left">Result</td>
|
|
228
|
+
<td>ANTLR Parser</td>
|
|
229
|
+
<td>Rust Parser</td>
|
|
230
|
+
<td>Qasm-ts</td>
|
|
231
|
+
</tr>
|
|
232
|
+
<tr>
|
|
233
|
+
<td align="left">Success Rate</td>
|
|
234
|
+
<td>100% (11/11 files)</td>
|
|
235
|
+
<td>18.2% (2/11 files)</td>
|
|
236
|
+
<td>100% (11/11 files)</td>
|
|
237
|
+
</tr>
|
|
238
|
+
<tr>
|
|
239
|
+
<td align="left">Average Time</td>
|
|
240
|
+
<td>8.53 ms</td>
|
|
241
|
+
<td>0.59 ms</td>
|
|
242
|
+
<td>0.90 ms</td>
|
|
243
|
+
</tr>
|
|
244
|
+
<tr>
|
|
245
|
+
<td align="left">Min Time</td>
|
|
246
|
+
<td>1.93 ms</td>
|
|
247
|
+
<td>0.55 ms</td>
|
|
248
|
+
<td>0.36 ms</td>
|
|
249
|
+
</tr>
|
|
250
|
+
<tr>
|
|
251
|
+
<td align="left">Max Time</td>
|
|
252
|
+
<td>30.54 ms</td>
|
|
253
|
+
<td>0.62 ms</td>
|
|
254
|
+
<td>3.68 ms</td>
|
|
255
|
+
</tr>
|
|
256
|
+
</tbody>
|
|
257
|
+
</table>
|
|
258
|
+
</table-wrap>
|
|
259
|
+
<p>The benchmarking reveals that when just taking into account the
|
|
260
|
+
AST generation, the Rust implementation generally offers superior
|
|
261
|
+
raw performance, but suffers from only currently supporting a subset
|
|
262
|
+
of the full OpenQASM 3.0 specification. The QASM-TS parser provides
|
|
263
|
+
competitive performance for web deployment scenarios, while the
|
|
264
|
+
ANTLR parser offers a balance of features and performance suitable
|
|
265
|
+
for development and testing.</p>
|
|
266
|
+
</sec>
|
|
267
|
+
</sec>
|
|
268
|
+
<sec id="acknowledgements">
|
|
269
|
+
<title>Acknowledgements</title>
|
|
270
|
+
<p>We would like to thank Dr. Shohini Ghose for support and helpful
|
|
271
|
+
discussions regarding the previous version of this software package,
|
|
272
|
+
QASM-TS 1.0, which has had use in the community by hundreds (counted
|
|
273
|
+
by npm downloads).</p>
|
|
274
|
+
</sec>
|
|
275
|
+
</body>
|
|
276
|
+
<back>
|
|
277
|
+
<ref-list>
|
|
278
|
+
<title></title>
|
|
279
|
+
<ref id="ref-di_matteo_abstraction_2024">
|
|
280
|
+
<element-citation>
|
|
281
|
+
<person-group person-group-type="author">
|
|
282
|
+
<name><surname>Di Matteo</surname><given-names>Olivia</given-names></name>
|
|
283
|
+
<name><surname>Nunez-Corrales</surname><given-names>Santiago</given-names></name>
|
|
284
|
+
<name><surname>Stechly</surname><given-names>Michal</given-names></name>
|
|
285
|
+
<name><surname>Reinhardt</surname><given-names>Steven P.</given-names></name>
|
|
286
|
+
<name><surname>Mattson</surname><given-names>Tim</given-names></name>
|
|
287
|
+
</person-group>
|
|
288
|
+
<article-title>An Abstraction Hierarchy Toward Productive Quantum Programming</article-title>
|
|
289
|
+
<source>arXiv.org</source>
|
|
290
|
+
<year iso-8601-date="2024-05">2024</year><month>05</month>
|
|
291
|
+
<date-in-citation content-type="access-date"><year iso-8601-date="2024-09-12">2024</year><month>09</month><day>12</day></date-in-citation>
|
|
292
|
+
<uri>https://arxiv.org/abs/2405.13918v1</uri>
|
|
293
|
+
</element-citation>
|
|
294
|
+
</ref>
|
|
295
|
+
<ref id="ref-Cross_2022">
|
|
296
|
+
<element-citation publication-type="article-journal">
|
|
297
|
+
<person-group person-group-type="author">
|
|
298
|
+
<name><surname>Cross</surname><given-names>Andrew</given-names></name>
|
|
299
|
+
<name><surname>Javadi-Abhari</surname><given-names>Ali</given-names></name>
|
|
300
|
+
<name><surname>Alexander</surname><given-names>Thomas</given-names></name>
|
|
301
|
+
<name><surname>De Beaudrap</surname><given-names>Niel</given-names></name>
|
|
302
|
+
<name><surname>Bishop</surname><given-names>Lev S.</given-names></name>
|
|
303
|
+
<name><surname>Heidel</surname><given-names>Steven</given-names></name>
|
|
304
|
+
<name><surname>Ryan</surname><given-names>Colm A.</given-names></name>
|
|
305
|
+
<name><surname>Sivarajah</surname><given-names>Prasahnt</given-names></name>
|
|
306
|
+
<name><surname>Smolin</surname><given-names>John</given-names></name>
|
|
307
|
+
<name><surname>Gambetta</surname><given-names>Jay M.</given-names></name>
|
|
308
|
+
<name><surname>Johnson</surname><given-names>Blake R.</given-names></name>
|
|
309
|
+
</person-group>
|
|
310
|
+
<article-title>OpenQASM 3: A broader and deeper quantum assembly language</article-title>
|
|
311
|
+
<source>ACM Transactions on Quantum Computing</source>
|
|
312
|
+
<publisher-name>Association for Computing Machinery (ACM)</publisher-name>
|
|
313
|
+
<year iso-8601-date="2022-09">2022</year><month>09</month>
|
|
314
|
+
<volume>3</volume>
|
|
315
|
+
<issue>3</issue>
|
|
316
|
+
<issn>2643-6817</issn>
|
|
317
|
+
<uri>http://dx.doi.org/10.1145/3505636</uri>
|
|
318
|
+
<pub-id pub-id-type="doi">10.1145/3505636</pub-id>
|
|
319
|
+
<fpage>1</fpage>
|
|
320
|
+
<lpage>50</lpage>
|
|
321
|
+
</element-citation>
|
|
322
|
+
</ref>
|
|
323
|
+
<ref id="ref-seidel2024qrispframeworkcompilablehighlevel">
|
|
324
|
+
<element-citation>
|
|
325
|
+
<person-group person-group-type="author">
|
|
326
|
+
<name><surname>Seidel</surname><given-names>Raphael</given-names></name>
|
|
327
|
+
<name><surname>Bock</surname><given-names>Sebastian</given-names></name>
|
|
328
|
+
<name><surname>Zander</surname><given-names>René</given-names></name>
|
|
329
|
+
<name><surname>Petrič</surname><given-names>Matic</given-names></name>
|
|
330
|
+
<name><surname>Steinmann</surname><given-names>Niklas</given-names></name>
|
|
331
|
+
<name><surname>Tcholtchev</surname><given-names>Nikolay</given-names></name>
|
|
332
|
+
<name><surname>Hauswirth</surname><given-names>Manfred</given-names></name>
|
|
333
|
+
</person-group>
|
|
334
|
+
<article-title>Qrisp: A framework for compilable high-level programming of gate-based quantum computers</article-title>
|
|
335
|
+
<year iso-8601-date="2024">2024</year>
|
|
336
|
+
<uri>https://arxiv.org/abs/2406.14792</uri>
|
|
337
|
+
</element-citation>
|
|
338
|
+
</ref>
|
|
339
|
+
<ref id="ref-shammah_open_2024">
|
|
340
|
+
<element-citation publication-type="article-journal">
|
|
341
|
+
<person-group person-group-type="author">
|
|
342
|
+
<name><surname>Shammah</surname><given-names>Nathan</given-names></name>
|
|
343
|
+
<name><surname>Roy</surname><given-names>Anurag Saha</given-names></name>
|
|
344
|
+
<name><surname>Almudever</surname><given-names>Carmen G.</given-names></name>
|
|
345
|
+
<name><surname>Bourdeauducq</surname><given-names>Sébastien</given-names></name>
|
|
346
|
+
<name><surname>Butko</surname><given-names>Anastasiia</given-names></name>
|
|
347
|
+
<name><surname>Cancelo</surname><given-names>Gustavo</given-names></name>
|
|
348
|
+
<name><surname>Clark</surname><given-names>Susan M.</given-names></name>
|
|
349
|
+
<name><surname>Heinsoo</surname><given-names>Johannes</given-names></name>
|
|
350
|
+
<name><surname>Henriet</surname><given-names>Loïc</given-names></name>
|
|
351
|
+
<name><surname>Huang</surname><given-names>Gang</given-names></name>
|
|
352
|
+
<name><surname>Jurczak</surname><given-names>Christophe</given-names></name>
|
|
353
|
+
<name><surname>Kotilahti</surname><given-names>Janne</given-names></name>
|
|
354
|
+
<name><surname>Landra</surname><given-names>Alessandro</given-names></name>
|
|
355
|
+
<name><surname>LaRose</surname><given-names>Ryan</given-names></name>
|
|
356
|
+
<name><surname>Mari</surname><given-names>Andrea</given-names></name>
|
|
357
|
+
<name><surname>Nowrouzi</surname><given-names>Kasra</given-names></name>
|
|
358
|
+
<name><surname>Ockeloen-Korppi</surname><given-names>Caspar</given-names></name>
|
|
359
|
+
<name><surname>Prawiroatmodjo</surname><given-names>Guen</given-names></name>
|
|
360
|
+
<name><surname>Siddiqi</surname><given-names>Irfan</given-names></name>
|
|
361
|
+
<name><surname>Zeng</surname><given-names>William J.</given-names></name>
|
|
362
|
+
</person-group>
|
|
363
|
+
<article-title>Open Hardware Solutions in Quantum Technology</article-title>
|
|
364
|
+
<source>APL Quantum</source>
|
|
365
|
+
<year iso-8601-date="2024-03">2024</year><month>03</month>
|
|
366
|
+
<date-in-citation content-type="access-date"><year iso-8601-date="2024-09-09">2024</year><month>09</month><day>09</day></date-in-citation>
|
|
367
|
+
<volume>1</volume>
|
|
368
|
+
<issue>1</issue>
|
|
369
|
+
<issn>2835-0103</issn>
|
|
370
|
+
<uri>http://arxiv.org/abs/2309.17233</uri>
|
|
371
|
+
<pub-id pub-id-type="doi">10.1063/5.0180987</pub-id>
|
|
372
|
+
<fpage>011501</fpage>
|
|
373
|
+
<lpage></lpage>
|
|
374
|
+
</element-citation>
|
|
375
|
+
</ref>
|
|
376
|
+
<ref id="ref-edwards_three_2023">
|
|
377
|
+
<element-citation>
|
|
378
|
+
<person-group person-group-type="author">
|
|
379
|
+
<name><surname>Edwards</surname><given-names>Marcus</given-names></name>
|
|
380
|
+
</person-group>
|
|
381
|
+
<article-title>Three Quantum Programming Language Parser Implementations for the Web</article-title>
|
|
382
|
+
<publisher-name>arXiv</publisher-name>
|
|
383
|
+
<year iso-8601-date="2023-10">2023</year><month>10</month>
|
|
384
|
+
<date-in-citation content-type="access-date"><year iso-8601-date="2024-11-20">2024</year><month>11</month><day>20</day></date-in-citation>
|
|
385
|
+
<uri>http://arxiv.org/abs/2310.10802</uri>
|
|
386
|
+
<pub-id pub-id-type="doi">10.48550/arXiv.2310.10802</pub-id>
|
|
387
|
+
</element-citation>
|
|
388
|
+
</ref>
|
|
389
|
+
<ref id="ref-noauthor_qasm_grammar_nodate">
|
|
390
|
+
<element-citation>
|
|
391
|
+
<article-title>OpenQASM 3.0 Grammar</article-title>
|
|
392
|
+
<date-in-citation content-type="access-date"><year iso-8601-date="2024-11-24">2024</year><month>11</month><day>24</day></date-in-citation>
|
|
393
|
+
<uri>https://openqasm.com/grammar/index.html</uri>
|
|
394
|
+
</element-citation>
|
|
395
|
+
</ref>
|
|
396
|
+
<ref id="ref-noauthor_qec_nodate">
|
|
397
|
+
<element-citation>
|
|
398
|
+
<article-title>QEC Decoder Toolkit - H-Series</article-title>
|
|
399
|
+
<date-in-citation content-type="access-date"><year iso-8601-date="2024-11-20">2024</year><month>11</month><day>20</day></date-in-citation>
|
|
400
|
+
<uri>https://docs.quantinuum.com/h-series/trainings/getting_started/pytket_quantinuum/qec_decoder_toolkit/Quantinuum_hseries_qec_decoder_toolkit.html?_gl=1*srcw0e*_gcl_au*MTU2MzIwMzA1NC4xNzI5NTk1NzEw</uri>
|
|
401
|
+
</element-citation>
|
|
402
|
+
</ref>
|
|
403
|
+
<ref id="ref-qdmi">
|
|
404
|
+
<element-citation publication-type="paper-conference">
|
|
405
|
+
<person-group person-group-type="author">
|
|
406
|
+
<name><surname>Wille</surname><given-names>Robert</given-names></name>
|
|
407
|
+
<name><surname>Schmid</surname><given-names>Ludwig</given-names></name>
|
|
408
|
+
<name><surname>Stade</surname><given-names>Yannick</given-names></name>
|
|
409
|
+
<name><surname>Echavarria</surname><given-names>Jorge</given-names></name>
|
|
410
|
+
<name><surname>Schulz</surname><given-names>Martin</given-names></name>
|
|
411
|
+
<name><surname>Schulz</surname><given-names>Laura</given-names></name>
|
|
412
|
+
<name><surname>Burgholzer</surname><given-names>Lukas</given-names></name>
|
|
413
|
+
</person-group>
|
|
414
|
+
<article-title>QDMI – Quantum Device Management Interface: A Standardized Interface for Quantum Computing Platforms</article-title>
|
|
415
|
+
<source>IEEE international conference on quantum computing and engineering (QCE)</source>
|
|
416
|
+
<year iso-8601-date="2024">2024</year>
|
|
417
|
+
</element-citation>
|
|
418
|
+
</ref>
|
|
419
|
+
<ref id="ref-exman_verification_2024">
|
|
420
|
+
<element-citation publication-type="chapter">
|
|
421
|
+
<person-group person-group-type="author">
|
|
422
|
+
<name><surname>Fortunato</surname><given-names>Daniel</given-names></name>
|
|
423
|
+
<name><surname>Jiménez-Navajas</surname><given-names>Luis</given-names></name>
|
|
424
|
+
<name><surname>Campos</surname><given-names>José</given-names></name>
|
|
425
|
+
<name><surname>Abreu</surname><given-names>Rui</given-names></name>
|
|
426
|
+
</person-group>
|
|
427
|
+
<article-title>Verification and Validation of Quantum Software</article-title>
|
|
428
|
+
<source>Quantum Software</source>
|
|
429
|
+
<person-group person-group-type="editor">
|
|
430
|
+
<name><surname>Exman</surname><given-names>Iaakov</given-names></name>
|
|
431
|
+
<name><surname>Pérez-Castillo</surname><given-names>Ricardo</given-names></name>
|
|
432
|
+
<name><surname>Piattini</surname><given-names>Mario</given-names></name>
|
|
433
|
+
<name><surname>Felderer</surname><given-names>Michael</given-names></name>
|
|
434
|
+
</person-group>
|
|
435
|
+
<publisher-name>Springer Nature Switzerland</publisher-name>
|
|
436
|
+
<publisher-loc>Cham</publisher-loc>
|
|
437
|
+
<year iso-8601-date="2024">2024</year>
|
|
438
|
+
<date-in-citation content-type="access-date"><year iso-8601-date="2024-11-21">2024</year><month>11</month><day>21</day></date-in-citation>
|
|
439
|
+
<isbn>978-3-031-64136-7</isbn>
|
|
440
|
+
<uri>https://link.springer.com/10.1007/978-3-031-64136-7_5</uri>
|
|
441
|
+
<pub-id pub-id-type="doi">10.1007/978-3-031-64136-7_5</pub-id>
|
|
442
|
+
<fpage>93</fpage>
|
|
443
|
+
<lpage>123</lpage>
|
|
444
|
+
</element-citation>
|
|
445
|
+
</ref>
|
|
446
|
+
<ref id="ref-zhao_qchecker_2023">
|
|
447
|
+
<element-citation>
|
|
448
|
+
<person-group person-group-type="author">
|
|
449
|
+
<name><surname>Zhao</surname><given-names>Pengzhan</given-names></name>
|
|
450
|
+
<name><surname>Wu</surname><given-names>Xiongfei</given-names></name>
|
|
451
|
+
<name><surname>Li</surname><given-names>Zhuo</given-names></name>
|
|
452
|
+
<name><surname>Zhao</surname><given-names>Jianjun</given-names></name>
|
|
453
|
+
</person-group>
|
|
454
|
+
<article-title>QChecker: Detecting Bugs in Quantum Programs via Static Analysis</article-title>
|
|
455
|
+
<publisher-name>arXiv</publisher-name>
|
|
456
|
+
<year iso-8601-date="2023-04">2023</year><month>04</month>
|
|
457
|
+
<date-in-citation content-type="access-date"><year iso-8601-date="2024-11-25">2024</year><month>11</month><day>25</day></date-in-citation>
|
|
458
|
+
<uri>http://arxiv.org/abs/2304.04387</uri>
|
|
459
|
+
<pub-id pub-id-type="doi">10.48550/arXiv.2304.04387</pub-id>
|
|
460
|
+
</element-citation>
|
|
461
|
+
</ref>
|
|
462
|
+
</ref-list>
|
|
463
|
+
</back>
|
|
464
|
+
</article>
|