@noldova/context.parsers.regex 0.0.0-stage → 0.0.2

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 (320) hide show
  1. package/LICENSE +21 -0
  2. package/api/index.d.ts +1752 -0
  3. package/api/index.js +78 -0
  4. package/api/index.js.map +1 -0
  5. package/extensions/nodes/assertions/regex-end-assertion.node.extensions.js +12 -0
  6. package/extensions/nodes/assertions/regex-end-assertion.node.extensions.js.map +1 -0
  7. package/extensions/nodes/assertions/regex-non-word-boundary-assertion.node.extensions.js +12 -0
  8. package/extensions/nodes/assertions/regex-non-word-boundary-assertion.node.extensions.js.map +1 -0
  9. package/extensions/nodes/assertions/regex-start-assertion.node.extensions.js +12 -0
  10. package/extensions/nodes/assertions/regex-start-assertion.node.extensions.js.map +1 -0
  11. package/extensions/nodes/assertions/regex-word-boundary-assertion.node.extensions.js +12 -0
  12. package/extensions/nodes/assertions/regex-word-boundary-assertion.node.extensions.js.map +1 -0
  13. package/extensions/nodes/classes/regex-character-class.node.extensions.js +12 -0
  14. package/extensions/nodes/classes/regex-character-class.node.extensions.js.map +1 -0
  15. package/extensions/nodes/classes/regex-class-intersection.node.extensions.js +12 -0
  16. package/extensions/nodes/classes/regex-class-intersection.node.extensions.js.map +1 -0
  17. package/extensions/nodes/classes/regex-class-string-disjunction.node.extensions.js +12 -0
  18. package/extensions/nodes/classes/regex-class-string-disjunction.node.extensions.js.map +1 -0
  19. package/extensions/nodes/classes/regex-class-subtraction.node.extensions.js +12 -0
  20. package/extensions/nodes/classes/regex-class-subtraction.node.extensions.js.map +1 -0
  21. package/extensions/nodes/classes/regex-class-union.node.extensions.js +12 -0
  22. package/extensions/nodes/classes/regex-class-union.node.extensions.js.map +1 -0
  23. package/extensions/nodes/escapes/regex-backspace-escape.node.extensions.js +13 -0
  24. package/extensions/nodes/escapes/regex-backspace-escape.node.extensions.js.map +1 -0
  25. package/extensions/nodes/escapes/regex-carriage-return-escape.node.extensions.js +13 -0
  26. package/extensions/nodes/escapes/regex-carriage-return-escape.node.extensions.js.map +1 -0
  27. package/extensions/nodes/escapes/regex-class-control-escape.node.extensions.js +12 -0
  28. package/extensions/nodes/escapes/regex-class-control-escape.node.extensions.js.map +1 -0
  29. package/extensions/nodes/escapes/regex-control-letter-escape.node.extensions.js +12 -0
  30. package/extensions/nodes/escapes/regex-control-letter-escape.node.extensions.js.map +1 -0
  31. package/extensions/nodes/escapes/regex-form-feed-escape.node.extensions.js +13 -0
  32. package/extensions/nodes/escapes/regex-form-feed-escape.node.extensions.js.map +1 -0
  33. package/extensions/nodes/escapes/regex-hex-escape.node.extensions.js +12 -0
  34. package/extensions/nodes/escapes/regex-hex-escape.node.extensions.js.map +1 -0
  35. package/extensions/nodes/escapes/regex-identity-escape.node.extensions.js +12 -0
  36. package/extensions/nodes/escapes/regex-identity-escape.node.extensions.js.map +1 -0
  37. package/extensions/nodes/escapes/regex-legacy-octal-escape.node.extensions.js +12 -0
  38. package/extensions/nodes/escapes/regex-legacy-octal-escape.node.extensions.js.map +1 -0
  39. package/extensions/nodes/escapes/regex-newline-escape.node.extensions.js +13 -0
  40. package/extensions/nodes/escapes/regex-newline-escape.node.extensions.js.map +1 -0
  41. package/extensions/nodes/escapes/regex-null-escape.node.extensions.js +13 -0
  42. package/extensions/nodes/escapes/regex-null-escape.node.extensions.js.map +1 -0
  43. package/extensions/nodes/escapes/regex-tab-escape.node.extensions.js +13 -0
  44. package/extensions/nodes/escapes/regex-tab-escape.node.extensions.js.map +1 -0
  45. package/extensions/nodes/escapes/regex-unicode-escape.node.extensions.js +12 -0
  46. package/extensions/nodes/escapes/regex-unicode-escape.node.extensions.js.map +1 -0
  47. package/extensions/nodes/escapes/regex-unicode-property-escape.node.extensions.js +12 -0
  48. package/extensions/nodes/escapes/regex-unicode-property-escape.node.extensions.js.map +1 -0
  49. package/extensions/nodes/escapes/regex-vertical-tab-escape.node.extensions.js +13 -0
  50. package/extensions/nodes/escapes/regex-vertical-tab-escape.node.extensions.js.map +1 -0
  51. package/extensions/nodes/node.extensions.js +78 -0
  52. package/extensions/nodes/node.extensions.js.map +1 -0
  53. package/extensions/nodes/punctuators/regex-ampersand-ampersand.node.extensions.js +21 -0
  54. package/extensions/nodes/punctuators/regex-ampersand-ampersand.node.extensions.js.map +1 -0
  55. package/extensions/nodes/punctuators/regex-asterisk.node.extensions.js +16 -0
  56. package/extensions/nodes/punctuators/regex-asterisk.node.extensions.js.map +1 -0
  57. package/extensions/nodes/punctuators/regex-bar.node.extensions.js +12 -0
  58. package/extensions/nodes/punctuators/regex-bar.node.extensions.js.map +1 -0
  59. package/extensions/nodes/punctuators/regex-close-brace.node.extensions.js +16 -0
  60. package/extensions/nodes/punctuators/regex-close-brace.node.extensions.js.map +1 -0
  61. package/extensions/nodes/punctuators/regex-close-bracket.node.extensions.js +16 -0
  62. package/extensions/nodes/punctuators/regex-close-bracket.node.extensions.js.map +1 -0
  63. package/extensions/nodes/punctuators/regex-close-parenthesis.node.extensions.js +12 -0
  64. package/extensions/nodes/punctuators/regex-close-parenthesis.node.extensions.js.map +1 -0
  65. package/extensions/nodes/punctuators/regex-colon.node.extensions.js +14 -0
  66. package/extensions/nodes/punctuators/regex-colon.node.extensions.js.map +1 -0
  67. package/extensions/nodes/punctuators/regex-comma.node.extensions.js +14 -0
  68. package/extensions/nodes/punctuators/regex-comma.node.extensions.js.map +1 -0
  69. package/extensions/nodes/punctuators/regex-equals.node.extensions.js +14 -0
  70. package/extensions/nodes/punctuators/regex-equals.node.extensions.js.map +1 -0
  71. package/extensions/nodes/punctuators/regex-exclamation.node.extensions.js +14 -0
  72. package/extensions/nodes/punctuators/regex-exclamation.node.extensions.js.map +1 -0
  73. package/extensions/nodes/punctuators/regex-greater-than.node.extensions.js +14 -0
  74. package/extensions/nodes/punctuators/regex-greater-than.node.extensions.js.map +1 -0
  75. package/extensions/nodes/punctuators/regex-hyphen-hyphen.node.extensions.js +21 -0
  76. package/extensions/nodes/punctuators/regex-hyphen-hyphen.node.extensions.js.map +1 -0
  77. package/extensions/nodes/punctuators/regex-hyphen.node.extensions.js +18 -0
  78. package/extensions/nodes/punctuators/regex-hyphen.node.extensions.js.map +1 -0
  79. package/extensions/nodes/punctuators/regex-less-than.node.extensions.js +14 -0
  80. package/extensions/nodes/punctuators/regex-less-than.node.extensions.js.map +1 -0
  81. package/extensions/nodes/punctuators/regex-open-brace.node.extensions.js +16 -0
  82. package/extensions/nodes/punctuators/regex-open-brace.node.extensions.js.map +1 -0
  83. package/extensions/nodes/punctuators/regex-open-bracket.node.extensions.js +12 -0
  84. package/extensions/nodes/punctuators/regex-open-bracket.node.extensions.js.map +1 -0
  85. package/extensions/nodes/punctuators/regex-open-parenthesis.node.extensions.js +12 -0
  86. package/extensions/nodes/punctuators/regex-open-parenthesis.node.extensions.js.map +1 -0
  87. package/extensions/nodes/punctuators/regex-plus.node.extensions.js +16 -0
  88. package/extensions/nodes/punctuators/regex-plus.node.extensions.js.map +1 -0
  89. package/extensions/nodes/punctuators/regex-question.node.extensions.js +19 -0
  90. package/extensions/nodes/punctuators/regex-question.node.extensions.js.map +1 -0
  91. package/extensions/nodes/regex-character.node.extensions.js +12 -0
  92. package/extensions/nodes/regex-character.node.extensions.js.map +1 -0
  93. package/models/diagnostics/regex-diagnostic-templates.js +53 -0
  94. package/models/diagnostics/regex-diagnostic-templates.js.map +1 -0
  95. package/models/nodes/assertions/regex-end-assertion.node.js +15 -0
  96. package/models/nodes/assertions/regex-end-assertion.node.js.map +1 -0
  97. package/models/nodes/assertions/regex-lookahead-assertion.node.js +18 -0
  98. package/models/nodes/assertions/regex-lookahead-assertion.node.js.map +1 -0
  99. package/models/nodes/assertions/regex-lookbehind-assertion.node.js +18 -0
  100. package/models/nodes/assertions/regex-lookbehind-assertion.node.js.map +1 -0
  101. package/models/nodes/assertions/regex-non-word-boundary-assertion.node.js +15 -0
  102. package/models/nodes/assertions/regex-non-word-boundary-assertion.node.js.map +1 -0
  103. package/models/nodes/assertions/regex-start-assertion.node.js +15 -0
  104. package/models/nodes/assertions/regex-start-assertion.node.js.map +1 -0
  105. package/models/nodes/assertions/regex-word-boundary-assertion.node.js +15 -0
  106. package/models/nodes/assertions/regex-word-boundary-assertion.node.js.map +1 -0
  107. package/models/nodes/classes/regex-character-class.node.js +20 -0
  108. package/models/nodes/classes/regex-character-class.node.js.map +1 -0
  109. package/models/nodes/classes/regex-character-range.node.js +18 -0
  110. package/models/nodes/classes/regex-character-range.node.js.map +1 -0
  111. package/models/nodes/classes/regex-class-intersection.node.js +17 -0
  112. package/models/nodes/classes/regex-class-intersection.node.js.map +1 -0
  113. package/models/nodes/classes/regex-class-string-disjunction.node.js +19 -0
  114. package/models/nodes/classes/regex-class-string-disjunction.node.js.map +1 -0
  115. package/models/nodes/classes/regex-class-string.node.js +14 -0
  116. package/models/nodes/classes/regex-class-string.node.js.map +1 -0
  117. package/models/nodes/classes/regex-class-subtraction.node.js +17 -0
  118. package/models/nodes/classes/regex-class-subtraction.node.js.map +1 -0
  119. package/models/nodes/classes/regex-class-union.node.js +14 -0
  120. package/models/nodes/classes/regex-class-union.node.js.map +1 -0
  121. package/models/nodes/escapes/regex-backreference.node.js +16 -0
  122. package/models/nodes/escapes/regex-backreference.node.js.map +1 -0
  123. package/models/nodes/escapes/regex-backspace-escape.node.js +15 -0
  124. package/models/nodes/escapes/regex-backspace-escape.node.js.map +1 -0
  125. package/models/nodes/escapes/regex-carriage-return-escape.node.js +15 -0
  126. package/models/nodes/escapes/regex-carriage-return-escape.node.js.map +1 -0
  127. package/models/nodes/escapes/regex-class-control-escape.node.js +16 -0
  128. package/models/nodes/escapes/regex-class-control-escape.node.js.map +1 -0
  129. package/models/nodes/escapes/regex-control-letter-escape.node.js +16 -0
  130. package/models/nodes/escapes/regex-control-letter-escape.node.js.map +1 -0
  131. package/models/nodes/escapes/regex-decimal-escape.node.js +16 -0
  132. package/models/nodes/escapes/regex-decimal-escape.node.js.map +1 -0
  133. package/models/nodes/escapes/regex-digit-escape.node.js +15 -0
  134. package/models/nodes/escapes/regex-digit-escape.node.js.map +1 -0
  135. package/models/nodes/escapes/regex-form-feed-escape.node.js +15 -0
  136. package/models/nodes/escapes/regex-form-feed-escape.node.js.map +1 -0
  137. package/models/nodes/escapes/regex-hex-escape.node.js +16 -0
  138. package/models/nodes/escapes/regex-hex-escape.node.js.map +1 -0
  139. package/models/nodes/escapes/regex-identity-escape.node.js +16 -0
  140. package/models/nodes/escapes/regex-identity-escape.node.js.map +1 -0
  141. package/models/nodes/escapes/regex-legacy-octal-escape.node.js +16 -0
  142. package/models/nodes/escapes/regex-legacy-octal-escape.node.js.map +1 -0
  143. package/models/nodes/escapes/regex-named-backreference.node.js +16 -0
  144. package/models/nodes/escapes/regex-named-backreference.node.js.map +1 -0
  145. package/models/nodes/escapes/regex-newline-escape.node.js +15 -0
  146. package/models/nodes/escapes/regex-newline-escape.node.js.map +1 -0
  147. package/models/nodes/escapes/regex-non-digit-escape.node.js +15 -0
  148. package/models/nodes/escapes/regex-non-digit-escape.node.js.map +1 -0
  149. package/models/nodes/escapes/regex-non-whitespace-escape.node.js +15 -0
  150. package/models/nodes/escapes/regex-non-whitespace-escape.node.js.map +1 -0
  151. package/models/nodes/escapes/regex-non-word-escape.node.js +15 -0
  152. package/models/nodes/escapes/regex-non-word-escape.node.js.map +1 -0
  153. package/models/nodes/escapes/regex-null-escape.node.js +15 -0
  154. package/models/nodes/escapes/regex-null-escape.node.js.map +1 -0
  155. package/models/nodes/escapes/regex-tab-escape.node.js +15 -0
  156. package/models/nodes/escapes/regex-tab-escape.node.js.map +1 -0
  157. package/models/nodes/escapes/regex-unicode-escape.node.js +16 -0
  158. package/models/nodes/escapes/regex-unicode-escape.node.js.map +1 -0
  159. package/models/nodes/escapes/regex-unicode-property-escape.node.js +22 -0
  160. package/models/nodes/escapes/regex-unicode-property-escape.node.js.map +1 -0
  161. package/models/nodes/escapes/regex-vertical-tab-escape.node.js +15 -0
  162. package/models/nodes/escapes/regex-vertical-tab-escape.node.js.map +1 -0
  163. package/models/nodes/escapes/regex-whitespace-escape.node.js +15 -0
  164. package/models/nodes/escapes/regex-whitespace-escape.node.js.map +1 -0
  165. package/models/nodes/escapes/regex-word-escape.node.js +15 -0
  166. package/models/nodes/escapes/regex-word-escape.node.js.map +1 -0
  167. package/models/nodes/groups/regex-capturing-group.node.js +18 -0
  168. package/models/nodes/groups/regex-capturing-group.node.js.map +1 -0
  169. package/models/nodes/groups/regex-modifier-group.node.js +20 -0
  170. package/models/nodes/groups/regex-modifier-group.node.js.map +1 -0
  171. package/models/nodes/groups/regex-named-capturing-group.node.js +20 -0
  172. package/models/nodes/groups/regex-named-capturing-group.node.js.map +1 -0
  173. package/models/nodes/groups/regex-non-capturing-group.node.js +16 -0
  174. package/models/nodes/groups/regex-non-capturing-group.node.js.map +1 -0
  175. package/models/nodes/punctuators/regex-ampersand-ampersand.node.js +15 -0
  176. package/models/nodes/punctuators/regex-ampersand-ampersand.node.js.map +1 -0
  177. package/models/nodes/punctuators/regex-asterisk.node.js +15 -0
  178. package/models/nodes/punctuators/regex-asterisk.node.js.map +1 -0
  179. package/models/nodes/punctuators/regex-bar.node.js +15 -0
  180. package/models/nodes/punctuators/regex-bar.node.js.map +1 -0
  181. package/models/nodes/punctuators/regex-class-string-disjunction-start.node.js +15 -0
  182. package/models/nodes/punctuators/regex-class-string-disjunction-start.node.js.map +1 -0
  183. package/models/nodes/punctuators/regex-close-brace.node.js +15 -0
  184. package/models/nodes/punctuators/regex-close-brace.node.js.map +1 -0
  185. package/models/nodes/punctuators/regex-close-bracket.node.js +15 -0
  186. package/models/nodes/punctuators/regex-close-bracket.node.js.map +1 -0
  187. package/models/nodes/punctuators/regex-close-parenthesis.node.js +15 -0
  188. package/models/nodes/punctuators/regex-close-parenthesis.node.js.map +1 -0
  189. package/models/nodes/punctuators/regex-colon.node.js +15 -0
  190. package/models/nodes/punctuators/regex-colon.node.js.map +1 -0
  191. package/models/nodes/punctuators/regex-comma.node.js +15 -0
  192. package/models/nodes/punctuators/regex-comma.node.js.map +1 -0
  193. package/models/nodes/punctuators/regex-equals.node.js +15 -0
  194. package/models/nodes/punctuators/regex-equals.node.js.map +1 -0
  195. package/models/nodes/punctuators/regex-exclamation.node.js +15 -0
  196. package/models/nodes/punctuators/regex-exclamation.node.js.map +1 -0
  197. package/models/nodes/punctuators/regex-greater-than.node.js +15 -0
  198. package/models/nodes/punctuators/regex-greater-than.node.js.map +1 -0
  199. package/models/nodes/punctuators/regex-hyphen-hyphen.node.js +15 -0
  200. package/models/nodes/punctuators/regex-hyphen-hyphen.node.js.map +1 -0
  201. package/models/nodes/punctuators/regex-hyphen.node.js +15 -0
  202. package/models/nodes/punctuators/regex-hyphen.node.js.map +1 -0
  203. package/models/nodes/punctuators/regex-less-than.node.js +15 -0
  204. package/models/nodes/punctuators/regex-less-than.node.js.map +1 -0
  205. package/models/nodes/punctuators/regex-open-brace.node.js +15 -0
  206. package/models/nodes/punctuators/regex-open-brace.node.js.map +1 -0
  207. package/models/nodes/punctuators/regex-open-bracket.node.js +15 -0
  208. package/models/nodes/punctuators/regex-open-bracket.node.js.map +1 -0
  209. package/models/nodes/punctuators/regex-open-parenthesis.node.js +15 -0
  210. package/models/nodes/punctuators/regex-open-parenthesis.node.js.map +1 -0
  211. package/models/nodes/punctuators/regex-plus.node.js +15 -0
  212. package/models/nodes/punctuators/regex-plus.node.js.map +1 -0
  213. package/models/nodes/punctuators/regex-question.node.js +15 -0
  214. package/models/nodes/punctuators/regex-question.node.js.map +1 -0
  215. package/models/nodes/regex-alternative.node.js +14 -0
  216. package/models/nodes/regex-alternative.node.js.map +1 -0
  217. package/models/nodes/regex-character.node.js +14 -0
  218. package/models/nodes/regex-character.node.js.map +1 -0
  219. package/models/nodes/regex-disjunction.node.js +17 -0
  220. package/models/nodes/regex-disjunction.node.js.map +1 -0
  221. package/models/nodes/regex-dot.node.js +15 -0
  222. package/models/nodes/regex-dot.node.js.map +1 -0
  223. package/models/nodes/regex-flags.node.js +31 -0
  224. package/models/nodes/regex-flags.node.js.map +1 -0
  225. package/models/nodes/regex-pattern.node.js +18 -0
  226. package/models/nodes/regex-pattern.node.js.map +1 -0
  227. package/models/nodes/regex-quantifier.node.js +20 -0
  228. package/models/nodes/regex-quantifier.node.js.map +1 -0
  229. package/models/nodes/regex-unknown.node.js +14 -0
  230. package/models/nodes/regex-unknown.node.js.map +1 -0
  231. package/models/nodes/regex.node.js +20 -0
  232. package/models/nodes/regex.node.js.map +1 -0
  233. package/models/regex-alternative-branch.js +16 -0
  234. package/models/regex-alternative-branch.js.map +1 -0
  235. package/models/regex-capturing-group-summary.js +16 -0
  236. package/models/regex-capturing-group-summary.js.map +1 -0
  237. package/models/regex-group-name.js +16 -0
  238. package/models/regex-group-name.js.map +1 -0
  239. package/models/regex-named-group-branch.js +12 -0
  240. package/models/regex-named-group-branch.js.map +1 -0
  241. package/models/regex-parser-context.js +41 -0
  242. package/models/regex-parser-context.js.map +1 -0
  243. package/models/regex-unicode-escape-value.js +16 -0
  244. package/models/regex-unicode-escape-value.js.map +1 -0
  245. package/package.json +26 -4
  246. package/resources.js +112 -0
  247. package/resources.js.map +1 -0
  248. package/services/lexers/character.lexer.js +24 -0
  249. package/services/lexers/character.lexer.js.map +1 -0
  250. package/services/lexers/code-point-escape.lexer.js +56 -0
  251. package/services/lexers/code-point-escape.lexer.js.map +1 -0
  252. package/services/lexers/control-escape.lexer.js +40 -0
  253. package/services/lexers/control-escape.lexer.js.map +1 -0
  254. package/services/lexers/escape.lexer.js +130 -0
  255. package/services/lexers/escape.lexer.js.map +1 -0
  256. package/services/lexers/named-backreference.lexer.js +48 -0
  257. package/services/lexers/named-backreference.lexer.js.map +1 -0
  258. package/services/lexers/numeric-escape.lexer.js +87 -0
  259. package/services/lexers/numeric-escape.lexer.js.map +1 -0
  260. package/services/lexers/regex.lexer.js +200 -0
  261. package/services/lexers/regex.lexer.js.map +1 -0
  262. package/services/lexers/unicode-property-escape.lexer.js +59 -0
  263. package/services/lexers/unicode-property-escape.lexer.js.map +1 -0
  264. package/services/parsers/regex-alternative.parser.js +27 -0
  265. package/services/parsers/regex-alternative.parser.js.map +1 -0
  266. package/services/parsers/regex-assertion.parser.js +38 -0
  267. package/services/parsers/regex-assertion.parser.js.map +1 -0
  268. package/services/parsers/regex-capturing-group.parser.js +24 -0
  269. package/services/parsers/regex-capturing-group.parser.js.map +1 -0
  270. package/services/parsers/regex-character-class.parser.js +107 -0
  271. package/services/parsers/regex-character-class.parser.js.map +1 -0
  272. package/services/parsers/regex-class-set-expression.parser.js +114 -0
  273. package/services/parsers/regex-class-set-expression.parser.js.map +1 -0
  274. package/services/parsers/regex-class-string-disjunction.parser.js +57 -0
  275. package/services/parsers/regex-class-string-disjunction.parser.js.map +1 -0
  276. package/services/parsers/regex-disjunction.parser.js +33 -0
  277. package/services/parsers/regex-disjunction.parser.js.map +1 -0
  278. package/services/parsers/regex-group-end.parser.js +25 -0
  279. package/services/parsers/regex-group-end.parser.js.map +1 -0
  280. package/services/parsers/regex-group.parser.js +91 -0
  281. package/services/parsers/regex-group.parser.js.map +1 -0
  282. package/services/parsers/regex-lookaround.parser.js +35 -0
  283. package/services/parsers/regex-lookaround.parser.js.map +1 -0
  284. package/services/parsers/regex-modifier-group.parser.js +78 -0
  285. package/services/parsers/regex-modifier-group.parser.js.map +1 -0
  286. package/services/parsers/regex-named-capturing-group.parser.js +60 -0
  287. package/services/parsers/regex-named-capturing-group.parser.js.map +1 -0
  288. package/services/parsers/regex-non-capturing-group.parser.js +24 -0
  289. package/services/parsers/regex-non-capturing-group.parser.js.map +1 -0
  290. package/services/parsers/regex-pattern.parser.js +23 -0
  291. package/services/parsers/regex-pattern.parser.js.map +1 -0
  292. package/services/parsers/regex-quantifier.parser.js +85 -0
  293. package/services/parsers/regex-quantifier.parser.js.map +1 -0
  294. package/services/parsers/regex-term.parser.js +50 -0
  295. package/services/parsers/regex-term.parser.js.map +1 -0
  296. package/services/readers/regex-capturing-group-summary.reader.js +56 -0
  297. package/services/readers/regex-capturing-group-summary.reader.js.map +1 -0
  298. package/services/readers/regex-group-name.reader.js +44 -0
  299. package/services/readers/regex-group-name.reader.js.map +1 -0
  300. package/services/readers/regex-unicode-escape.reader.js +72 -0
  301. package/services/readers/regex-unicode-escape.reader.js.map +1 -0
  302. package/services/regex-named-group-registry.js +48 -0
  303. package/services/regex-named-group-registry.js.map +1 -0
  304. package/services/regex-syntax.parser.js +73 -0
  305. package/services/regex-syntax.parser.js.map +1 -0
  306. package/services/regex.parser.js +39 -0
  307. package/services/regex.parser.js.map +1 -0
  308. package/services/unicode/regex-unicode-property-catalog.js +118 -0
  309. package/services/unicode/regex-unicode-property-catalog.js.map +1 -0
  310. package/services/validators/regex-character-range.validator.js +22 -0
  311. package/services/validators/regex-character-range.validator.js.map +1 -0
  312. package/services/validators/regex-class-set-character.validator.js +30 -0
  313. package/services/validators/regex-class-set-character.validator.js.map +1 -0
  314. package/services/validators/regex-flag.validator.js +36 -0
  315. package/services/validators/regex-flag.validator.js.map +1 -0
  316. package/services/validators/regex-group-name.validator.js +17 -0
  317. package/services/validators/regex-group-name.validator.js.map +1 -0
  318. package/services/validators/regex-identity-escape.validator.js +25 -0
  319. package/services/validators/regex-identity-escape.validator.js.map +1 -0
  320. package/README.md +0 -3
