@wildboar/asn1-parser 2.5.1 → 2.7.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 (226) hide show
  1. package/README.md +64 -13
  2. package/dist/cli.d.mts +3 -0
  3. package/dist/cli.d.mts.map +1 -0
  4. package/dist/cli.mjs +291 -0
  5. package/dist/cli.mjs.map +1 -0
  6. package/dist/index.d.mts +1 -0
  7. package/dist/index.d.mts.map +1 -1
  8. package/dist/index.mjs +1 -0
  9. package/dist/index.mjs.map +1 -1
  10. package/dist/lib/OptionalParser.d.mts.map +1 -1
  11. package/dist/lib/OptionalParser.mjs +1 -9
  12. package/dist/lib/OptionalParser.mjs.map +1 -1
  13. package/dist/lib/Parser.d.mts +3 -1
  14. package/dist/lib/Parser.d.mts.map +1 -1
  15. package/dist/lib/Parser.mjs +41 -10
  16. package/dist/lib/Parser.mjs.map +1 -1
  17. package/dist/lib/Production.d.mts +2 -0
  18. package/dist/lib/Production.d.mts.map +1 -1
  19. package/dist/lib/Production.mjs +13 -0
  20. package/dist/lib/Production.mjs.map +1 -1
  21. package/dist/lib/ProductionType.d.mts +2 -1
  22. package/dist/lib/ProductionType.d.mts.map +1 -1
  23. package/dist/lib/ProductionType.mjs +1 -0
  24. package/dist/lib/ProductionType.mjs.map +1 -1
  25. package/dist/lib/constructs/Assignment.d.mts.map +1 -1
  26. package/dist/lib/constructs/AssignmentTypes/ObjectAssignment.d.mts +2 -0
  27. package/dist/lib/constructs/AssignmentTypes/ObjectAssignment.d.mts.map +1 -1
  28. package/dist/lib/correct.d.mts.map +1 -1
  29. package/dist/lib/correct.mjs +120 -115
  30. package/dist/lib/correct.mjs.map +1 -1
  31. package/dist/lib/grokers/ConstraintSpecs/GeneralConstraint.d.mts.map +1 -1
  32. package/dist/lib/grokers/ConstraintSpecs/GeneralConstraint.mjs +22 -5
  33. package/dist/lib/grokers/ConstraintSpecs/GeneralConstraint.mjs.map +1 -1
  34. package/dist/lib/grokers/DefinitiveOID.mjs +1 -1
  35. package/dist/lib/grokers/DefinitiveOID.mjs.map +1 -1
  36. package/dist/lib/grokers/Module.d.mts.map +1 -1
  37. package/dist/lib/grokers/Module.mjs +2 -1
  38. package/dist/lib/grokers/Module.mjs.map +1 -1
  39. package/dist/lib/grokers/Types/SetOrSequenceType.d.mts.map +1 -1
  40. package/dist/lib/grokers/Types/SetOrSequenceType.mjs +30 -30
  41. package/dist/lib/grokers/Types/SetOrSequenceType.mjs.map +1 -1
  42. package/dist/lib/grokers/ValueSet.d.mts.map +1 -1
  43. package/dist/lib/grokers/ValueSet.mjs +6 -1
  44. package/dist/lib/grokers/ValueSet.mjs.map +1 -1
  45. package/dist/lib/interfaces/ParserState.d.mts +2 -0
  46. package/dist/lib/interfaces/ParserState.d.mts.map +1 -1
  47. package/dist/lib/interfaces/ParserState.mjs.map +1 -1
  48. package/dist/lib/lex.d.mts.map +1 -1
  49. package/dist/lib/lex.mjs +121 -95
  50. package/dist/lib/lex.mjs.map +1 -1
  51. package/dist/lib/maps/productionTypeToTypeTypeMap.d.mts.map +1 -1
  52. package/dist/lib/maps/productionTypeToTypeTypeMap.mjs +17 -0
  53. package/dist/lib/maps/productionTypeToTypeTypeMap.mjs.map +1 -1
  54. package/dist/lib/normalizers/Assignment/ObjectAssignment.mjs +1 -1
  55. package/dist/lib/normalizers/Assignment/ObjectAssignment.mjs.map +1 -1
  56. package/dist/lib/parse.d.mts.map +1 -1
  57. package/dist/lib/parse.mjs +20 -2
  58. package/dist/lib/parse.mjs.map +1 -1
  59. package/dist/lib/parseMemo.d.mts +18 -0
  60. package/dist/lib/parseMemo.d.mts.map +1 -0
  61. package/dist/lib/parseMemo.mjs +77 -0
  62. package/dist/lib/parseMemo.mjs.map +1 -0
  63. package/dist/lib/parsers/callbacks/Assignment.d.mts.map +1 -1
  64. package/dist/lib/parsers/callbacks/Assignment.mjs +6 -1
  65. package/dist/lib/parsers/callbacks/Assignment.mjs.map +1 -1
  66. package/dist/lib/parsers/callbacks/ObjectClassAssignment.d.mts.map +1 -1
  67. package/dist/lib/parsers/callbacks/ObjectClassAssignment.mjs +20 -10
  68. package/dist/lib/parsers/callbacks/ObjectClassAssignment.mjs.map +1 -1
  69. package/dist/lib/parsers/generic/aliasFor.d.mts.map +1 -1
  70. package/dist/lib/parsers/generic/aliasFor.mjs +4 -1
  71. package/dist/lib/parsers/generic/aliasFor.mjs.map +1 -1
  72. package/dist/lib/parsers/generic/anythingUntil.d.mts.map +1 -1
  73. package/dist/lib/parsers/generic/anythingUntil.mjs +35 -13
  74. package/dist/lib/parsers/generic/anythingUntil.mjs.map +1 -1
  75. package/dist/lib/parsers/generic/assert.d.mts.map +1 -1
  76. package/dist/lib/parsers/generic/assert.mjs +3 -0
  77. package/dist/lib/parsers/generic/assert.mjs.map +1 -1
  78. package/dist/lib/parsers/generic/choiceOf.d.mts.map +1 -1
  79. package/dist/lib/parsers/generic/choiceOf.mjs +7 -4
  80. package/dist/lib/parsers/generic/choiceOf.mjs.map +1 -1
  81. package/dist/lib/parsers/generic/dispatchOnToken.d.mts +8 -0
  82. package/dist/lib/parsers/generic/dispatchOnToken.d.mts.map +1 -0
  83. package/dist/lib/parsers/generic/dispatchOnToken.mjs +43 -0
  84. package/dist/lib/parsers/generic/dispatchOnToken.mjs.map +1 -0
  85. package/dist/lib/parsers/generic/doif.mjs +1 -1
  86. package/dist/lib/parsers/generic/doif.mjs.map +1 -1
  87. package/dist/lib/parsers/generic/index.d.mts +5 -0
  88. package/dist/lib/parsers/generic/index.d.mts.map +1 -1
  89. package/dist/lib/parsers/generic/index.mjs +5 -0
  90. package/dist/lib/parsers/generic/index.mjs.map +1 -1
  91. package/dist/lib/parsers/generic/limitConstructedNesting.d.mts +5 -0
  92. package/dist/lib/parsers/generic/limitConstructedNesting.d.mts.map +1 -0
  93. package/dist/lib/parsers/generic/limitConstructedNesting.mjs +30 -0
  94. package/dist/lib/parsers/generic/limitConstructedNesting.mjs.map +1 -0
  95. package/dist/lib/parsers/generic/literal.d.mts.map +1 -1
  96. package/dist/lib/parsers/generic/literal.mjs +37 -13
  97. package/dist/lib/parsers/generic/literal.mjs.map +1 -1
  98. package/dist/lib/parsers/generic/recursiveParser.d.mts.map +1 -1
  99. package/dist/lib/parsers/generic/recursiveParser.mjs +3 -1
  100. package/dist/lib/parsers/generic/recursiveParser.mjs.map +1 -1
  101. package/dist/lib/parsers/generic/recyclingSequenceOf.d.mts.map +1 -1
  102. package/dist/lib/parsers/generic/recyclingSequenceOf.mjs +10 -10
  103. package/dist/lib/parsers/generic/recyclingSequenceOf.mjs.map +1 -1
  104. package/dist/lib/parsers/generic/repeatable.d.mts.map +1 -1
  105. package/dist/lib/parsers/generic/repeatable.mjs +4 -0
  106. package/dist/lib/parsers/generic/repeatable.mjs.map +1 -1
  107. package/dist/lib/parsers/generic/tokenPeek.d.mts +12 -0
  108. package/dist/lib/parsers/generic/tokenPeek.d.mts.map +1 -0
  109. package/dist/lib/parsers/generic/tokenPeek.mjs +167 -0
  110. package/dist/lib/parsers/generic/tokenPeek.mjs.map +1 -0
  111. package/dist/lib/parsers/generic/when.d.mts +5 -0
  112. package/dist/lib/parsers/generic/when.d.mts.map +1 -0
  113. package/dist/lib/parsers/generic/when.mjs +12 -0
  114. package/dist/lib/parsers/generic/when.mjs.map +1 -0
  115. package/dist/lib/parsers/generic/whitespace.d.mts.map +1 -1
  116. package/dist/lib/parsers/generic/whitespace.mjs +1 -1
  117. package/dist/lib/parsers/generic/whitespace.mjs.map +1 -1
  118. package/dist/lib/parsers/generic/whitespaceIntolerantList.d.mts.map +1 -1
  119. package/dist/lib/parsers/generic/whitespaceIntolerantList.mjs +12 -5
  120. package/dist/lib/parsers/generic/whitespaceIntolerantList.mjs.map +1 -1
  121. package/dist/lib/parsers/generic/whitespaceTolerantSequenceOf.d.mts.map +1 -1
  122. package/dist/lib/parsers/generic/whitespaceTolerantSequenceOf.mjs +11 -1
  123. package/dist/lib/parsers/generic/whitespaceTolerantSequenceOf.mjs.map +1 -1
  124. package/dist/lib/parsers/optimized/ComponentType_NamedType.d.mts.map +1 -1
  125. package/dist/lib/parsers/optimized/ComponentType_NamedType.mjs +4 -2
  126. package/dist/lib/parsers/optimized/ComponentType_NamedType.mjs.map +1 -1
  127. package/dist/lib/parsers/optimized/FieldName_LowercasedFinalPrimitiveFieldName.mjs +2 -5
  128. package/dist/lib/parsers/optimized/FieldName_LowercasedFinalPrimitiveFieldName.mjs.map +1 -1
  129. package/dist/lib/parsers/optimized/FieldName_UppercasedFinalPrimitiveFieldName.mjs +2 -5
  130. package/dist/lib/parsers/optimized/FieldName_UppercasedFinalPrimitiveFieldName.mjs.map +1 -1
  131. package/dist/lib/parsers/optimized/Literal.d.mts.map +1 -1
  132. package/dist/lib/parsers/optimized/Literal.mjs +13 -6
  133. package/dist/lib/parsers/optimized/Literal.mjs.map +1 -1
  134. package/dist/lib/parsers/optimized/ParamGovernor.d.mts.map +1 -1
  135. package/dist/lib/parsers/optimized/ParamGovernor.mjs +9 -4
  136. package/dist/lib/parsers/optimized/ParamGovernor.mjs.map +1 -1
  137. package/dist/lib/parsers/optimized/Setting.d.mts.map +1 -1
  138. package/dist/lib/parsers/optimized/Setting.mjs +1 -1
  139. package/dist/lib/parsers/optimized/Setting.mjs.map +1 -1
  140. package/dist/lib/parsers/optimized/Type.d.mts.map +1 -1
  141. package/dist/lib/parsers/optimized/Type.mjs +13 -8
  142. package/dist/lib/parsers/optimized/Type.mjs.map +1 -1
  143. package/dist/lib/parsers/optimized/Value_listens_to_currentType.d.mts.map +1 -1
  144. package/dist/lib/parsers/optimized/Value_listens_to_currentType.mjs +40 -110
  145. package/dist/lib/parsers/optimized/Value_listens_to_currentType.mjs.map +1 -1
  146. package/dist/lib/parsers/specific/BuiltinType.d.mts +1 -1
  147. package/dist/lib/parsers/specific/BuiltinType.d.mts.map +1 -1
  148. package/dist/lib/parsers/specific/BuiltinType.mjs +59 -31
  149. package/dist/lib/parsers/specific/BuiltinType.mjs.map +1 -1
  150. package/dist/lib/parsers/specific/BuiltinValue.d.mts +1 -1
  151. package/dist/lib/parsers/specific/BuiltinValue.d.mts.map +1 -1
  152. package/dist/lib/parsers/specific/BuiltinValue.mjs +67 -18
  153. package/dist/lib/parsers/specific/BuiltinValue.mjs.map +1 -1
  154. package/dist/lib/parsers/specific/CharacterStringType.d.mts.map +1 -1
  155. package/dist/lib/parsers/specific/CharacterStringType.mjs +11 -5
  156. package/dist/lib/parsers/specific/CharacterStringType.mjs.map +1 -1
  157. package/dist/lib/parsers/specific/ChoiceType.mjs +2 -2
  158. package/dist/lib/parsers/specific/ChoiceType.mjs.map +1 -1
  159. package/dist/lib/parsers/specific/ChoiceValue.mjs +2 -2
  160. package/dist/lib/parsers/specific/ChoiceValue.mjs.map +1 -1
  161. package/dist/lib/parsers/specific/EncodingInstruction.d.mts.map +1 -1
  162. package/dist/lib/parsers/specific/EncodingInstruction.mjs.map +1 -1
  163. package/dist/lib/parsers/specific/EncodingInstructionAssignmentList.d.mts.map +1 -1
  164. package/dist/lib/parsers/specific/EncodingInstructionAssignmentList.mjs.map +1 -1
  165. package/dist/lib/parsers/specific/OpenTypeFieldVal.d.mts.map +1 -1
  166. package/dist/lib/parsers/specific/OpenTypeFieldVal.mjs +3 -3
  167. package/dist/lib/parsers/specific/OpenTypeFieldVal.mjs.map +1 -1
  168. package/dist/lib/parsers/specific/ParameterizedValueSetTypeAssignment.mjs +1 -1
  169. package/dist/lib/parsers/specific/ParameterizedValueSetTypeAssignment.mjs.map +1 -1
  170. package/dist/lib/parsers/specific/ReferencedType.d.mts +1 -1
  171. package/dist/lib/parsers/specific/ReferencedType.d.mts.map +1 -1
  172. package/dist/lib/parsers/specific/ReferencedType.mjs +38 -8
  173. package/dist/lib/parsers/specific/ReferencedType.mjs.map +1 -1
  174. package/dist/lib/parsers/specific/ReferencedValue.d.mts.map +1 -1
  175. package/dist/lib/parsers/specific/ReferencedValue.mjs +6 -2
  176. package/dist/lib/parsers/specific/ReferencedValue.mjs.map +1 -1
  177. package/dist/lib/parsers/specific/RestrictedCharacterStringType.d.mts.map +1 -1
  178. package/dist/lib/parsers/specific/RestrictedCharacterStringType.mjs +6 -16
  179. package/dist/lib/parsers/specific/RestrictedCharacterStringType.mjs.map +1 -1
  180. package/dist/lib/parsers/specific/SequenceOfType.mjs +2 -2
  181. package/dist/lib/parsers/specific/SequenceOfType.mjs.map +1 -1
  182. package/dist/lib/parsers/specific/SequenceOfValue.mjs +2 -2
  183. package/dist/lib/parsers/specific/SequenceOfValue.mjs.map +1 -1
  184. package/dist/lib/parsers/specific/SequenceType.mjs +2 -2
  185. package/dist/lib/parsers/specific/SequenceType.mjs.map +1 -1
  186. package/dist/lib/parsers/specific/SequenceValue.mjs +2 -2
  187. package/dist/lib/parsers/specific/SequenceValue.mjs.map +1 -1
  188. package/dist/lib/parsers/specific/SetOfType.mjs +2 -2
  189. package/dist/lib/parsers/specific/SetOfType.mjs.map +1 -1
  190. package/dist/lib/parsers/specific/SetOfValue.mjs +2 -2
  191. package/dist/lib/parsers/specific/SetOfValue.mjs.map +1 -1
  192. package/dist/lib/parsers/specific/SetType.mjs +2 -2
  193. package/dist/lib/parsers/specific/SetType.mjs.map +1 -1
  194. package/dist/lib/parsers/specific/SetValue.mjs +2 -2
  195. package/dist/lib/parsers/specific/SetValue.mjs.map +1 -1
  196. package/dist/lib/parsers/specific/TypeWithConstraint.mjs +2 -2
  197. package/dist/lib/parsers/specific/TypeWithConstraint.mjs.map +1 -1
  198. package/dist/lib/parsers/specific/UsefulType.d.mts.map +1 -1
  199. package/dist/lib/parsers/specific/UsefulType.mjs +16 -6
  200. package/dist/lib/parsers/specific/UsefulType.mjs.map +1 -1
  201. package/dist/lib/parsers/specific/UserDefinedConstraintParameter.d.mts.map +1 -1
  202. package/dist/lib/parsers/specific/UserDefinedConstraintParameter.mjs +1 -1
  203. package/dist/lib/parsers/specific/UserDefinedConstraintParameter.mjs.map +1 -1
  204. package/dist/lib/parsers/specific/Value.d.mts.map +1 -1
  205. package/dist/lib/parsers/specific/Value.mjs +2 -2
  206. package/dist/lib/parsers/specific/Value.mjs.map +1 -1
  207. package/dist/lib/parsers/specific/ValueSet.d.mts +4 -1
  208. package/dist/lib/parsers/specific/ValueSet.d.mts.map +1 -1
  209. package/dist/lib/parsers/specific/ValueSet.mjs +28 -1
  210. package/dist/lib/parsers/specific/ValueSet.mjs.map +1 -1
  211. package/dist/lib/parsers/specific/ValueSetOptionalitySpec.mjs +1 -1
  212. package/dist/lib/parsers/specific/ValueSetOptionalitySpec.mjs.map +1 -1
  213. package/dist/lib/parsers/specific/ValueSetTypeAssignment.d.mts.map +1 -1
  214. package/dist/lib/parsers/specific/ValueSetTypeAssignment.mjs +1 -1
  215. package/dist/lib/parsers/specific/ValueSetTypeAssignment.mjs.map +1 -1
  216. package/dist/lib/parsers/specific/_word.d.mts.map +1 -1
  217. package/dist/lib/parsers/specific/_word.mjs +6 -3
  218. package/dist/lib/parsers/specific/_word.mjs.map +1 -1
  219. package/dist/lib/parsers/specific/index.d.mts +1 -1
  220. package/dist/lib/parsers/specific/index.d.mts.map +1 -1
  221. package/dist/lib/parsers/specific/index.mjs +1 -1
  222. package/dist/lib/parsers/specific/index.mjs.map +1 -1
  223. package/dist/lib/updateCurrentType.d.mts.map +1 -1
  224. package/dist/lib/updateCurrentType.mjs +9 -2
  225. package/dist/lib/updateCurrentType.mjs.map +1 -1
  226. package/package.json +6 -1
