qasm-ts 1.1.3 → 2.1.0

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.
Files changed (203) hide show
  1. package/.eslintrc.json +13 -0
  2. package/.github/workflows/draft-pdf.yml +24 -0
  3. package/CONTRIBUTING.md +3 -0
  4. package/LICENSE +201 -0
  5. package/dist/errors.js +128 -2
  6. package/dist/lexer.js +110 -291
  7. package/dist/main.js +123 -18
  8. package/dist/parser.js +117 -482
  9. package/dist/{ast.js → qasm2/ast.js} +71 -2
  10. package/dist/qasm2/lexer.js +489 -0
  11. package/dist/qasm2/parser.js +659 -0
  12. package/dist/qasm2/token.js +160 -0
  13. package/dist/qasm3/ast.js +1081 -0
  14. package/dist/qasm3/lexer.js +673 -0
  15. package/dist/qasm3/parser.js +2083 -0
  16. package/dist/qasm3/token.js +425 -0
  17. package/dist/version.js +57 -0
  18. package/docs/assets/hierarchy.js +1 -0
  19. package/docs/custom.css +3 -0
  20. package/docs/docs-readme.md +208 -0
  21. package/docs/index.html +17 -0
  22. package/docs/typedoc/.nojekyll +1 -0
  23. package/docs/typedoc/assets/custom.css +3 -0
  24. package/docs/typedoc/assets/hierarchy.js +1 -0
  25. package/docs/typedoc/assets/highlight.css +99 -0
  26. package/docs/typedoc/assets/icons.js +18 -0
  27. package/docs/typedoc/assets/icons.svg +1 -0
  28. package/docs/typedoc/assets/main.js +60 -0
  29. package/docs/typedoc/assets/navigation.js +1 -0
  30. package/docs/typedoc/assets/search.js +1 -0
  31. package/docs/typedoc/assets/style.css +1633 -0
  32. package/docs/typedoc/classes/Error_Handling.BadArgumentError.html +12 -0
  33. package/docs/typedoc/classes/Error_Handling.BadBarrierError.html +12 -0
  34. package/docs/typedoc/classes/Error_Handling.BadClassicalTypeError.html +12 -0
  35. package/docs/typedoc/classes/Error_Handling.BadConditionalError.html +12 -0
  36. package/docs/typedoc/classes/Error_Handling.BadCregError.html +12 -0
  37. package/docs/typedoc/classes/Error_Handling.BadEqualsError.html +12 -0
  38. package/docs/typedoc/classes/Error_Handling.BadExpressionError.html +12 -0
  39. package/docs/typedoc/classes/Error_Handling.BadGateError.html +12 -0
  40. package/docs/typedoc/classes/Error_Handling.BadIncludeError.html +12 -0
  41. package/docs/typedoc/classes/Error_Handling.BadLoopError.html +12 -0
  42. package/docs/typedoc/classes/Error_Handling.BadMeasurementError.html +12 -0
  43. package/docs/typedoc/classes/Error_Handling.BadParameterError.html +12 -0
  44. package/docs/typedoc/classes/Error_Handling.BadQregError.html +12 -0
  45. package/docs/typedoc/classes/Error_Handling.BadQuantumInstructionError.html +12 -0
  46. package/docs/typedoc/classes/Error_Handling.BadStringLiteralError.html +12 -0
  47. package/docs/typedoc/classes/Error_Handling.BadSubroutineError.html +12 -0
  48. package/docs/typedoc/classes/Error_Handling.MissingBraceError.html +12 -0
  49. package/docs/typedoc/classes/Error_Handling.MissingSemicolonError.html +12 -0
  50. package/docs/typedoc/classes/Error_Handling.UnsupportedOpenQASMVersionError.html +12 -0
  51. package/docs/typedoc/classes/Version_Management.OpenQASMVersion.html +16 -0
  52. package/docs/typedoc/classes/qasm2_ast.ApplyGate.html +6 -0
  53. package/docs/typedoc/classes/qasm2_ast.AstNode.html +3 -0
  54. package/docs/typedoc/classes/qasm2_ast.Barrier.html +5 -0
  55. package/docs/typedoc/classes/qasm2_ast.CReg.html +5 -0
  56. package/docs/typedoc/classes/qasm2_ast.Cos.html +3 -0
  57. package/docs/typedoc/classes/qasm2_ast.Divide.html +3 -0
  58. package/docs/typedoc/classes/qasm2_ast.Exp.html +3 -0
  59. package/docs/typedoc/classes/qasm2_ast.Gate.html +7 -0
  60. package/docs/typedoc/classes/qasm2_ast.Id.html +4 -0
  61. package/docs/typedoc/classes/qasm2_ast.If.html +6 -0
  62. package/docs/typedoc/classes/qasm2_ast.Include.html +4 -0
  63. package/docs/typedoc/classes/qasm2_ast.Ln.html +3 -0
  64. package/docs/typedoc/classes/qasm2_ast.Measure.html +7 -0
  65. package/docs/typedoc/classes/qasm2_ast.Minus.html +3 -0
  66. package/docs/typedoc/classes/qasm2_ast.NNInteger.html +4 -0
  67. package/docs/typedoc/classes/qasm2_ast.Opaque.html +6 -0
  68. package/docs/typedoc/classes/qasm2_ast.Pi.html +3 -0
  69. package/docs/typedoc/classes/qasm2_ast.Plus.html +3 -0
  70. package/docs/typedoc/classes/qasm2_ast.Power.html +3 -0
  71. package/docs/typedoc/classes/qasm2_ast.QReg.html +5 -0
  72. package/docs/typedoc/classes/qasm2_ast.Real.html +4 -0
  73. package/docs/typedoc/classes/qasm2_ast.Sin.html +3 -0
  74. package/docs/typedoc/classes/qasm2_ast.Sqrt.html +3 -0
  75. package/docs/typedoc/classes/qasm2_ast.Tan.html +3 -0
  76. package/docs/typedoc/classes/qasm2_ast.Times.html +3 -0
  77. package/docs/typedoc/classes/qasm2_ast.Variable.html +4 -0
  78. package/docs/typedoc/classes/qasm2_ast.Version.html +4 -0
  79. package/docs/typedoc/classes/qasm2_lexer.default.html +57 -0
  80. package/docs/typedoc/classes/qasm2_parser.default.html +93 -0
  81. package/docs/typedoc/classes/qasm3_ast.AliasStatement.html +5 -0
  82. package/docs/typedoc/classes/qasm3_ast.AngleType.html +4 -0
  83. package/docs/typedoc/classes/qasm3_ast.Arithmetic.html +6 -0
  84. package/docs/typedoc/classes/qasm3_ast.ArrayAccess.html +5 -0
  85. package/docs/typedoc/classes/qasm3_ast.ArrayDeclaration.html +7 -0
  86. package/docs/typedoc/classes/qasm3_ast.ArrayInitializer.html +4 -0
  87. package/docs/typedoc/classes/qasm3_ast.ArrayReference.html +5 -0
  88. package/docs/typedoc/classes/qasm3_ast.AssignmentStatement.html +5 -0
  89. package/docs/typedoc/classes/qasm3_ast.AstNode.html +3 -0
  90. package/docs/typedoc/classes/qasm3_ast.Binary.html +6 -0
  91. package/docs/typedoc/classes/qasm3_ast.BitType.html +4 -0
  92. package/docs/typedoc/classes/qasm3_ast.BitstringLiteral.html +4 -0
  93. package/docs/typedoc/classes/qasm3_ast.BoolType.html +3 -0
  94. package/docs/typedoc/classes/qasm3_ast.BooleanLiteral.html +4 -0
  95. package/docs/typedoc/classes/qasm3_ast.BoxDefinition.html +7 -0
  96. package/docs/typedoc/classes/qasm3_ast.BranchingStatement.html +8 -0
  97. package/docs/typedoc/classes/qasm3_ast.BreakStatement.html +3 -0
  98. package/docs/typedoc/classes/qasm3_ast.CalibrationGrammarDeclaration.html +6 -0
  99. package/docs/typedoc/classes/qasm3_ast.CaseStatement.html +5 -0
  100. package/docs/typedoc/classes/qasm3_ast.Cast.html +5 -0
  101. package/docs/typedoc/classes/qasm3_ast.ClassicalDeclaration.html +7 -0
  102. package/docs/typedoc/classes/qasm3_ast.ClassicalType.html +3 -0
  103. package/docs/typedoc/classes/qasm3_ast.ComplexType.html +6 -0
  104. package/docs/typedoc/classes/qasm3_ast.ContinueStatement.html +3 -0
  105. package/docs/typedoc/classes/qasm3_ast.DefaultStatement.html +4 -0
  106. package/docs/typedoc/classes/qasm3_ast.DurationLiteral.html +5 -0
  107. package/docs/typedoc/classes/qasm3_ast.DurationOf.html +4 -0
  108. package/docs/typedoc/classes/qasm3_ast.DurationType.html +3 -0
  109. package/docs/typedoc/classes/qasm3_ast.Euler.html +3 -0
  110. package/docs/typedoc/classes/qasm3_ast.Expression.html +3 -0
  111. package/docs/typedoc/classes/qasm3_ast.ExternSignature.html +8 -0
  112. package/docs/typedoc/classes/qasm3_ast.FloatLiteral.html +4 -0
  113. package/docs/typedoc/classes/qasm3_ast.FloatType.html +6 -0
  114. package/docs/typedoc/classes/qasm3_ast.ForLoopStatement.html +12 -0
  115. package/docs/typedoc/classes/qasm3_ast.HardwareQubit.html +5 -0
  116. package/docs/typedoc/classes/qasm3_ast.IODeclaration.html +5 -0
  117. package/docs/typedoc/classes/qasm3_ast.Identifier.html +4 -0
  118. package/docs/typedoc/classes/qasm3_ast.ImaginaryLiteral.html +4 -0
  119. package/docs/typedoc/classes/qasm3_ast.Include.html +6 -0
  120. package/docs/typedoc/classes/qasm3_ast.IndexSet.html +5 -0
  121. package/docs/typedoc/classes/qasm3_ast.IntType.html +4 -0
  122. package/docs/typedoc/classes/qasm3_ast.IntegerLiteral.html +4 -0
  123. package/docs/typedoc/classes/qasm3_ast.MathFunction.html +5 -0
  124. package/docs/typedoc/classes/qasm3_ast.NumericLiteral.html +4 -0
  125. package/docs/typedoc/classes/qasm3_ast.Parameters.html +4 -0
  126. package/docs/typedoc/classes/qasm3_ast.Pi.html +3 -0
  127. package/docs/typedoc/classes/qasm3_ast.ProgramBlock.html +7 -0
  128. package/docs/typedoc/classes/qasm3_ast.QuantumBarrier.html +6 -0
  129. package/docs/typedoc/classes/qasm3_ast.QuantumBlock.html +6 -0
  130. package/docs/typedoc/classes/qasm3_ast.QuantumDeclaration.html +8 -0
  131. package/docs/typedoc/classes/qasm3_ast.QuantumDelay.html +5 -0
  132. package/docs/typedoc/classes/qasm3_ast.QuantumGateCall.html +9 -0
  133. package/docs/typedoc/classes/qasm3_ast.QuantumGateDefinition.html +9 -0
  134. package/docs/typedoc/classes/qasm3_ast.QuantumGateModifier.html +5 -0
  135. package/docs/typedoc/classes/qasm3_ast.QuantumMeasurement.html +6 -0
  136. package/docs/typedoc/classes/qasm3_ast.QuantumMeasurementAssignment.html +8 -0
  137. package/docs/typedoc/classes/qasm3_ast.QuantumReset.html +4 -0
  138. package/docs/typedoc/classes/qasm3_ast.Range.html +6 -0
  139. package/docs/typedoc/classes/qasm3_ast.ReturnStatement.html +4 -0
  140. package/docs/typedoc/classes/qasm3_ast.SizeOf.html +5 -0
  141. package/docs/typedoc/classes/qasm3_ast.Statement.html +12 -0
  142. package/docs/typedoc/classes/qasm3_ast.StretchType.html +3 -0
  143. package/docs/typedoc/classes/qasm3_ast.SubroutineBlock.html +6 -0
  144. package/docs/typedoc/classes/qasm3_ast.SubroutineCall.html +5 -0
  145. package/docs/typedoc/classes/qasm3_ast.SubroutineDefinition.html +10 -0
  146. package/docs/typedoc/classes/qasm3_ast.SubscriptedIdentifier.html +5 -0
  147. package/docs/typedoc/classes/qasm3_ast.SwitchStatement.html +6 -0
  148. package/docs/typedoc/classes/qasm3_ast.Tau.html +3 -0
  149. package/docs/typedoc/classes/qasm3_ast.TrigFunction.html +5 -0
  150. package/docs/typedoc/classes/qasm3_ast.UIntType.html +4 -0
  151. package/docs/typedoc/classes/qasm3_ast.Unary.html +5 -0
  152. package/docs/typedoc/classes/qasm3_ast.Version.html +6 -0
  153. package/docs/typedoc/classes/qasm3_ast.WhileLoopStatement.html +6 -0
  154. package/docs/typedoc/classes/qasm3_lexer.default.html +71 -0
  155. package/docs/typedoc/classes/qasm3_parser.default.html +237 -0
  156. package/docs/typedoc/enums/Version_Management.OpenQASMMajorVersion.html +4 -0
  157. package/docs/typedoc/enums/qasm2_token.Token.html +42 -0
  158. package/docs/typedoc/enums/qasm3_ast.ArithmeticOp.html +9 -0
  159. package/docs/typedoc/enums/qasm3_ast.ArrayReferenceModifier.html +4 -0
  160. package/docs/typedoc/enums/qasm3_ast.BinaryOp.html +15 -0
  161. package/docs/typedoc/enums/qasm3_ast.DurationUnit.html +7 -0
  162. package/docs/typedoc/enums/qasm3_ast.IOModifier.html +4 -0
  163. package/docs/typedoc/enums/qasm3_ast.MathFunctionTypes.html +12 -0
  164. package/docs/typedoc/enums/qasm3_ast.QuantumGateModifierName.html +6 -0
  165. package/docs/typedoc/enums/qasm3_ast.TrigFunctionTypes.html +8 -0
  166. package/docs/typedoc/enums/qasm3_ast.UnaryOp.html +5 -0
  167. package/docs/typedoc/enums/qasm3_token.Token.html +113 -0
  168. package/docs/typedoc/functions/Lexing.lex.html +24 -0
  169. package/docs/typedoc/functions/Main_Functions.parseFile.html +13 -0
  170. package/docs/typedoc/functions/Main_Functions.parseString.html +19 -0
  171. package/docs/typedoc/functions/Parsing.parse.html +15 -0
  172. package/docs/typedoc/functions/qasm2_token.inverseLookup.html +3 -0
  173. package/docs/typedoc/functions/qasm2_token.lookup.html +4 -0
  174. package/docs/typedoc/functions/qasm2_token.notParam.html +3 -0
  175. package/docs/typedoc/functions/qasm3_token.inverseLookup.html +9 -0
  176. package/docs/typedoc/functions/qasm3_token.lookup.html +10 -0
  177. package/docs/typedoc/functions/qasm3_token.notParam.html +11 -0
  178. package/docs/typedoc/hierarchy.html +1 -0
  179. package/docs/typedoc/index.html +76 -0
  180. package/docs/typedoc/modules/Error_Handling.html +5 -0
  181. package/docs/typedoc/modules/Lexing.html +20 -0
  182. package/docs/typedoc/modules/Main_Functions.html +2 -0
  183. package/docs/typedoc/modules/Parsing.html +24 -0
  184. package/docs/typedoc/modules/Version_Management.html +8 -0
  185. package/docs/typedoc/modules/qasm2_ast.html +22 -0
  186. package/docs/typedoc/modules/qasm2_lexer.html +24 -0
  187. package/docs/typedoc/modules/qasm2_parser.html +21 -0
  188. package/docs/typedoc/modules/qasm2_token.html +15 -0
  189. package/docs/typedoc/modules/qasm3_ast.html +26 -0
  190. package/docs/typedoc/modules/qasm3_lexer.html +25 -0
  191. package/docs/typedoc/modules/qasm3_parser.html +25 -0
  192. package/docs/typedoc/modules/qasm3_token.html +15 -0
  193. package/docs/typedoc/modules.html +1 -0
  194. package/docs/typedoc/types/Error_Handling.ReturnErrorConstructor.html +2 -0
  195. package/docs/typedoc.json +47 -0
  196. package/package.json +10 -5
  197. package/paper/jats/paper.jats +464 -0
  198. package/paper/main.bib +191 -0
  199. package/paper/paper.md +166 -0
  200. package/paper/paper.pdf +0 -0
  201. package/readme.md +117 -47
  202. package/dist/example.js +0 -22
  203. package/dist/token.js +0 -89