@@ -0,0 +1,73 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) Noldova.
4
+ *
5
+ * This source code is licensed under the license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+ import "../extensions/nodes/node.extensions.js";
9
+ import { Parser } from "@noldova/context.parsers";
10
+ import { RegexNode } from "../models/nodes/regex.node.js";
11
+ import { RegexParserContext } from "../models/regex-parser-context.js";
12
+ import { RegexAlternativeParser } from "./parsers/regex-alternative.parser.js";
13
+ import { RegexAssertionParser } from "./parsers/regex-assertion.parser.js";
14
+ import { RegexCharacterClassParser } from "./parsers/regex-character-class.parser.js";
15
+ import { RegexClassSetExpressionParser } from "./parsers/regex-class-set-expression.parser.js";
16
+ import { RegexClassStringDisjunctionParser } from "./parsers/regex-class-string-disjunction.parser.js";
17
+ import { RegexDisjunctionParser } from "./parsers/regex-disjunction.parser.js";
18
+ import { RegexGroupParser } from "./parsers/regex-group.parser.js";
19
+ import { RegexPatternParser } from "./parsers/regex-pattern.parser.js";
20
+ import { RegexQuantifierParser } from "./parsers/regex-quantifier.parser.js";
21
+ import { RegexTermParser } from "./parsers/regex-term.parser.js";
22
+ import { RegexFlagValidator } from "./validators/regex-flag.validator.js";
23
+ export class RegexSyntaxParser extends Parser {
24
+ alternativeParser = new RegexAlternativeParser(this);
25
+ assertionParser = new RegexAssertionParser(this);
26
+ characterClassParser = new RegexCharacterClassParser(this);
27
+ classSetExpressionParser = new RegexClassSetExpressionParser(this);
28
+ classStringDisjunctionParser = new RegexClassStringDisjunctionParser(this);
29
+ disjunctionParser = new RegexDisjunctionParser(this);
30
+ flagValidator = new RegexFlagValidator();
31
+ groupParser = new RegexGroupParser(this);
32
+ patternParser = new RegexPatternParser(this);
33
+ quantifierParser = new RegexQuantifierParser(this);
34
+ termParser = new RegexTermParser(this);
35
+ regexLexer;
36
+ constructor(context, lexer) {
37
+ super(context, lexer);
38
+ this.regexLexer = lexer;
39
+ }
40
+ parseAlternative(stopsAtCloseParenthesis) {
41
+ return this.alternativeParser.parse(stopsAtCloseParenthesis);
42
+ }
43
+ parseAssertion() {
44
+ return this.assertionParser.parse();
45
+ }
46
+ parseCharacterClass() {
47
+ return this.characterClassParser.parse();
48
+ }
49
+ parseClassSetExpression() {
50
+ return this.classSetExpressionParser.parse();
51
+ }
52
+ parseClassStringDisjunction() {
53
+ return this.classStringDisjunctionParser.parse();
54
+ }
55
+ parseDisjunction(stopsAtCloseParenthesis) {
56
+ return this.disjunctionParser.parse(stopsAtCloseParenthesis);
57
+ }
58
+ parseGroup() {
59
+ return this.groupParser.parse();
60
+ }
61
+ parseQuantifier() {
62
+ return this.quantifierParser.parse();
63
+ }
64
+ parseTerm() {
65
+ return this.termParser.parse();
66
+ }
67
+ parseRootNode() {
68
+ const patternNode = this.patternParser.parse();
69
+ this.flagValidator.validate(this);
70
+ return new RegexNode(this.context.source.getText(this.regexLexer.inputSpan), patternNode, this.regexLexer.flagsNode, this.regexLexer.inputSpan);
71
+ }
72
+ }
73
+ //# sourceMappingURL=regex-syntax.parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regex-syntax.parser.js","sourceRoot":"","sources":["../../../../src/parsers/noldova.context.parsers.regex/src/services/regex-syntax.parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) Noldova.
4
+ *
5
+ * This source code is licensed under the license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+ import { Source, SourceSpan } from "@noldova/context.parsers";
9
+ import { RegexParserContext } from "../models/regex-parser-context.js";
10
+ import { RegexLexer } from "./lexers/regex.lexer.js";
11
+ import { RegexSyntaxParser } from "./regex-syntax.parser.js";
12
+ export class RegexParser {
13
+ syntaxParser;
14
+ constructor(...constructorArguments) {
15
+ let context;
16
+ let lexer;
17
+ if (constructorArguments.length === 4) {
18
+ const [source, patternSpan, flagsSpan, inputSpan] = constructorArguments;
19
+ context = new RegexParserContext(source);
20
+ lexer = new RegexLexer(source, patternSpan, flagsSpan, inputSpan, context.diagnosticCollector);
21
+ }
22
+ else if (constructorArguments.length === 3) {
23
+ const [reader, flagsSpan, inputSpan] = constructorArguments;
24
+ context = new RegexParserContext(reader.source);
25
+ lexer = new RegexLexer(reader, flagsSpan, inputSpan, context.diagnosticCollector);
26
+ }
27
+ else {
28
+ const [pattern, flags = String.empty] = constructorArguments;
29
+ const source = new Source(pattern + flags);
30
+ context = new RegexParserContext(source);
31
+ lexer = new RegexLexer(source, new SourceSpan(0, pattern.length), new SourceSpan(pattern.length, flags.length), new SourceSpan(0, source.length), context.diagnosticCollector);
32
+ }
33
+ this.syntaxParser = new RegexSyntaxParser(context, lexer);
34
+ }
35
+ parse() {
36
+ return this.syntaxParser.parse();
37
+ }
38
+ }
39
+ //# sourceMappingURL=regex.parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regex.parser.js","sourceRoot":"","sources":["../../../../src/parsers/noldova.context.parsers.regex/src/services/regex.parser.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAqB,MAAM,EAAqB,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAGpG,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,MAAM,OAAO,WAAW;IACL,YAAY,CAAoB;IAKjD,YAAmB,GAAG,oBAGgD;QACpE,IAAI,OAA2B,CAAC;QAChC,IAAI,KAAiB,CAAC;QAEtB,IAAI,oBAAoB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtC,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,CAAC,GAAG,oBAAoB,CAAC;YACzE,OAAO,GAAG,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC;YACzC,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;QACjG,CAAC;aACI,IAAI,oBAAoB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3C,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,GAAG,oBAAoB,CAAC;YAC5D,OAAO,GAAG,IAAI,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAChD,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;QACpF,CAAC;aACI,CAAC;YACJ,MAAM,CAAC,OAAO,EAAE,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,oBAAoB,CAAC;YAC7D,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC;YAC3C,OAAO,GAAG,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC;YACzC,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,EAAE,IAAI,UAAU,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;QACjL,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,IAAI,iBAAiB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC5D,CAAC;IAEM,KAAK;QACV,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;IACnC,CAAC;CACF"}
@@ -0,0 +1,118 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) Noldova.
4
+ *
5
+ * This source code is licensed under the license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+ import "@noldova/context.core";
9
+ import { Resources } from "../../resources.js";
10
+ export class RegexUnicodePropertyCatalog {
11
+ static BINARY_PROPERTIES = new Set([
12
+ "ASCII", "ASCII_Hex_Digit", "AHex", "Alphabetic", "Alpha", "Any", "Assigned",
13
+ "Bidi_Control", "Bidi_C", "Bidi_Mirrored", "Bidi_M", "Case_Ignorable", "CI", "Cased",
14
+ "Changes_When_Casefolded", "CWCF", "Changes_When_Casemapped", "CWCM",
15
+ "Changes_When_Lowercased", "CWL", "Changes_When_NFKC_Casefolded", "CWKCF",
16
+ "Changes_When_Titlecased", "CWT", "Changes_When_Uppercased", "CWU", "Dash",
17
+ "Default_Ignorable_Code_Point", "DI", "Deprecated", "Dep", "Diacritic", "Dia",
18
+ "Emoji", "Emoji_Component", "EComp", "Emoji_Modifier", "EMod", "Emoji_Modifier_Base",
19
+ "EBase", "Emoji_Presentation", "EPres", "Extended_Pictographic", "ExtPict", "Extender", "Ext",
20
+ "Grapheme_Base", "Gr_Base", "Grapheme_Extend", "Gr_Ext", "Hex_Digit", "Hex",
21
+ "IDS_Binary_Operator", "IDSB", "IDS_Trinary_Operator", "IDST", "ID_Continue", "IDC",
22
+ "ID_Start", "IDS", "Ideographic", "Ideo", "Join_Control", "Join_C",
23
+ "Logical_Order_Exception", "LOE", "Lowercase", "Lower", "Math", "Noncharacter_Code_Point",
24
+ "NChar", "Pattern_Syntax", "Pat_Syn", "Pattern_White_Space", "Pat_WS", "Quotation_Mark",
25
+ "QMark", "Radical", "Regional_Indicator", "RI", "Sentence_Terminal", "STerm",
26
+ "Soft_Dotted", "SD", "Terminal_Punctuation", "Term", "Unified_Ideograph", "UIdeo",
27
+ "Uppercase", "Upper", "Variation_Selector", "VS", "White_Space", "space",
28
+ "XID_Continue", "XIDC", "XID_Start", "XIDS",
29
+ ]);
30
+ static GENERAL_CATEGORY_VALUES = new Set([
31
+ "C", "Other", "Cc", "Control", "cntrl", "Cf", "Format", "Cn", "Unassigned", "Co",
32
+ "Private_Use", "Cs", "Surrogate", "L", "Letter", "LC", "Cased_Letter", "Ll",
33
+ "Lowercase_Letter", "Lm", "Modifier_Letter", "Lo", "Other_Letter", "Lt",
34
+ "Titlecase_Letter", "Lu", "Uppercase_Letter", "M", "Mark", "Combining_Mark", "Mc",
35
+ "Spacing_Mark", "Me", "Enclosing_Mark", "Mn", "Nonspacing_Mark", "N", "Number", "Nd",
36
+ "Decimal_Number", "digit", "Nl", "Letter_Number", "No", "Other_Number", "P",
37
+ "Punctuation", "punct", "Pc", "Connector_Punctuation", "Pd", "Dash_Punctuation", "Pe",
38
+ "Close_Punctuation", "Pf", "Final_Punctuation", "Pi", "Initial_Punctuation", "Po",
39
+ "Other_Punctuation", "Ps", "Open_Punctuation", "S", "Symbol", "Sc", "Currency_Symbol",
40
+ "Sk", "Modifier_Symbol", "Sm", "Math_Symbol", "So", "Other_Symbol", "Z", "Separator",
41
+ "Zl", "Line_Separator", "Zp", "Paragraph_Separator", "Zs", "Space_Separator",
42
+ ]);
43
+ static SCRIPT_VALUES = new Set([
44
+ "Adlm", "Adlam", "Aghb", "Caucasian_Albanian", "Ahom", "Arab", "Arabic", "Armi",
45
+ "Imperial_Aramaic", "Armn", "Armenian", "Avst", "Avestan", "Bali", "Balinese", "Bamu",
46
+ "Bamum", "Bass", "Bassa_Vah", "Batk", "Batak", "Beng", "Bengali", "Bhks", "Bhaiksuki",
47
+ "Bopo", "Bopomofo", "Brah", "Brahmi", "Brai", "Braille", "Bugi", "Buginese", "Buhd",
48
+ "Buhid", "Cakm", "Chakma", "Cans", "Canadian_Aboriginal", "Cari", "Carian", "Cham",
49
+ "Cher", "Cherokee", "Chrs", "Chorasmian", "Copt", "Coptic", "Qaac", "Cpmn",
50
+ "Cypro_Minoan", "Cprt", "Cypriot", "Cyrl", "Cyrillic", "Deva", "Devanagari", "Diak",
51
+ "Dives_Akuru", "Dogr", "Dogra", "Dsrt", "Deseret", "Dupl", "Duployan", "Egyp",
52
+ "Egyptian_Hieroglyphs", "Elba", "Elbasan", "Elym", "Elymaic", "Ethi", "Ethiopic",
53
+ "Geor", "Georgian", "Glag", "Glagolitic", "Gong", "Gunjala_Gondi", "Gonm",
54
+ "Masaram_Gondi", "Goth", "Gothic", "Gran", "Grantha", "Grek", "Greek", "Gujr",
55
+ "Gujarati", "Guru", "Gurmukhi", "Hang", "Hangul", "Hani", "Han", "Hano", "Hanunoo",
56
+ "Hatr", "Hatran", "Hebr", "Hebrew", "Hira", "Hiragana", "Hluw",
57
+ "Anatolian_Hieroglyphs", "Hmng", "Pahawh_Hmong", "Hmnp", "Nyiakeng_Puachue_Hmong",
58
+ "Hrkt", "Katakana_Or_Hiragana", "Hung", "Old_Hungarian", "Ital", "Old_Italic", "Java",
59
+ "Javanese", "Kali", "Kayah_Li", "Kana", "Katakana", "Kawi", "Khar", "Kharoshthi",
60
+ "Khmr", "Khmer", "Khoj", "Khojki", "Kits", "Khitan_Small_Script", "Knda", "Kannada",
61
+ "Kthi", "Kaithi", "Lana", "Tai_Tham", "Laoo", "Lao", "Latn", "Latin", "Lepc",
62
+ "Lepcha", "Limb", "Limbu", "Lina", "Linear_A", "Linb", "Linear_B", "Lisu", "Lyci",
63
+ "Lycian", "Lydi", "Lydian", "Mahj", "Mahajani", "Maka", "Makasar", "Mand", "Mandaic",
64
+ "Mani", "Manichaean", "Marc", "Marchen", "Medf", "Medefaidrin", "Mend", "Mende_Kikakui",
65
+ "Merc", "Meroitic_Cursive", "Mero", "Meroitic_Hieroglyphs", "Mlym", "Malayalam", "Modi",
66
+ "Mong", "Mongolian", "Mroo", "Mro", "Mtei", "Meetei_Mayek", "Mult", "Multani", "Mymr",
67
+ "Myanmar", "Nagm", "Nag_Mundari", "Nand", "Nandinagari", "Narb", "Old_North_Arabian",
68
+ "Nbat", "Nabataean", "Newa", "Nkoo", "Nko", "Nshu", "Nushu", "Ogam", "Ogham", "Olck",
69
+ "Ol_Chiki", "Orkh", "Old_Turkic", "Orya", "Oriya", "Osge", "Osage", "Osma", "Osmanya",
70
+ "Ougr", "Old_Uyghur", "Palm", "Palmyrene", "Pauc", "Pau_Cin_Hau", "Perm", "Old_Permic",
71
+ "Phag", "Phags_Pa", "Phli", "Inscriptional_Pahlavi", "Phlp", "Psalter_Pahlavi", "Phnx",
72
+ "Phoenician", "Plrd", "Miao", "Prti", "Inscriptional_Parthian", "Rjng", "Rejang", "Rohg",
73
+ "Hanifi_Rohingya", "Runr", "Runic", "Samr", "Samaritan", "Sarb", "Old_South_Arabian",
74
+ "Saur", "Saurashtra", "Sgnw", "SignWriting", "Shaw", "Shavian", "Shrd", "Sharada",
75
+ "Sidd", "Siddham", "Sind", "Khudawadi", "Sinh", "Sinhala", "Sogd", "Sogdian", "Sogo",
76
+ "Old_Sogdian", "Sora", "Sora_Sompeng", "Soyo", "Soyombo", "Sund", "Sundanese", "Sylo",
77
+ "Syloti_Nagri", "Syrc", "Syriac", "Tagb", "Tagbanwa", "Takr", "Takri", "Tale", "Tai_Le",
78
+ "Talu", "New_Tai_Lue", "Taml", "Tamil", "Tang", "Tangut", "Tavt", "Tai_Viet", "Telu",
79
+ "Telugu", "Tfng", "Tifinagh", "Tglg", "Tagalog", "Thaa", "Thaana", "Thai", "Tibt",
80
+ "Tibetan", "Tirh", "Tirhuta", "Tnsa", "Tangsa", "Toto", "Ugar", "Ugaritic", "Vaii",
81
+ "Vai", "Vith", "Vithkuqi", "Wara", "Warang_Citi", "Wcho", "Wancho", "Xpeo",
82
+ "Old_Persian", "Xsux", "Cuneiform", "Yezi", "Yezidi", "Yiii", "Yi", "Zanb",
83
+ "Zanabazar_Square", "Zinh", "Inherited", "Qaai", "Zyyy", "Common", "Zzzz", "Unknown",
84
+ ]);
85
+ static STRING_PROPERTIES = new Set([
86
+ "Basic_Emoji", "Emoji_Keycap_Sequence", "RGI_Emoji_Modifier_Sequence",
87
+ "RGI_Emoji_Flag_Sequence", "RGI_Emoji_Tag_Sequence", "RGI_Emoji_ZWJ_Sequence", "RGI_Emoji",
88
+ ]);
89
+ static getCanonicalPropertyName(propertyName) {
90
+ switch (propertyName) {
91
+ case Resources.generalCategoryProperty:
92
+ case Resources.generalCategoryPropertyAlias:
93
+ return Resources.generalCategoryProperty;
94
+ case Resources.scriptProperty:
95
+ case Resources.scriptPropertyAlias:
96
+ return Resources.scriptProperty;
97
+ case Resources.scriptExtensionsProperty:
98
+ case Resources.scriptExtensionsPropertyAlias:
99
+ return Resources.scriptExtensionsProperty;
100
+ default:
101
+ return undefined;
102
+ }
103
+ }
104
+ static isPropertyValue(propertyName, propertyValue) {
105
+ if (propertyName === Resources.generalCategoryProperty)
106
+ return RegexUnicodePropertyCatalog.GENERAL_CATEGORY_VALUES.has(propertyValue);
107
+ return RegexUnicodePropertyCatalog.SCRIPT_VALUES.has(propertyValue);
108
+ }
109
+ static isStringProperty(propertyName) {
110
+ return RegexUnicodePropertyCatalog.STRING_PROPERTIES.has(propertyName);
111
+ }
112
+ static isValidLoneProperty(propertyNameOrValue) {
113
+ return RegexUnicodePropertyCatalog.GENERAL_CATEGORY_VALUES.has(propertyNameOrValue)
114
+ || RegexUnicodePropertyCatalog.BINARY_PROPERTIES.has(propertyNameOrValue)
115
+ || RegexUnicodePropertyCatalog.STRING_PROPERTIES.has(propertyNameOrValue);
116
+ }
117
+ }
118
+ //# sourceMappingURL=regex-unicode-property-catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regex-unicode-property-catalog.js","sourceRoot":"","sources":["../../../../../src/parsers/noldova.context.parsers.regex/src/services/unicode/regex-unicode-property-catalog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) Noldova.
4
+ *
5
+ * This source code is licensed under the license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+ import { RegexDiagnosticTemplates } from "../../models/diagnostics/regex-diagnostic-templates.js";
9
+ export class RegexCharacterRangeValidator {
10
+ validate(regexParser, start, end, span) {
11
+ const startValue = start.getRegexCharacterValue();
12
+ const endValue = end.getRegexCharacterValue();
13
+ if (Object.isUndefined(startValue) || Object.isUndefined(endValue)) {
14
+ if (regexParser.regexLexer.unicodeMode)
15
+ regexParser.context.diagnosticCollector.add(RegexDiagnosticTemplates.CTX1025, span);
16
+ return;
17
+ }
18
+ if (startValue > endValue)
19
+ regexParser.context.diagnosticCollector.add(RegexDiagnosticTemplates.CTX1026, span);
20
+ }
21
+ }
22
+ //# sourceMappingURL=regex-character-range.validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regex-character-range.validator.js","sourceRoot":"","sources":["../../../../../src/parsers/noldova.context.parsers.regex/src/services/validators/regex-character-range.validator.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,wBAAwB,EAAE,MAAM,wDAAwD,CAAC;AAGlG,MAAM,OAAO,4BAA4B;IAChC,QAAQ,CAAC,WAA8B,EAAE,KAAW,EAAE,GAAS,EAAE,IAAgB;QACtF,MAAM,UAAU,GAAG,KAAK,CAAC,sBAAsB,EAAE,CAAC;QAClD,MAAM,QAAQ,GAAG,GAAG,CAAC,sBAAsB,EAAE,CAAC;QAE9C,IAAI,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnE,IAAI,WAAW,CAAC,UAAU,CAAC,WAAW;gBACpC,WAAW,CAAC,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAC,wBAAwB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YACtF,OAAO;QACT,CAAC;QAED,IAAI,UAAU,GAAG,QAAQ;YACvB,WAAW,CAAC,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAC,wBAAwB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACxF,CAAC;CACF"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) Noldova.
4
+ *
5
+ * This source code is licensed under the license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+ import { RegexDiagnosticTemplates } from "../../models/diagnostics/regex-diagnostic-templates.js";
9
+ import { Resources } from "../../resources.js";
10
+ export class RegexClassSetCharacterValidator {
11
+ validate(regexParser, node) {
12
+ const value = regexParser.context.source.getText(node.span);
13
+ const diagnosedOffsets = regexParser.context.diagnosedReservedPunctuatorOffsets;
14
+ if (diagnosedOffsets.has(node.span.startOffset))
15
+ return;
16
+ if (value.length === 1 && Resources.classSetReservedDoublePunctuators.includes(value)) {
17
+ const nextOffset = node.span.endOffset;
18
+ if (nextOffset < regexParser.regexLexer.reader.endOffset && regexParser.context.source.content.charAt(nextOffset) === value) {
19
+ const span = regexParser.regexLexer.reader.createSpan(node.span.startOffset, value.length * 2);
20
+ regexParser.context.diagnosticCollector.add(RegexDiagnosticTemplates.CTX1029, span, [value + value]);
21
+ diagnosedOffsets.add(node.span.startOffset);
22
+ diagnosedOffsets.add(nextOffset);
23
+ return;
24
+ }
25
+ }
26
+ if (value.length === 1 && Resources.classSetSyntaxCharacters.includes(value))
27
+ regexParser.context.diagnosticCollector.add(RegexDiagnosticTemplates.CTX1034, node.span, [value]);
28
+ }
29
+ }
30
+ //# sourceMappingURL=regex-class-set-character.validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regex-class-set-character.validator.js","sourceRoot":"","sources":["../../../../../src/parsers/noldova.context.parsers.regex/src/services/validators/regex-class-set-character.validator.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,wBAAwB,EAAE,MAAM,wDAAwD,CAAC;AAClG,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG/C,MAAM,OAAO,+BAA+B;IACnC,QAAQ,CAAC,WAA8B,EAAE,IAAU;QACxD,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5D,MAAM,gBAAgB,GAAG,WAAW,CAAC,OAAO,CAAC,kCAAkC,CAAC;QAChF,IAAI,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;YAC7C,OAAO;QAET,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,iCAAiC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACtF,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;YACvC,IAAI,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,KAAK,EAAE,CAAC;gBAC5H,MAAM,IAAI,GAAG,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAC/F,WAAW,CAAC,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAC,wBAAwB,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC;gBACrG,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAC5C,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBACjC,OAAO;YACT,CAAC;QACH,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,CAAC;YAC1E,WAAW,CAAC,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAC,wBAAwB,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IACtG,CAAC;CACF"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) Noldova.
4
+ *
5
+ * This source code is licensed under the license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+ import { SourceSpan } from "@noldova/context.parsers";
9
+ import { RegexDiagnosticTemplates } from "../../models/diagnostics/regex-diagnostic-templates.js";
10
+ import { Resources } from "../../resources.js";
11
+ export class RegexFlagValidator {
12
+ validate(regexParser) {
13
+ const flags = regexParser.regexLexer.flagsNode.value;
14
+ const seen = new Set();
15
+ let hasUnicodeMode = false;
16
+ let offset = regexParser.regexLexer.flagsNode.span.startOffset;
17
+ for (const flag of flags) {
18
+ const span = new SourceSpan(offset, flag.length);
19
+ if (!Resources.flagCharacters.includes(flag))
20
+ regexParser.context.diagnosticCollector.add(RegexDiagnosticTemplates.CTX1000, span, [flag]);
21
+ else if (seen.has(flag))
22
+ regexParser.context.diagnosticCollector.add(RegexDiagnosticTemplates.CTX1001, span, [flag]);
23
+ else {
24
+ seen.add(flag);
25
+ if (flag === Resources.unicodeFlag || flag === Resources.unicodeSetsFlag) {
26
+ if (hasUnicodeMode)
27
+ regexParser.context.diagnosticCollector.add(RegexDiagnosticTemplates.CTX1002, span);
28
+ else
29
+ hasUnicodeMode = true;
30
+ }
31
+ }
32
+ offset += flag.length;
33
+ }
34
+ }
35
+ }
36
+ //# sourceMappingURL=regex-flag.validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regex-flag.validator.js","sourceRoot":"","sources":["../../../../../src/parsers/noldova.context.parsers.regex/src/services/validators/regex-flag.validator.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,OAAO,EAAE,wBAAwB,EAAE,MAAM,wDAAwD,CAAC;AAClG,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG/C,MAAM,OAAO,kBAAkB;IACtB,QAAQ,CAAC,WAA8B;QAC5C,MAAM,KAAK,GAAG,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;QACrD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,IAAI,cAAc,GAAG,KAAK,CAAC;QAC3B,IAAI,MAAM,GAAG,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC;QAE/D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACjD,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAC1C,WAAW,CAAC,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAC,wBAAwB,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;iBACzF,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;gBACrB,WAAW,CAAC,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAC,wBAAwB,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;iBACzF,CAAC;gBACJ,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAEf,IAAI,IAAI,KAAK,SAAS,CAAC,WAAW,IAAI,IAAI,KAAK,SAAS,CAAC,eAAe,EAAE,CAAC;oBACzE,IAAI,cAAc;wBAChB,WAAW,CAAC,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAC,wBAAwB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;;wBAEpF,cAAc,GAAG,IAAI,CAAC;gBAC1B,CAAC;YACH,CAAC;YAED,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC;QACxB,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) Noldova.
4
+ *
5
+ * This source code is licensed under the license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+ import { UnicodeCodePointService } from "@noldova/context.text";
9
+ import { Resources } from "../../resources.js";
10
+ export class RegexGroupNameValidator {
11
+ isValidCodePoint(codePoint, isFirst) {
12
+ return codePoint === Resources.dollarCodePoint
13
+ || codePoint === Resources.underscoreCodePoint
14
+ || (isFirst ? UnicodeCodePointService.isIdentifierStart(codePoint) : UnicodeCodePointService.isIdentifierContinue(codePoint));
15
+ }
16
+ }
17
+ //# sourceMappingURL=regex-group-name.validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regex-group-name.validator.js","sourceRoot":"","sources":["../../../../../src/parsers/noldova.context.parsers.regex/src/services/validators/regex-group-name.validator.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,MAAM,OAAO,uBAAuB;IAC3B,gBAAgB,CAAC,SAAiB,EAAE,OAAgB;QACzD,OAAO,SAAS,KAAK,SAAS,CAAC,eAAe;eACzC,SAAS,KAAK,SAAS,CAAC,mBAAmB;eAC3C,CAAC,OAAO,CAAC,CAAC,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,CAAC;IAClI,CAAC;CACF"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * @license
3
+ * Copyright (c) Noldova.
4
+ *
5
+ * This source code is licensed under the license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+ import { Resources } from "../../resources.js";
9
+ export class RegexIdentityEscapeValidator {
10
+ isValid(lexer, character) {
11
+ if (!lexer.unicodeMode) {
12
+ if (lexer.hasNamedCapturingGroups && character === Resources.namedBackreferenceEscapeCharacter)
13
+ return false;
14
+ return true;
15
+ }
16
+ if (Resources.syntaxCharacters.includes(character) || character === Resources.slash)
17
+ return true;
18
+ if (!lexer.isInCharacterClass)
19
+ return false;
20
+ if (character === Resources.hyphen)
21
+ return true;
22
+ return lexer.unicodeSetsMode && Resources.classSetReservedPunctuators.includes(character);
23
+ }
24
+ }
25
+ //# sourceMappingURL=regex-identity-escape.validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regex-identity-escape.validator.js","sourceRoot":"","sources":["../../../../../src/parsers/noldova.context.parsers.regex/src/services/validators/regex-identity-escape.validator.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG/C,MAAM,OAAO,4BAA4B;IAChC,OAAO,CAAC,KAAiB,EAAE,SAAiB;QACjD,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YACvB,IAAI,KAAK,CAAC,uBAAuB,IAAI,SAAS,KAAK,SAAS,CAAC,iCAAiC;gBAC5F,OAAO,KAAK,CAAC;YAEf,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,SAAS,CAAC,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,KAAK,SAAS,CAAC,KAAK;YACjF,OAAO,IAAI,CAAC;QAEd,IAAI,CAAC,KAAK,CAAC,kBAAkB;YAC3B,OAAO,KAAK,CAAC;QAEf,IAAI,SAAS,KAAK,SAAS,CAAC,MAAM;YAChC,OAAO,IAAI,CAAC;QAEd,OAAO,KAAK,CAAC,eAAe,IAAI,SAAS,CAAC,2BAA2B,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC5F,CAAC;CACF"}
package/README.md DELETED
@@ -1,3 +0,0 @@
1
- # Temporary Holding Version
2
-
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.