@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.
- package/LICENSE +21 -0
- package/api/index.d.ts +1752 -0
- package/api/index.js +78 -0
- package/api/index.js.map +1 -0
- package/extensions/nodes/assertions/regex-end-assertion.node.extensions.js +12 -0
- package/extensions/nodes/assertions/regex-end-assertion.node.extensions.js.map +1 -0
- package/extensions/nodes/assertions/regex-non-word-boundary-assertion.node.extensions.js +12 -0
- package/extensions/nodes/assertions/regex-non-word-boundary-assertion.node.extensions.js.map +1 -0
- package/extensions/nodes/assertions/regex-start-assertion.node.extensions.js +12 -0
- package/extensions/nodes/assertions/regex-start-assertion.node.extensions.js.map +1 -0
- package/extensions/nodes/assertions/regex-word-boundary-assertion.node.extensions.js +12 -0
- package/extensions/nodes/assertions/regex-word-boundary-assertion.node.extensions.js.map +1 -0
- package/extensions/nodes/classes/regex-character-class.node.extensions.js +12 -0
- package/extensions/nodes/classes/regex-character-class.node.extensions.js.map +1 -0
- package/extensions/nodes/classes/regex-class-intersection.node.extensions.js +12 -0
- package/extensions/nodes/classes/regex-class-intersection.node.extensions.js.map +1 -0
- package/extensions/nodes/classes/regex-class-string-disjunction.node.extensions.js +12 -0
- package/extensions/nodes/classes/regex-class-string-disjunction.node.extensions.js.map +1 -0
- package/extensions/nodes/classes/regex-class-subtraction.node.extensions.js +12 -0
- package/extensions/nodes/classes/regex-class-subtraction.node.extensions.js.map +1 -0
- package/extensions/nodes/classes/regex-class-union.node.extensions.js +12 -0
- package/extensions/nodes/classes/regex-class-union.node.extensions.js.map +1 -0
- package/extensions/nodes/escapes/regex-backspace-escape.node.extensions.js +13 -0
- package/extensions/nodes/escapes/regex-backspace-escape.node.extensions.js.map +1 -0
- package/extensions/nodes/escapes/regex-carriage-return-escape.node.extensions.js +13 -0
- package/extensions/nodes/escapes/regex-carriage-return-escape.node.extensions.js.map +1 -0
- package/extensions/nodes/escapes/regex-class-control-escape.node.extensions.js +12 -0
- package/extensions/nodes/escapes/regex-class-control-escape.node.extensions.js.map +1 -0
- package/extensions/nodes/escapes/regex-control-letter-escape.node.extensions.js +12 -0
- package/extensions/nodes/escapes/regex-control-letter-escape.node.extensions.js.map +1 -0
- package/extensions/nodes/escapes/regex-form-feed-escape.node.extensions.js +13 -0
- package/extensions/nodes/escapes/regex-form-feed-escape.node.extensions.js.map +1 -0
- package/extensions/nodes/escapes/regex-hex-escape.node.extensions.js +12 -0
- package/extensions/nodes/escapes/regex-hex-escape.node.extensions.js.map +1 -0
- package/extensions/nodes/escapes/regex-identity-escape.node.extensions.js +12 -0
- package/extensions/nodes/escapes/regex-identity-escape.node.extensions.js.map +1 -0
- package/extensions/nodes/escapes/regex-legacy-octal-escape.node.extensions.js +12 -0
- package/extensions/nodes/escapes/regex-legacy-octal-escape.node.extensions.js.map +1 -0
- package/extensions/nodes/escapes/regex-newline-escape.node.extensions.js +13 -0
- package/extensions/nodes/escapes/regex-newline-escape.node.extensions.js.map +1 -0
- package/extensions/nodes/escapes/regex-null-escape.node.extensions.js +13 -0
- package/extensions/nodes/escapes/regex-null-escape.node.extensions.js.map +1 -0
- package/extensions/nodes/escapes/regex-tab-escape.node.extensions.js +13 -0
- package/extensions/nodes/escapes/regex-tab-escape.node.extensions.js.map +1 -0
- package/extensions/nodes/escapes/regex-unicode-escape.node.extensions.js +12 -0
- package/extensions/nodes/escapes/regex-unicode-escape.node.extensions.js.map +1 -0
- package/extensions/nodes/escapes/regex-unicode-property-escape.node.extensions.js +12 -0
- package/extensions/nodes/escapes/regex-unicode-property-escape.node.extensions.js.map +1 -0
- package/extensions/nodes/escapes/regex-vertical-tab-escape.node.extensions.js +13 -0
- package/extensions/nodes/escapes/regex-vertical-tab-escape.node.extensions.js.map +1 -0
- package/extensions/nodes/node.extensions.js +78 -0
- package/extensions/nodes/node.extensions.js.map +1 -0
- package/extensions/nodes/punctuators/regex-ampersand-ampersand.node.extensions.js +21 -0
- package/extensions/nodes/punctuators/regex-ampersand-ampersand.node.extensions.js.map +1 -0
- package/extensions/nodes/punctuators/regex-asterisk.node.extensions.js +16 -0
- package/extensions/nodes/punctuators/regex-asterisk.node.extensions.js.map +1 -0
- package/extensions/nodes/punctuators/regex-bar.node.extensions.js +12 -0
- package/extensions/nodes/punctuators/regex-bar.node.extensions.js.map +1 -0
- package/extensions/nodes/punctuators/regex-close-brace.node.extensions.js +16 -0
- package/extensions/nodes/punctuators/regex-close-brace.node.extensions.js.map +1 -0
- package/extensions/nodes/punctuators/regex-close-bracket.node.extensions.js +16 -0
- package/extensions/nodes/punctuators/regex-close-bracket.node.extensions.js.map +1 -0
- package/extensions/nodes/punctuators/regex-close-parenthesis.node.extensions.js +12 -0
- package/extensions/nodes/punctuators/regex-close-parenthesis.node.extensions.js.map +1 -0
- package/extensions/nodes/punctuators/regex-colon.node.extensions.js +14 -0
- package/extensions/nodes/punctuators/regex-colon.node.extensions.js.map +1 -0
- package/extensions/nodes/punctuators/regex-comma.node.extensions.js +14 -0
- package/extensions/nodes/punctuators/regex-comma.node.extensions.js.map +1 -0
- package/extensions/nodes/punctuators/regex-equals.node.extensions.js +14 -0
- package/extensions/nodes/punctuators/regex-equals.node.extensions.js.map +1 -0
- package/extensions/nodes/punctuators/regex-exclamation.node.extensions.js +14 -0
- package/extensions/nodes/punctuators/regex-exclamation.node.extensions.js.map +1 -0
- package/extensions/nodes/punctuators/regex-greater-than.node.extensions.js +14 -0
- package/extensions/nodes/punctuators/regex-greater-than.node.extensions.js.map +1 -0
- package/extensions/nodes/punctuators/regex-hyphen-hyphen.node.extensions.js +21 -0
- package/extensions/nodes/punctuators/regex-hyphen-hyphen.node.extensions.js.map +1 -0
- package/extensions/nodes/punctuators/regex-hyphen.node.extensions.js +18 -0
- package/extensions/nodes/punctuators/regex-hyphen.node.extensions.js.map +1 -0
- package/extensions/nodes/punctuators/regex-less-than.node.extensions.js +14 -0
- package/extensions/nodes/punctuators/regex-less-than.node.extensions.js.map +1 -0
- package/extensions/nodes/punctuators/regex-open-brace.node.extensions.js +16 -0
- package/extensions/nodes/punctuators/regex-open-brace.node.extensions.js.map +1 -0
- package/extensions/nodes/punctuators/regex-open-bracket.node.extensions.js +12 -0
- package/extensions/nodes/punctuators/regex-open-bracket.node.extensions.js.map +1 -0
- package/extensions/nodes/punctuators/regex-open-parenthesis.node.extensions.js +12 -0
- package/extensions/nodes/punctuators/regex-open-parenthesis.node.extensions.js.map +1 -0
- package/extensions/nodes/punctuators/regex-plus.node.extensions.js +16 -0
- package/extensions/nodes/punctuators/regex-plus.node.extensions.js.map +1 -0
- package/extensions/nodes/punctuators/regex-question.node.extensions.js +19 -0
- package/extensions/nodes/punctuators/regex-question.node.extensions.js.map +1 -0
- package/extensions/nodes/regex-character.node.extensions.js +12 -0
- package/extensions/nodes/regex-character.node.extensions.js.map +1 -0
- package/models/diagnostics/regex-diagnostic-templates.js +53 -0
- package/models/diagnostics/regex-diagnostic-templates.js.map +1 -0
- package/models/nodes/assertions/regex-end-assertion.node.js +15 -0
- package/models/nodes/assertions/regex-end-assertion.node.js.map +1 -0
- package/models/nodes/assertions/regex-lookahead-assertion.node.js +18 -0
- package/models/nodes/assertions/regex-lookahead-assertion.node.js.map +1 -0
- package/models/nodes/assertions/regex-lookbehind-assertion.node.js +18 -0
- package/models/nodes/assertions/regex-lookbehind-assertion.node.js.map +1 -0
- package/models/nodes/assertions/regex-non-word-boundary-assertion.node.js +15 -0
- package/models/nodes/assertions/regex-non-word-boundary-assertion.node.js.map +1 -0
- package/models/nodes/assertions/regex-start-assertion.node.js +15 -0
- package/models/nodes/assertions/regex-start-assertion.node.js.map +1 -0
- package/models/nodes/assertions/regex-word-boundary-assertion.node.js +15 -0
- package/models/nodes/assertions/regex-word-boundary-assertion.node.js.map +1 -0
- package/models/nodes/classes/regex-character-class.node.js +20 -0
- package/models/nodes/classes/regex-character-class.node.js.map +1 -0
- package/models/nodes/classes/regex-character-range.node.js +18 -0
- package/models/nodes/classes/regex-character-range.node.js.map +1 -0
- package/models/nodes/classes/regex-class-intersection.node.js +17 -0
- package/models/nodes/classes/regex-class-intersection.node.js.map +1 -0
- package/models/nodes/classes/regex-class-string-disjunction.node.js +19 -0
- package/models/nodes/classes/regex-class-string-disjunction.node.js.map +1 -0
- package/models/nodes/classes/regex-class-string.node.js +14 -0
- package/models/nodes/classes/regex-class-string.node.js.map +1 -0
- package/models/nodes/classes/regex-class-subtraction.node.js +17 -0
- package/models/nodes/classes/regex-class-subtraction.node.js.map +1 -0
- package/models/nodes/classes/regex-class-union.node.js +14 -0
- package/models/nodes/classes/regex-class-union.node.js.map +1 -0
- package/models/nodes/escapes/regex-backreference.node.js +16 -0
- package/models/nodes/escapes/regex-backreference.node.js.map +1 -0
- package/models/nodes/escapes/regex-backspace-escape.node.js +15 -0
- package/models/nodes/escapes/regex-backspace-escape.node.js.map +1 -0
- package/models/nodes/escapes/regex-carriage-return-escape.node.js +15 -0
- package/models/nodes/escapes/regex-carriage-return-escape.node.js.map +1 -0
- package/models/nodes/escapes/regex-class-control-escape.node.js +16 -0
- package/models/nodes/escapes/regex-class-control-escape.node.js.map +1 -0
- package/models/nodes/escapes/regex-control-letter-escape.node.js +16 -0
- package/models/nodes/escapes/regex-control-letter-escape.node.js.map +1 -0
- package/models/nodes/escapes/regex-decimal-escape.node.js +16 -0
- package/models/nodes/escapes/regex-decimal-escape.node.js.map +1 -0
- package/models/nodes/escapes/regex-digit-escape.node.js +15 -0
- package/models/nodes/escapes/regex-digit-escape.node.js.map +1 -0
- package/models/nodes/escapes/regex-form-feed-escape.node.js +15 -0
- package/models/nodes/escapes/regex-form-feed-escape.node.js.map +1 -0
- package/models/nodes/escapes/regex-hex-escape.node.js +16 -0
- package/models/nodes/escapes/regex-hex-escape.node.js.map +1 -0
- package/models/nodes/escapes/regex-identity-escape.node.js +16 -0
- package/models/nodes/escapes/regex-identity-escape.node.js.map +1 -0
- package/models/nodes/escapes/regex-legacy-octal-escape.node.js +16 -0
- package/models/nodes/escapes/regex-legacy-octal-escape.node.js.map +1 -0
- package/models/nodes/escapes/regex-named-backreference.node.js +16 -0
- package/models/nodes/escapes/regex-named-backreference.node.js.map +1 -0
- package/models/nodes/escapes/regex-newline-escape.node.js +15 -0
- package/models/nodes/escapes/regex-newline-escape.node.js.map +1 -0
- package/models/nodes/escapes/regex-non-digit-escape.node.js +15 -0
- package/models/nodes/escapes/regex-non-digit-escape.node.js.map +1 -0
- package/models/nodes/escapes/regex-non-whitespace-escape.node.js +15 -0
- package/models/nodes/escapes/regex-non-whitespace-escape.node.js.map +1 -0
- package/models/nodes/escapes/regex-non-word-escape.node.js +15 -0
- package/models/nodes/escapes/regex-non-word-escape.node.js.map +1 -0
- package/models/nodes/escapes/regex-null-escape.node.js +15 -0
- package/models/nodes/escapes/regex-null-escape.node.js.map +1 -0
- package/models/nodes/escapes/regex-tab-escape.node.js +15 -0
- package/models/nodes/escapes/regex-tab-escape.node.js.map +1 -0
- package/models/nodes/escapes/regex-unicode-escape.node.js +16 -0
- package/models/nodes/escapes/regex-unicode-escape.node.js.map +1 -0
- package/models/nodes/escapes/regex-unicode-property-escape.node.js +22 -0
- package/models/nodes/escapes/regex-unicode-property-escape.node.js.map +1 -0
- package/models/nodes/escapes/regex-vertical-tab-escape.node.js +15 -0
- package/models/nodes/escapes/regex-vertical-tab-escape.node.js.map +1 -0
- package/models/nodes/escapes/regex-whitespace-escape.node.js +15 -0
- package/models/nodes/escapes/regex-whitespace-escape.node.js.map +1 -0
- package/models/nodes/escapes/regex-word-escape.node.js +15 -0
- package/models/nodes/escapes/regex-word-escape.node.js.map +1 -0
- package/models/nodes/groups/regex-capturing-group.node.js +18 -0
- package/models/nodes/groups/regex-capturing-group.node.js.map +1 -0
- package/models/nodes/groups/regex-modifier-group.node.js +20 -0
- package/models/nodes/groups/regex-modifier-group.node.js.map +1 -0
- package/models/nodes/groups/regex-named-capturing-group.node.js +20 -0
- package/models/nodes/groups/regex-named-capturing-group.node.js.map +1 -0
- package/models/nodes/groups/regex-non-capturing-group.node.js +16 -0
- package/models/nodes/groups/regex-non-capturing-group.node.js.map +1 -0
- package/models/nodes/punctuators/regex-ampersand-ampersand.node.js +15 -0
- package/models/nodes/punctuators/regex-ampersand-ampersand.node.js.map +1 -0
- package/models/nodes/punctuators/regex-asterisk.node.js +15 -0
- package/models/nodes/punctuators/regex-asterisk.node.js.map +1 -0
- package/models/nodes/punctuators/regex-bar.node.js +15 -0
- package/models/nodes/punctuators/regex-bar.node.js.map +1 -0
- package/models/nodes/punctuators/regex-class-string-disjunction-start.node.js +15 -0
- package/models/nodes/punctuators/regex-class-string-disjunction-start.node.js.map +1 -0
- package/models/nodes/punctuators/regex-close-brace.node.js +15 -0
- package/models/nodes/punctuators/regex-close-brace.node.js.map +1 -0
- package/models/nodes/punctuators/regex-close-bracket.node.js +15 -0
- package/models/nodes/punctuators/regex-close-bracket.node.js.map +1 -0
- package/models/nodes/punctuators/regex-close-parenthesis.node.js +15 -0
- package/models/nodes/punctuators/regex-close-parenthesis.node.js.map +1 -0
- package/models/nodes/punctuators/regex-colon.node.js +15 -0
- package/models/nodes/punctuators/regex-colon.node.js.map +1 -0
- package/models/nodes/punctuators/regex-comma.node.js +15 -0
- package/models/nodes/punctuators/regex-comma.node.js.map +1 -0
- package/models/nodes/punctuators/regex-equals.node.js +15 -0
- package/models/nodes/punctuators/regex-equals.node.js.map +1 -0
- package/models/nodes/punctuators/regex-exclamation.node.js +15 -0
- package/models/nodes/punctuators/regex-exclamation.node.js.map +1 -0
- package/models/nodes/punctuators/regex-greater-than.node.js +15 -0
- package/models/nodes/punctuators/regex-greater-than.node.js.map +1 -0
- package/models/nodes/punctuators/regex-hyphen-hyphen.node.js +15 -0
- package/models/nodes/punctuators/regex-hyphen-hyphen.node.js.map +1 -0
- package/models/nodes/punctuators/regex-hyphen.node.js +15 -0
- package/models/nodes/punctuators/regex-hyphen.node.js.map +1 -0
- package/models/nodes/punctuators/regex-less-than.node.js +15 -0
- package/models/nodes/punctuators/regex-less-than.node.js.map +1 -0
- package/models/nodes/punctuators/regex-open-brace.node.js +15 -0
- package/models/nodes/punctuators/regex-open-brace.node.js.map +1 -0
- package/models/nodes/punctuators/regex-open-bracket.node.js +15 -0
- package/models/nodes/punctuators/regex-open-bracket.node.js.map +1 -0
- package/models/nodes/punctuators/regex-open-parenthesis.node.js +15 -0
- package/models/nodes/punctuators/regex-open-parenthesis.node.js.map +1 -0
- package/models/nodes/punctuators/regex-plus.node.js +15 -0
- package/models/nodes/punctuators/regex-plus.node.js.map +1 -0
- package/models/nodes/punctuators/regex-question.node.js +15 -0
- package/models/nodes/punctuators/regex-question.node.js.map +1 -0
- package/models/nodes/regex-alternative.node.js +14 -0
- package/models/nodes/regex-alternative.node.js.map +1 -0
- package/models/nodes/regex-character.node.js +14 -0
- package/models/nodes/regex-character.node.js.map +1 -0
- package/models/nodes/regex-disjunction.node.js +17 -0
- package/models/nodes/regex-disjunction.node.js.map +1 -0
- package/models/nodes/regex-dot.node.js +15 -0
- package/models/nodes/regex-dot.node.js.map +1 -0
- package/models/nodes/regex-flags.node.js +31 -0
- package/models/nodes/regex-flags.node.js.map +1 -0
- package/models/nodes/regex-pattern.node.js +18 -0
- package/models/nodes/regex-pattern.node.js.map +1 -0
- package/models/nodes/regex-quantifier.node.js +20 -0
- package/models/nodes/regex-quantifier.node.js.map +1 -0
- package/models/nodes/regex-unknown.node.js +14 -0
- package/models/nodes/regex-unknown.node.js.map +1 -0
- package/models/nodes/regex.node.js +20 -0
- package/models/nodes/regex.node.js.map +1 -0
- package/models/regex-alternative-branch.js +16 -0
- package/models/regex-alternative-branch.js.map +1 -0
- package/models/regex-capturing-group-summary.js +16 -0
- package/models/regex-capturing-group-summary.js.map +1 -0
- package/models/regex-group-name.js +16 -0
- package/models/regex-group-name.js.map +1 -0
- package/models/regex-named-group-branch.js +12 -0
- package/models/regex-named-group-branch.js.map +1 -0
- package/models/regex-parser-context.js +41 -0
- package/models/regex-parser-context.js.map +1 -0
- package/models/regex-unicode-escape-value.js +16 -0
- package/models/regex-unicode-escape-value.js.map +1 -0
- package/package.json +26 -4
- package/resources.js +112 -0
- package/resources.js.map +1 -0
- package/services/lexers/character.lexer.js +24 -0
- package/services/lexers/character.lexer.js.map +1 -0
- package/services/lexers/code-point-escape.lexer.js +56 -0
- package/services/lexers/code-point-escape.lexer.js.map +1 -0
- package/services/lexers/control-escape.lexer.js +40 -0
- package/services/lexers/control-escape.lexer.js.map +1 -0
- package/services/lexers/escape.lexer.js +130 -0
- package/services/lexers/escape.lexer.js.map +1 -0
- package/services/lexers/named-backreference.lexer.js +48 -0
- package/services/lexers/named-backreference.lexer.js.map +1 -0
- package/services/lexers/numeric-escape.lexer.js +87 -0
- package/services/lexers/numeric-escape.lexer.js.map +1 -0
- package/services/lexers/regex.lexer.js +200 -0
- package/services/lexers/regex.lexer.js.map +1 -0
- package/services/lexers/unicode-property-escape.lexer.js +59 -0
- package/services/lexers/unicode-property-escape.lexer.js.map +1 -0
- package/services/parsers/regex-alternative.parser.js +27 -0
- package/services/parsers/regex-alternative.parser.js.map +1 -0
- package/services/parsers/regex-assertion.parser.js +38 -0
- package/services/parsers/regex-assertion.parser.js.map +1 -0
- package/services/parsers/regex-capturing-group.parser.js +24 -0
- package/services/parsers/regex-capturing-group.parser.js.map +1 -0
- package/services/parsers/regex-character-class.parser.js +107 -0
- package/services/parsers/regex-character-class.parser.js.map +1 -0
- package/services/parsers/regex-class-set-expression.parser.js +114 -0
- package/services/parsers/regex-class-set-expression.parser.js.map +1 -0
- package/services/parsers/regex-class-string-disjunction.parser.js +57 -0
- package/services/parsers/regex-class-string-disjunction.parser.js.map +1 -0
- package/services/parsers/regex-disjunction.parser.js +33 -0
- package/services/parsers/regex-disjunction.parser.js.map +1 -0
- package/services/parsers/regex-group-end.parser.js +25 -0
- package/services/parsers/regex-group-end.parser.js.map +1 -0
- package/services/parsers/regex-group.parser.js +91 -0
- package/services/parsers/regex-group.parser.js.map +1 -0
- package/services/parsers/regex-lookaround.parser.js +35 -0
- package/services/parsers/regex-lookaround.parser.js.map +1 -0
- package/services/parsers/regex-modifier-group.parser.js +78 -0
- package/services/parsers/regex-modifier-group.parser.js.map +1 -0
- package/services/parsers/regex-named-capturing-group.parser.js +60 -0
- package/services/parsers/regex-named-capturing-group.parser.js.map +1 -0
- package/services/parsers/regex-non-capturing-group.parser.js +24 -0
- package/services/parsers/regex-non-capturing-group.parser.js.map +1 -0
- package/services/parsers/regex-pattern.parser.js +23 -0
- package/services/parsers/regex-pattern.parser.js.map +1 -0
- package/services/parsers/regex-quantifier.parser.js +85 -0
- package/services/parsers/regex-quantifier.parser.js.map +1 -0
- package/services/parsers/regex-term.parser.js +50 -0
- package/services/parsers/regex-term.parser.js.map +1 -0
- package/services/readers/regex-capturing-group-summary.reader.js +56 -0
- package/services/readers/regex-capturing-group-summary.reader.js.map +1 -0
- package/services/readers/regex-group-name.reader.js +44 -0
- package/services/readers/regex-group-name.reader.js.map +1 -0
- package/services/readers/regex-unicode-escape.reader.js +72 -0
- package/services/readers/regex-unicode-escape.reader.js.map +1 -0
- package/services/regex-named-group-registry.js +48 -0
- package/services/regex-named-group-registry.js.map +1 -0
- package/services/regex-syntax.parser.js +73 -0
- package/services/regex-syntax.parser.js.map +1 -0
- package/services/regex.parser.js +39 -0
- package/services/regex.parser.js.map +1 -0
- package/services/unicode/regex-unicode-property-catalog.js +118 -0
- package/services/unicode/regex-unicode-property-catalog.js.map +1 -0
- package/services/validators/regex-character-range.validator.js +22 -0
- package/services/validators/regex-character-range.validator.js.map +1 -0
- package/services/validators/regex-class-set-character.validator.js +30 -0
- package/services/validators/regex-class-set-character.validator.js.map +1 -0
- package/services/validators/regex-flag.validator.js +36 -0
- package/services/validators/regex-flag.validator.js.map +1 -0
- package/services/validators/regex-group-name.validator.js +17 -0
- package/services/validators/regex-group-name.validator.js.map +1 -0
- package/services/validators/regex-identity-escape.validator.js +25 -0
- package/services/validators/regex-identity-escape.validator.js.map +1 -0
- 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