@@ -1 +1 @@
1
- {"version":3,"file":"DefinitiveOID.mjs","sourceRoot":"","sources":["../../../src/lib/grokers/DefinitiveOID.mts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAwB,MAAM,mCAAmC,CAAC;AACzE,OAAO,eAAe,MAAM,+BAA+B,CAAC;AAE5D,MAAM,CAAC,OAAO,UAAU,iBAAiB,CACvC,GAAe,EACf,GAAgB;IAEhB,MAAM,IAAI,GAAW,GAAG,CAAC,IAAI,CAAC;IAC9B,MAAM,IAAI,GAAW,GAAG,CAAC,kBAAkB,IAAI,CAAC,CAAC;IACjD,OAAO,GAAG,CAAC,QAAQ;SAChB,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SACZ,MAAM,CACL,CAAC,KAAiB,EAAW,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,cAAc,CAAC,UAAU,CACzE,CAAC,CAAC,CAAC;SACH,QAAQ;SACR,MAAM,CACL,CAAC,KAAiB,EAAW,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,cAAc,CAAC,UAAU,CACzE;SACA,GAAG,CAAC,CAAC,KAAiB,EAAc,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;SACzD,GAAG,CAAC,CAAC,UAAsB,EAAmB,EAAE;QAC/C,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAC9B,UAAU,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI,EACrC,UAAU,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CACpC,CAAC;QACF,QAAQ,UAAU,CAAC,IAAI,EAAE,CAAC;YACxB,KAAK,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAC7B,OAAO;oBACL,IAAI,EAAE,aAAa;oBACnB,UAAU,EAAE,UAAU;oBACtB,cAAc,EAAE,UAAU,CAAC,IAAI;iBAChC,CAAC;YACJ,CAAC;YACD,KAAK,cAAc,CAAC,oBAAoB,CAAC,CAAC,CAAC;gBACzC,OAAO;oBACL,MAAM,EAAE,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC;oBACnC,UAAU,EAAE,UAAU;oBACtB,cAAc,EAAE,UAAU,CAAC,IAAI;iBAChC,CAAC;YACJ,CAAC;YACD,KAAK,cAAc,CAAC,2BAA2B,CAAC,CAAC,CAAC;gBAChD,MAAM,aAAa,GAAW,aAAa,CAAC;gBAC5C,MAAM,uBAAuB,GAAW,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBACnE,OAAO;oBACL,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,uBAAuB,CAAC;oBACrD,MAAM,EAAE,QAAQ,CACd,aAAa,CAAC,KAAK,CAAC,uBAAuB,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EACpD,EAAE,CACH;oBACD,UAAU,EAAE,UAAU;oBACtB,cAAc,EAAE,UAAU,CAAC,IAAI;iBAChC,CAAC;YACJ,CAAC;YACD,OAAO,CAAC,CAAC,CAAC;gBACR,MAAM,IAAI,eAAe,CACvB,UAAU,EACV,qDAAqD,UAAU,CAAC,IAAI,GAAG,EACvE,GAAG,CAAC,aAAa,CAAC,IAAI,CACvB,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"DefinitiveOID.mjs","sourceRoot":"","sources":["../../../src/lib/grokers/DefinitiveOID.mts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAwB,MAAM,mCAAmC,CAAC;AACzE,OAAO,eAAe,MAAM,+BAA+B,CAAC;AAE5D,MAAM,CAAC,OAAO,UAAU,iBAAiB,CACvC,GAAe,EACf,GAAgB;IAEhB,MAAM,IAAI,GAAW,GAAG,CAAC,IAAI,CAAC;IAC9B,MAAM,IAAI,GAAW,GAAG,CAAC,kBAAkB,IAAI,CAAC,CAAC;IACjD,OAAO,GAAG,CAAC,QAAQ;SAChB,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SACZ,MAAM,CACL,CAAC,KAAiB,EAAW,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,cAAc,CAAC,UAAU,CACzE,CAAC,CAAC,CAAC;SACH,QAAQ;SACR,MAAM,CACL,CAAC,KAAiB,EAAW,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,cAAc,CAAC,UAAU,CACzE;SACA,GAAG,CAAC,CAAC,KAAiB,EAAc,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;SACzD,GAAG,CAAC,CAAC,UAAsB,EAAmB,EAAE;QAC/C,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAC9B,UAAU,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI,EACrC,UAAU,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CACpC,CAAC;QACF,QAAQ,UAAU,CAAC,IAAI,EAAE,CAAC;YACxB,KAAK,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAC7B,OAAO;oBACL,IAAI,EAAE,aAAa;oBACnB,UAAU,EAAE,UAAU;oBACtB,cAAc,EAAE,UAAU,CAAC,IAAI;iBAChC,CAAC;YACJ,CAAC;YACD,KAAK,cAAc,CAAC,oBAAoB,CAAC,CAAC,CAAC;gBACzC,OAAO;oBACL,MAAM,EAAE,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC;oBACnC,UAAU,EAAE,UAAU;oBACtB,cAAc,EAAE,UAAU,CAAC,IAAI;iBAChC,CAAC;YACJ,CAAC;YACD,KAAK,cAAc,CAAC,2BAA2B,CAAC,CAAC,CAAC;gBAChD,MAAM,aAAa,GAAW,aAAa,CAAC;gBAC5C,MAAM,uBAAuB,GAAW,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBACnE,OAAO;oBACL,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,uBAAuB,CAAC,CAAC,OAAO,EAAE;oBAC/D,MAAM,EAAE,QAAQ,CACd,aAAa,CAAC,KAAK,CAAC,uBAAuB,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EACpD,EAAE,CACH;oBACD,UAAU,EAAE,UAAU;oBACtB,cAAc,EAAE,UAAU,CAAC,IAAI;iBAChC,CAAC;YACJ,CAAC;YACD,OAAO,CAAC,CAAC,CAAC;gBACR,MAAM,IAAI,eAAe,CACvB,UAAU,EACV,qDAAqD,UAAU,CAAC,IAAI,GAAG,EACvE,GAAG,CAAC,aAAa,CAAC,IAAI,CACvB,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Module.d.mts","sourceRoot":"","sources":["../../../src/lib/grokers/Module.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,+BAA+B,CAAC;AAC7D,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAC;AAEhD,OAAO,MAAM,MAAM,0BAA0B,CAAC;AAwB9C,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,WAAW,GAAG,MAAM,CAwJ5E"}
1
+ {"version":3,"file":"Module.d.mts","sourceRoot":"","sources":["../../../src/lib/grokers/Module.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,+BAA+B,CAAC;AAC7D,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAC;AAEhD,OAAO,MAAM,MAAM,0BAA0B,CAAC;AAwB9C,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,WAAW,GAAG,MAAM,CAyJ5E"}
@@ -95,7 +95,7 @@ export default function grokModule(cst, ctx) {
95
95
  };
96
96
  child.children
97
97
  .filter((grandchild) => grandchild.type === ProductionType.Assignment)
98
- .forEach((assignment) => {
98
+ .forEach((assignment, i) => {
99
99
  const a = grokAssignment(assignment, ctx);
100
100
  if (a.identifier in assignments) {
101
101
  a.production && duplicateAssignments.push(a.production);
@@ -103,6 +103,7 @@ export default function grokModule(cst, ctx) {
103
103
  else {
104
104
  assignments[a.identifier] = a;
105
105
  }
106
+ a.originalIndex = i;
106
107
  });
107
108
  break;
108
109
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Module.mjs","sourceRoot":"","sources":["../../../src/lib/grokers/Module.mts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Module.mjs","sourceRoot":"","sources":["../../../src/lib/grokers/Module.mts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SetOrSequenceType.d.mts","sourceRoot":"","sources":["../../../../src/lib/grokers/Types/SetOrSequenceType.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,kCAAkC,CAAC;AAChE,OAAO,KAAK,UAAU,MAAM,sBAAsB,CAAC;AAOnD,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,2BAA2B,CAAC;AA6DtD,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,WAAW,GAAG,IAAI,CA6KpE"}
1
+ {"version":3,"file":"SetOrSequenceType.d.mts","sourceRoot":"","sources":["../../../../src/lib/grokers/Types/SetOrSequenceType.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,kCAAkC,CAAC;AAChE,OAAO,KAAK,UAAU,MAAM,sBAAsB,CAAC;AAOnD,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,2BAA2B,CAAC;AA6DtD,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,WAAW,GAAG,IAAI,CAwMpE"}
@@ -39,32 +39,28 @@ export default function grok(cst, ctx) {
39
39
  };
40
40
  }
41
41
  const ComponentTypeListsComponents = components[2].children.filter((child) => child.type !== ProductionType.whitespace);
42
+ const rootComponentTypeLists = ComponentTypeListsComponents.filter((child) => child.type === ProductionType.RootComponentTypeList);
43
+ const startsWithExtensionAndException = ComponentTypeListsComponents[0]?.type ===
44
+ ProductionType.ExtensionAndException;
42
45
  let RootComponentTypeList1 = undefined;
43
46
  let RootComponentTypeList2 = undefined;
44
- let ExtensionAndException = undefined;
45
- let ExtensionAdditions = undefined;
46
- let exception = undefined;
47
- const extensible = ComponentTypeListsComponents.length > 1;
48
- if (ComponentTypeListsComponents[0].type ===
49
- ProductionType.ExtensionAndException) {
50
- ExtensionAndException = ComponentTypeListsComponents[0];
51
- ExtensionAdditions = ComponentTypeListsComponents[1];
52
- if (ComponentTypeListsComponents[2].type === ProductionType.ExtensionEndMarker) {
53
- RootComponentTypeList2 =
54
- ComponentTypeListsComponents[ComponentTypeListsComponents.length - 1];
55
- }
56
- if (ExtensionAndException.children.length > 1) {
57
- const ExceptionSpec = ExtensionAndException.children[ExtensionAndException.children.length - 1];
58
- if (ExceptionSpec.children.length > 0) {
59
- exception = grokExceptionSpec(ExceptionSpec, ctx);
60
- }
61
- }
47
+ if (startsWithExtensionAndException) {
48
+ RootComponentTypeList2 = rootComponentTypeLists[0];
62
49
  }
63
50
  else {
64
- RootComponentTypeList1 = ComponentTypeListsComponents[0];
65
- ExtensionAndException = ComponentTypeListsComponents[0];
66
- ExtensionAdditions = ComponentTypeListsComponents[3];
67
- RootComponentTypeList2 = ComponentTypeListsComponents[6];
51
+ RootComponentTypeList1 = rootComponentTypeLists[0];
52
+ RootComponentTypeList2 = rootComponentTypeLists[1];
53
+ }
54
+ const ExtensionAndException = ComponentTypeListsComponents.find((child) => child.type === ProductionType.ExtensionAndException);
55
+ const ExtensionAdditions = ComponentTypeListsComponents.find((child) => child.type === ProductionType.ExtensionAdditions);
56
+ let exception = undefined;
57
+ const extensible = ExtensionAndException !== undefined;
58
+ if (ExtensionAndException && ExtensionAndException.children.length > 1) {
59
+ const ExceptionSpec = ExtensionAndException.children[ExtensionAndException.children.length - 1];
60
+ if (ExceptionSpec.type === ProductionType.ExceptionSpec &&
61
+ ExceptionSpec.children.length > 0) {
62
+ exception = grokExceptionSpec(ExceptionSpec, ctx);
63
+ }
68
64
  }
69
65
  const rootComponentTypes1 = RootComponentTypeList1
70
66
  ? RootComponentTypeList1.children[0].children
@@ -76,22 +72,26 @@ export default function grok(cst, ctx) {
76
72
  .filter((child) => child.type === ProductionType.ComponentType)
77
73
  .map((ct) => grokComponentType(ct, ctx))
78
74
  : undefined;
79
- const extensionAdditions = ExtensionAdditions && ExtensionAdditions.children.length > 0
80
- ? ExtensionAdditions.children[ExtensionAdditions.children.length - 1].children
75
+ const ExtensionAdditionList = ExtensionAdditions?.children.find((child) => child.type === ProductionType.ExtensionAdditionList);
76
+ const extensionAdditions = ExtensionAdditionList
77
+ ? ExtensionAdditionList.children
81
78
  .filter((child) => child.type === ProductionType.ExtensionAddition)
82
79
  .map((ea) => {
83
80
  if (ea.children[0].type === ProductionType.ComponentType) {
84
81
  return grokComponentType(ea.children[0], ctx);
85
82
  }
86
83
  else {
87
- const VersionNumber = ea.children[0].children[3];
88
- const ComponentTypeList = ea.children[0].children[5];
89
- const versionNumber = VersionNumber.children.length > 0
84
+ const groupComponents = ea.children[0].children.filter((child) => child.type !== ProductionType.whitespace);
85
+ const VersionNumber = groupComponents.find((child) => child.type === ProductionType.VersionNumber);
86
+ const ComponentTypeList = groupComponents.find((child) => child.type === ProductionType.ComponentTypeList);
87
+ const versionNumber = VersionNumber && VersionNumber.children.length > 0
90
88
  ? Number.parseInt(text.slice(VersionNumber.children[0].location.startIndex, VersionNumber.children[0].location.endIndex), 10)
91
89
  : undefined;
92
- const componentTypeList = ComponentTypeList.children
93
- .filter((child) => child.type === ProductionType.ComponentType)
94
- .map((ct) => grokComponentType(ct, ctx));
90
+ const componentTypeList = ComponentTypeList
91
+ ? ComponentTypeList.children
92
+ .filter((child) => child.type === ProductionType.ComponentType)
93
+ .map((ct) => grokComponentType(ct, ctx))
94
+ : [];
95
95
  return {
96
96
  versionNumber,
97
97
  componentTypeList,
@@ -1 +1 @@
1
- {"version":3,"file":"SetOrSequenceType.mjs","sourceRoot":"","sources":["../../../../src/lib/grokers/Types/SetOrSequenceType.mts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SetOrSequenceType.mjs","sourceRoot":"","sources":["../../../../src/lib/grokers/Types/SetOrSequenceType.mts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ValueSet.d.mts","sourceRoot":"","sources":["../../../src/lib/grokers/ValueSet.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,+BAA+B,CAAC;AAE7D,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAI3D,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,WAAW,GAAG,QAAQ,CAOxE"}
1
+ {"version":3,"file":"ValueSet.d.mts","sourceRoot":"","sources":["../../../src/lib/grokers/ValueSet.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,+BAA+B,CAAC;AAE7D,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAK3D,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,WAAW,GAAG,QAAQ,CAWxE"}
@@ -1,7 +1,12 @@
1
1
  import grokElementSetSpecs from './ElementSetSpecs.mjs';
2
2
  import { ProductionType } from '../ProductionType.mjs';
3
3
  import {} from '../constructs/ValueSet.mjs';
4
+ import ASN1SyntaxError from '../errors/ASN1SyntaxError.mjs';
4
5
  export default function grok(cst, ctx) {
5
- return grokElementSetSpecs(cst.children.find((c) => c.type === ProductionType.ElementSetSpecs), ctx);
6
+ const ess = cst.children.find((c) => c.type === ProductionType.ElementSetSpecs);
7
+ if (!ess) {
8
+ throw new ASN1SyntaxError(cst, "Missing ElementSetSpecs CST node immediately under a ValueSet CST node");
9
+ }
10
+ return grokElementSetSpecs(ess, ctx);
6
11
  }
7
12
  //# sourceMappingURL=ValueSet.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ValueSet.mjs","sourceRoot":"","sources":["../../../src/lib/grokers/ValueSet.mts"],"names":[],"mappings":"AACA,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;AAExD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAiB,MAAM,4BAA4B,CAAC;AAI3D,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,GAAe,EAAE,GAAgB;IAC5D,OAAO,mBAAmB,CACxB,GAAG,CAAC,QAAQ,CAAC,IAAI,CACf,CAAC,CAAa,EAAW,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,eAAe,CACxD,EACf,GAAG,CACJ,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"ValueSet.mjs","sourceRoot":"","sources":["../../../src/lib/grokers/ValueSet.mts"],"names":[],"mappings":"AACA,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;AAExD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAiB,MAAM,4BAA4B,CAAC;AAC3D,OAAO,eAAe,MAAM,+BAA+B,CAAC;AAI5D,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,GAAe,EAAE,GAAgB;IAC5D,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAC3B,CAAC,CAAa,EAAW,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,eAAe,CACtE,CAAC;IACF,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,eAAe,CACvB,GAAG,EACH,wEAAwE,CACzE,CAAC;IACJ,CAAC;IACD,OAAO,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACvC,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import type Production from '../Production.mjs';
2
2
  import type ASN1SyntaxError from '../errors/ASN1SyntaxError.mjs';
3
3
  import type ParseContext from './ParseContext.mjs';
4
+ import type { ParseMemo } from '../parseMemo.mjs';
4
5
  import AssignmentType from '../constructs/AssignmentType.mjs';
5
6
  import TypeType from '../constructs/TypeType.mjs';
6
7
  export default interface ParserState {
@@ -16,5 +17,6 @@ export default interface ParserState {
16
17
  readonly definedEnumItems: Set<string>;
17
18
  currentType?: TypeType;
18
19
  justParsedPluralLiteral?: boolean;
20
+ memo?: ParseMemo;
19
21
  }
20
22
  //# sourceMappingURL=ParserState.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ParserState.d.mts","sourceRoot":"","sources":["../../../src/lib/interfaces/ParserState.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,eAAe,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,YAAY,MAAM,oBAAoB,CAAC;AACnD,OAAO,cAAc,MAAM,kCAAkC,CAAC;AAC9D,OAAO,QAAQ,MAAM,4BAA4B,CAAC;AAKlD,MAAM,CAAC,OAAO,WAAW,WAAW;IAMlC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAOtB,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC;IAiB9B,KAAK,CAAC,EAAE,OAAO,CAAC;IAMhB,GAAG,EAAE,UAAU,CAAC;IAMhB,KAAK,EAAE,MAAM,CAAC;IAcd,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAOvD,QAAQ,CAAC,qBAAqB,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC,CAAC;IAOnE,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,IAAI,CAAC,CAAC;IAW/D,QAAQ,CAAC,mBAAmB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAU1C,QAAQ,CAAC,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAcvC,WAAW,CAAC,EAAE,QAAQ,CAAC;IAYvB,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC"}
1
+ {"version":3,"file":"ParserState.d.mts","sourceRoot":"","sources":["../../../src/lib/interfaces/ParserState.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,eAAe,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,YAAY,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,cAAc,MAAM,kCAAkC,CAAC;AAC9D,OAAO,QAAQ,MAAM,4BAA4B,CAAC;AAKlD,MAAM,CAAC,OAAO,WAAW,WAAW;IAMlC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAOtB,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC;IAiB9B,KAAK,CAAC,EAAE,OAAO,CAAC;IAMhB,GAAG,EAAE,UAAU,CAAC;IAMhB,KAAK,EAAE,MAAM,CAAC;IAcd,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAOvD,QAAQ,CAAC,qBAAqB,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC,CAAC;IAOnE,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,IAAI,CAAC,CAAC;IAW/D,QAAQ,CAAC,mBAAmB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAU1C,QAAQ,CAAC,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAcvC,WAAW,CAAC,EAAE,QAAQ,CAAC;IAYvB,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAWlC,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB"}
@@ -1 +1 @@
1
- {"version":3,"file":"ParserState.mjs","sourceRoot":"","sources":["../../../src/lib/interfaces/ParserState.mts"],"names":[],"mappings":"AAGA,OAAO,cAAc,MAAM,kCAAkC,CAAC;AAC9D,OAAO,QAAQ,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"ParserState.mjs","sourceRoot":"","sources":["../../../src/lib/interfaces/ParserState.mts"],"names":[],"mappings":"AAIA,OAAO,cAAc,MAAM,kCAAkC,CAAC;AAC9D,OAAO,QAAQ,MAAM,4BAA4B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"lex.d.mts","sourceRoot":"","sources":["../../src/lib/lex.mts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAkB,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAK9E,OAAO,KAAK,QAAQ,MAAM,2BAA2B,CAAC;AAyCtD,MAAM,CAAC,OAAO,UAAW,GAAG,CAC1B,GAAG,EAAE,MAAM,EACX,QAAQ,CAAC,EAAE,QAAQ,GAClB,gBAAgB,CAAC,UAAU,CAAC,sBAAsB,CAAC,EAAE,IAAI,CAAC,CA+X5D"}
1
+ {"version":3,"file":"lex.d.mts","sourceRoot":"","sources":["../../src/lib/lex.mts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAkB,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAK9E,OAAO,KAAK,QAAQ,MAAM,2BAA2B,CAAC;AA+EtD,MAAM,CAAC,OAAO,UAAW,GAAG,CAC1B,GAAG,EAAE,MAAM,EACX,QAAQ,CAAC,EAAE,QAAQ,GAClB,gBAAgB,CAAC,UAAU,CAAC,sBAAsB,CAAC,EAAE,IAAI,CAAC,CAia5D"}
package/dist/lib/lex.mjs CHANGED
@@ -7,12 +7,16 @@ import nonNewlineWhitespaceCharacters from './nonNewlineWhitespaceCharacters.mjs
7
7
  import ASN1SyntaxError from './errors/ASN1SyntaxError.mjs';
8
8
  import ASN1ParserExpectationError from './errors/ASN1ParserExpectationError.mjs';
9
9
  const CR = '\r'.charCodeAt(0);
10
+ const REALNUMBER = /(0|[1-9]\d*)(?:\.\d*(?:[eE]-?\d+)?|[eE]-?\d+)/y;
10
11
  function isIdentifierCharacter(characterCode) {
11
12
  return ((characterCode >= 0x30 && characterCode <= 0x39) ||
12
13
  (characterCode >= 0x41 && characterCode <= 0x5a) ||
13
14
  (characterCode >= 0x61 && characterCode <= 0x7a) ||
14
15
  characterCode === 0x2d);
15
16
  }
17
+ function columnNumberAt(index, lineStartIndex, columnOfLineStart) {
18
+ return columnOfLineStart + (index - lineStartIndex);
19
+ }
16
20
  export default function* lex(str, startloc) {
17
21
  if (!str || str.length === 0) {
18
22
  return;
@@ -22,13 +26,14 @@ export default function* lex(str, startloc) {
22
26
  let tokenEndIndex = 0;
23
27
  let i = 0;
24
28
  let loops = 0;
29
+ const base = startloc?.startIndex ?? 0;
25
30
  let lineNumber = startloc?.lineNumber ?? 1;
26
- let lineStartIndex = startloc
27
- ? (startloc.startIndex - (startloc.columnNumber - 1))
28
- : 0;
29
- if (lineStartIndex < 0) {
30
- lineStartIndex = 1;
31
- }
31
+ let lineStartIndex = 0;
32
+ let columnOfLineStart = startloc?.columnNumber ?? 1;
33
+ let tokenStartLineNumber = lineNumber;
34
+ let tokenStartColumnNumber = columnOfLineStart;
35
+ let blockCommentDepth = 0;
36
+ let blockCommentResumeAt = 0;
32
37
  function isAtStartOfNewlineSequence() {
33
38
  return (newlineWhitespaceCharacters.has(str.charCodeAt(i)) &&
34
39
  str.charCodeAt(i - 1) !== CR);
@@ -36,6 +41,37 @@ export default function* lex(str, startloc) {
36
41
  function theEndOfTheCurrentTokenIsKnown() {
37
42
  return tokenEndIndex > tokenStartIndex;
38
43
  }
44
+ function finishIdentifierLikeToken() {
45
+ const atTheEnd = i === str.length;
46
+ const characterCode = str.charCodeAt(i);
47
+ const ended = atTheEnd ||
48
+ !isIdentifierCharacter(characterCode) ||
49
+ (!atTheEnd &&
50
+ characterCode === 0x2d &&
51
+ str.charCodeAt(i + 1) === 0x2d);
52
+ if (!ended) {
53
+ return;
54
+ }
55
+ tokenEndIndex = i;
56
+ if (str.charCodeAt(tokenEndIndex - 1) === 0x2d) {
57
+ const ident = str.slice(tokenStartIndex, tokenEndIndex);
58
+ throw new ASN1SyntaxError(new Production(ProductionType.SYNTAX_ERROR, [], {
59
+ startIndex: tokenStartIndex + base,
60
+ endIndex: tokenEndIndex + base,
61
+ lineNumber: tokenStartLineNumber,
62
+ columnNumber: tokenStartColumnNumber,
63
+ }), `Identifier '${ident}' may not end with a hyphen.`);
64
+ }
65
+ const token = str.slice(tokenStartIndex, tokenEndIndex);
66
+ const keywordType = keywordToTokenMap.get(token);
67
+ if (keywordType) {
68
+ tokenType = keywordType;
69
+ }
70
+ else if (tokenType === ProductionType.typereference &&
71
+ token.toUpperCase() === token) {
72
+ tokenType = ProductionType.objectclassreference;
73
+ }
74
+ }
39
75
  while (tokenStartIndex < str.length) {
40
76
  const atTheEnd = i === str.length;
41
77
  if (!theEndOfTheCurrentTokenIsKnown()) {
@@ -43,7 +79,7 @@ export default function* lex(str, startloc) {
43
79
  case ProductionType.empty: {
44
80
  switch (str[i]) {
45
81
  case '-': {
46
- if (str.indexOf('--', i) === i) {
82
+ if (str.startsWith('--', i)) {
47
83
  tokenType = ProductionType.comment;
48
84
  }
49
85
  else {
@@ -53,8 +89,10 @@ export default function* lex(str, startloc) {
53
89
  break;
54
90
  }
55
91
  case '/': {
56
- if (str.indexOf('/*', i) === i) {
92
+ if (str.startsWith('/*', i)) {
57
93
  tokenType = ProductionType.comment;
94
+ blockCommentDepth = 1;
95
+ blockCommentResumeAt = i + 2;
58
96
  }
59
97
  else {
60
98
  tokenType = ProductionType.forwardSlash;
@@ -65,20 +103,28 @@ export default function* lex(str, startloc) {
65
103
  case '"': {
66
104
  tokenType = ProductionType.cstring;
67
105
  let indexOfNextDoubleQuote = str.indexOf('"', i + 1);
68
- while (str[indexOfNextDoubleQuote + 1] === '"') {
106
+ while (indexOfNextDoubleQuote !== -1 &&
107
+ str[indexOfNextDoubleQuote + 1] === '"') {
69
108
  indexOfNextDoubleQuote = str.indexOf('"', indexOfNextDoubleQuote + 2);
70
109
  }
110
+ if (indexOfNextDoubleQuote === -1) {
111
+ throw new ASN1SyntaxError(new Production(ProductionType.SYNTAX_ERROR, [], {
112
+ startIndex: tokenStartIndex + base,
113
+ endIndex: str.length + base,
114
+ lineNumber: tokenStartLineNumber,
115
+ columnNumber: tokenStartColumnNumber,
116
+ }), `Unterminated cstring at index ${i}.`);
117
+ }
71
118
  tokenEndIndex = indexOfNextDoubleQuote + 1;
72
119
  break;
73
120
  }
74
121
  case "'": {
75
122
  const indexOfNextSingleQuote = str.indexOf("'", i + 1);
76
- const base = startloc?.startIndex ?? 0;
77
123
  let errloc = {
78
124
  startIndex: tokenStartIndex + base,
79
125
  endIndex: str.length + base,
80
- lineNumber,
81
- columnNumber: (tokenStartIndex - lineStartIndex) + 1,
126
+ lineNumber: tokenStartLineNumber,
127
+ columnNumber: tokenStartColumnNumber,
82
128
  };
83
129
  if (indexOfNextSingleQuote === -1 ||
84
130
  indexOfNextSingleQuote === str.length - 1) {
@@ -93,7 +139,7 @@ export default function* lex(str, startloc) {
93
139
  tokenType = ProductionType.bstring;
94
140
  tokenEndIndex = indexOfNextSingleQuote + 2;
95
141
  const innards = str.slice(tokenStartIndex + 1, indexOfNextSingleQuote);
96
- if (!/^[01 \t\r\n\f\v]*$/g.test(innards)) {
142
+ if (!/^[01 \t\r\n\f\v\u00A0]*$/.test(innards)) {
97
143
  throw new ASN1SyntaxError(new Production(ProductionType.SYNTAX_ERROR, [], errloc), `Invalid bstring: '${innards}'B.`);
98
144
  }
99
145
  break;
@@ -102,7 +148,7 @@ export default function* lex(str, startloc) {
102
148
  tokenType = ProductionType.hstring;
103
149
  tokenEndIndex = indexOfNextSingleQuote + 2;
104
150
  const innards = str.slice(tokenStartIndex + 1, indexOfNextSingleQuote);
105
- if (!/^[0-9A-F \t\r\n\f\v]*$/g.test(innards)) {
151
+ if (!/^[0-9A-F \t\r\n\f\v\u00A0]*$/.test(innards)) {
106
152
  throw new ASN1SyntaxError(new Production(ProductionType.SYNTAX_ERROR, [], errloc), `Invalid hstring: '${innards}'H.`);
107
153
  }
108
154
  break;
@@ -114,7 +160,7 @@ export default function* lex(str, startloc) {
114
160
  break;
115
161
  }
116
162
  case ':': {
117
- if (str.indexOf('::=', i) === i) {
163
+ if (str.startsWith('::=', i)) {
118
164
  tokenType = ProductionType.assignment;
119
165
  tokenEndIndex = i + 3;
120
166
  }
@@ -132,18 +178,29 @@ export default function* lex(str, startloc) {
132
178
  }
133
179
  const characterCode = str.charCodeAt(i);
134
180
  if (characterCode >= 0x30 && characterCode <= 0x39) {
135
- const fractionalRealMatch = /^(0|(?:[1-9]\d*))\.\d*(?:(e|E)-?\d+)?/.exec(str.slice(i));
136
- const exponentialRealMatch = /^(0|(?:[1-9]\d*))\.\d*(e|E)-?\d+/.exec(str.slice(i));
137
- const match = fractionalRealMatch || exponentialRealMatch || null;
181
+ REALNUMBER.lastIndex = i;
182
+ const match = REALNUMBER.exec(str);
138
183
  if (match) {
139
- if (str.indexOf('..', i + match[0].length - 1) ===
140
- i + match[0].length - 1) {
184
+ if (str.startsWith('..', i + match[0].length - 1)) {
141
185
  tokenType = ProductionType.number;
142
186
  break;
143
187
  }
144
188
  tokenType = ProductionType.realnumber;
145
189
  tokenEndIndex = i + match[0].length;
146
190
  }
191
+ else if (characterCode === 0x30 &&
192
+ i + 1 < str.length &&
193
+ str.charCodeAt(i + 1) >= 0x30 &&
194
+ str.charCodeAt(i + 1) <= 0x39) {
195
+ tokenType = ProductionType.SYNTAX_ERROR;
196
+ let end = i + 2;
197
+ while (end < str.length &&
198
+ str.charCodeAt(end) >= 0x30 &&
199
+ str.charCodeAt(end) <= 0x39) {
200
+ end++;
201
+ }
202
+ tokenEndIndex = end;
203
+ }
147
204
  else {
148
205
  tokenType = ProductionType.number;
149
206
  }
@@ -156,7 +213,7 @@ export default function* lex(str, startloc) {
156
213
  }
157
214
  if (isAtStartOfNewlineSequence()) {
158
215
  tokenType = ProductionType.newlineWhitespace;
159
- if (str.indexOf('\r\n', i) === i) {
216
+ if (str.startsWith('\r\n', i)) {
160
217
  tokenEndIndex = i + 2;
161
218
  }
162
219
  else {
@@ -166,6 +223,10 @@ export default function* lex(str, startloc) {
166
223
  if (nonNewlineWhitespaceCharacters.has(characterCode)) {
167
224
  tokenType = ProductionType.nonNewlineWhitespace;
168
225
  }
226
+ if (tokenType === ProductionType.empty && i < str.length) {
227
+ tokenType = ProductionType.SYNTAX_ERROR;
228
+ tokenEndIndex = i + 1;
229
+ }
169
230
  }
170
231
  }
171
232
  break;
@@ -175,25 +236,38 @@ export default function* lex(str, startloc) {
175
236
  if (atTheEnd) {
176
237
  tokenEndIndex = i;
177
238
  }
178
- else if (str.indexOf('--', i) === i) {
239
+ else if (i >= tokenStartIndex + 2 &&
240
+ str.startsWith('--', i)) {
179
241
  tokenEndIndex = i + 2;
180
242
  }
181
243
  else if (isAtStartOfNewlineSequence()) {
182
244
  tokenEndIndex = i;
183
245
  }
184
246
  }
185
- else if (str[tokenStartIndex] === '/' &&
186
- str.indexOf('*/', i) === i) {
187
- tokenEndIndex = i + 2;
188
- }
189
- else if (atTheEnd) {
190
- const base = startloc?.startIndex ?? 0;
191
- throw new ASN1SyntaxError(new Production(ProductionType.SYNTAX_ERROR, [], {
192
- startIndex: tokenStartIndex + base,
193
- endIndex: str.length + base,
194
- lineNumber,
195
- columnNumber: (tokenStartIndex - lineStartIndex) + 1,
196
- }), 'Unterminated comment.');
247
+ else if (str[tokenStartIndex] === '/') {
248
+ if (atTheEnd) {
249
+ throw new ASN1SyntaxError(new Production(ProductionType.SYNTAX_ERROR, [], {
250
+ startIndex: tokenStartIndex + base,
251
+ endIndex: str.length + base,
252
+ lineNumber: tokenStartLineNumber,
253
+ columnNumber: tokenStartColumnNumber,
254
+ }), 'Unterminated comment.');
255
+ }
256
+ if (i >= blockCommentResumeAt) {
257
+ if (str.startsWith('/*', i)) {
258
+ blockCommentDepth++;
259
+ blockCommentResumeAt = i + 2;
260
+ }
261
+ else if (str.startsWith('*/', i)) {
262
+ blockCommentDepth--;
263
+ if (blockCommentDepth === 0) {
264
+ tokenEndIndex = i + 2;
265
+ }
266
+ else {
267
+ blockCommentResumeAt = i + 2;
268
+ }
269
+ }
270
+ }
197
271
  }
198
272
  break;
199
273
  }
@@ -208,58 +282,9 @@ export default function* lex(str, startloc) {
208
282
  }
209
283
  break;
210
284
  }
211
- case ProductionType.identifier: {
212
- const characterCode = str.charCodeAt(i);
213
- if (atTheEnd ||
214
- !isIdentifierCharacter(characterCode) ||
215
- (!atTheEnd &&
216
- characterCode === 0x2d &&
217
- str.charCodeAt(i + 1) === 0x2d)) {
218
- tokenEndIndex = i;
219
- if (str.charCodeAt(tokenEndIndex - 1) === 0x2d) {
220
- const ident = str.slice(tokenStartIndex, tokenEndIndex);
221
- const base = startloc?.startIndex ?? 0;
222
- throw new ASN1SyntaxError(new Production(ProductionType.SYNTAX_ERROR, [], {
223
- startIndex: tokenStartIndex + base,
224
- endIndex: tokenEndIndex + base,
225
- lineNumber,
226
- columnNumber: (tokenStartIndex - lineStartIndex) + 1,
227
- }), `Identifier '${ident}' may not end with a hyphen.`);
228
- }
229
- }
230
- break;
231
- }
285
+ case ProductionType.identifier:
232
286
  case ProductionType.typereference: {
233
- const characterCode = str.charCodeAt(i);
234
- if (atTheEnd ||
235
- !isIdentifierCharacter(characterCode) ||
236
- (!atTheEnd &&
237
- characterCode === 0x2d &&
238
- str.charCodeAt(i + 1) === 0x2d)) {
239
- tokenEndIndex = i;
240
- if (str.charCodeAt(tokenEndIndex - 1) === 0x2d) {
241
- const ident = str.slice(tokenStartIndex, tokenEndIndex);
242
- const base = startloc?.startIndex ?? 0;
243
- throw new ASN1SyntaxError(new Production(ProductionType.SYNTAX_ERROR, [], {
244
- startIndex: tokenStartIndex + base,
245
- endIndex: tokenEndIndex + base,
246
- lineNumber,
247
- columnNumber: (tokenStartIndex - lineStartIndex) + 1,
248
- }), `Identifier '${ident}' may not end with a hyphen.`);
249
- }
250
- }
251
- if (tokenEndIndex > tokenStartIndex) {
252
- const token = str.slice(tokenStartIndex, tokenEndIndex);
253
- const keywordType = keywordToTokenMap.get(token);
254
- if (keywordType) {
255
- tokenType = keywordType;
256
- break;
257
- }
258
- if (token.toUpperCase() === token) {
259
- tokenType = ProductionType.objectclassreference;
260
- break;
261
- }
262
- }
287
+ finishIdentifierLikeToken();
263
288
  break;
264
289
  }
265
290
  case ProductionType.nonNewlineWhitespace: {
@@ -278,30 +303,31 @@ export default function* lex(str, startloc) {
278
303
  }
279
304
  }
280
305
  if (i === tokenEndIndex && tokenEndIndex > tokenStartIndex) {
281
- const base = startloc?.startIndex ?? 0;
282
306
  yield new Production(tokenType, [], {
283
307
  startIndex: tokenStartIndex + base,
284
308
  endIndex: tokenEndIndex + base,
285
- lineNumber,
286
- columnNumber: (tokenStartIndex - lineStartIndex) + 1,
309
+ lineNumber: tokenStartLineNumber,
310
+ columnNumber: tokenStartColumnNumber,
287
311
  });
288
- if (tokenType === ProductionType.newlineWhitespace) {
289
- lineNumber++;
290
- lineStartIndex = i;
291
- }
292
312
  tokenStartIndex = tokenEndIndex;
293
313
  tokenType = ProductionType.empty;
314
+ tokenStartLineNumber = lineNumber;
315
+ tokenStartColumnNumber = columnNumberAt(tokenStartIndex, lineStartIndex, columnOfLineStart);
294
316
  }
295
317
  else {
318
+ if (isAtStartOfNewlineSequence()) {
319
+ lineNumber++;
320
+ lineStartIndex = i + (str.startsWith('\r\n', i) ? 2 : 1);
321
+ columnOfLineStart = 1;
322
+ }
296
323
  i++;
297
324
  }
298
325
  if (loops > str.length * 4) {
299
- const base = startloc?.startIndex ?? 0;
300
326
  throw new ASN1ParserExpectationError('Lexer caught in infinite loop.', new Production(ProductionType.SYNTAX_ERROR, [], {
301
327
  startIndex: tokenStartIndex + base,
302
328
  endIndex: tokenEndIndex + base,
303
- lineNumber,
304
- columnNumber: (tokenStartIndex - lineStartIndex) + 1,
329
+ lineNumber: tokenStartLineNumber,
330
+ columnNumber: tokenStartColumnNumber,
305
331
  }));
306
332
  }
307
333
  loops++;