package/dist/token.js DELETED
@@ -1,89 +0,0 @@
1
- "use strict";
2
- exports.__esModule = true;
3
- exports.inverseLookup = exports.lookup = exports.notParam = exports.Token = void 0;
4
- var Token;
5
- (function (Token) {
6
- Token[Token["Illegal"] = 0] = "Illegal";
7
- Token[Token["EndOfFile"] = 1] = "EndOfFile";
8
- Token[Token["Real"] = 2] = "Real";
9
- Token[Token["NNInteger"] = 3] = "NNInteger";
10
- Token[Token["Id"] = 4] = "Id";
11
- Token[Token["OpenQASM"] = 5] = "OpenQASM";
12
- Token[Token["Semicolon"] = 6] = "Semicolon";
13
- Token[Token["Comma"] = 7] = "Comma";
14
- Token[Token["LParen"] = 8] = "LParen";
15
- Token[Token["LSParen"] = 9] = "LSParen";
16
- Token[Token["LCParen"] = 10] = "LCParen";
17
- Token[Token["RParen"] = 11] = "RParen";
18
- Token[Token["RSParen"] = 12] = "RSParen";
19
- Token[Token["RCParen"] = 13] = "RCParen";
20
- Token[Token["Arrow"] = 14] = "Arrow";
21
- Token[Token["Equals"] = 15] = "Equals";
22
- Token[Token["Plus"] = 16] = "Plus";
23
- Token[Token["Minus"] = 17] = "Minus";
24
- Token[Token["Times"] = 18] = "Times";
25
- Token[Token["Divide"] = 19] = "Divide";
26
- Token[Token["Power"] = 20] = "Power";
27
- Token[Token["Sin"] = 21] = "Sin";
28
- Token[Token["Cos"] = 22] = "Cos";
29
- Token[Token["Tan"] = 23] = "Tan";
30
- Token[Token["Exp"] = 24] = "Exp";
31
- Token[Token["Ln"] = 25] = "Ln";
32
- Token[Token["Sqrt"] = 26] = "Sqrt";
33
- Token[Token["Pi"] = 27] = "Pi";
34
- Token[Token["QReg"] = 28] = "QReg";
35
- Token[Token["CReg"] = 29] = "CReg";
36
- Token[Token["Barrier"] = 30] = "Barrier";
37
- Token[Token["Gate"] = 31] = "Gate";
38
- Token[Token["Measure"] = 32] = "Measure";
39
- Token[Token["Reset"] = 33] = "Reset";
40
- Token[Token["Include"] = 34] = "Include";
41
- Token[Token["If"] = 35] = "If";
42
- Token[Token["String"] = 36] = "String";
43
- })(Token || (Token = {}));
44
- exports.Token = Token;
45
- var lookupMap = {
46
- 'if': Token.If,
47
- 'sin': Token.Sin,
48
- 'cos': Token.Cos,
49
- 'tan': Token.Tan,
50
- 'exp': Token.Exp,
51
- 'ln': Token.Ln,
52
- 'sqrt': Token.Sqrt,
53
- 'pi': Token.Pi,
54
- '+': Token.Plus,
55
- '-': Token.Minus,
56
- '/': Token.Divide,
57
- '*': Token.Times,
58
- '^': Token.Power
59
- };
60
- /**
61
- * Returns the token that represents a given string.
62
- * @param ident - The string.
63
- * @return The corresponding token.
64
- */
65
- function lookup(ident) {
66
- return ident in lookupMap ? lookupMap[ident] : Token.Id;
67
- }
68
- exports.lookup = lookup;
69
- /**
70
- * Returns the string representation of a token.
71
- * @param tokens - The token.
72
- * @return The string representation of the token.
73
- */
74
- function inverseLookup(token) {
75
- return Object.keys(lookupMap).find(function (ident) { return lookupMap[ident] == token; });
76
- }
77
- exports.inverseLookup = inverseLookup;
78
- /**
79
- * Determines whether a token denotes a parameter.
80
- * @param tokens - The token.
81
- * @return Whether the token does NOT denote a parameter.
82
- */
83
- function notParam(token) {
84
- if (token == Token.NNInteger || token == Token.Real || token == Token.Id || this.inverseLookup(token)) {
85
- return false;
86
- }
87
- return true;
88
- }
89
- exports.notParam = notParam;