@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,31 @@
|
|
|
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 { ValueNode } from "@noldova/context.parsers";
|
|
9
|
+
import { Resources } from "../../resources.js";
|
|
10
|
+
export class RegexFlagsNode extends ValueNode {
|
|
11
|
+
hasIndices;
|
|
12
|
+
global;
|
|
13
|
+
ignoreCase;
|
|
14
|
+
multiline;
|
|
15
|
+
dotAll;
|
|
16
|
+
unicode;
|
|
17
|
+
unicodeSets;
|
|
18
|
+
sticky;
|
|
19
|
+
constructor(value, span) {
|
|
20
|
+
super(value, span);
|
|
21
|
+
this.hasIndices = value.includes(Resources.hasIndicesFlag);
|
|
22
|
+
this.global = value.includes(Resources.globalFlag);
|
|
23
|
+
this.ignoreCase = value.includes(Resources.ignoreCaseFlag);
|
|
24
|
+
this.multiline = value.includes(Resources.multilineFlag);
|
|
25
|
+
this.dotAll = value.includes(Resources.dotAllFlag);
|
|
26
|
+
this.unicode = value.includes(Resources.unicodeFlag);
|
|
27
|
+
this.unicodeSets = value.includes(Resources.unicodeSetsFlag);
|
|
28
|
+
this.sticky = value.includes(Resources.stickyFlag);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=regex-flags.node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"regex-flags.node.js","sourceRoot":"","sources":["../../../../../src/parsers/noldova.context.parsers.regex/src/models/nodes/regex-flags.node.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAmB,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAEtE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,MAAM,OAAO,cAAe,SAAQ,SAAS;IAC3B,UAAU,CAAU;IACpB,MAAM,CAAU;IAChB,UAAU,CAAU;IACpB,SAAS,CAAU;IACnB,MAAM,CAAU;IAChB,OAAO,CAAU;IACjB,WAAW,CAAU;IACrB,MAAM,CAAU;IAEhC,YAAmB,KAAa,EAAE,IAAgB;QAChD,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACnB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QAC3D,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACnD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QAC3D,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QACzD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACnD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QACrD,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QAC7D,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACrD,CAAC;CACF"}
|
|
@@ -0,0 +1,18 @@
|
|
|
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 { Node } from "@noldova/context.parsers";
|
|
9
|
+
export class RegexPatternNode extends Node {
|
|
10
|
+
value;
|
|
11
|
+
disjunctionNode;
|
|
12
|
+
constructor(value, disjunctionNode, span) {
|
|
13
|
+
super(span);
|
|
14
|
+
this.value = value;
|
|
15
|
+
this.disjunctionNode = disjunctionNode;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=regex-pattern.node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"regex-pattern.node.js","sourceRoot":"","sources":["../../../../../src/parsers/noldova.context.parsers.regex/src/models/nodes/regex-pattern.node.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,IAAI,EAAmB,MAAM,0BAA0B,CAAC;AAIjE,MAAM,OAAO,gBAAiB,SAAQ,IAAI;IACxB,KAAK,CAAS;IACd,eAAe,CAAuB;IAEtD,YAAmB,KAAa,EAAE,eAAqC,EAAE,IAAgB;QACvF,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;IACzC,CAAC;CACF"}
|
|
@@ -0,0 +1,20 @@
|
|
|
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 { ValueNode } from "@noldova/context.parsers";
|
|
9
|
+
export class RegexQuantifierNode extends ValueNode {
|
|
10
|
+
minimum;
|
|
11
|
+
maximum;
|
|
12
|
+
greedy;
|
|
13
|
+
constructor(value, minimum, maximum, greedy, span) {
|
|
14
|
+
super(value, span);
|
|
15
|
+
this.minimum = minimum;
|
|
16
|
+
this.maximum = maximum;
|
|
17
|
+
this.greedy = greedy;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=regex-quantifier.node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"regex-quantifier.node.js","sourceRoot":"","sources":["../../../../../src/parsers/noldova.context.parsers.regex/src/models/nodes/regex-quantifier.node.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAmB,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAEtE,MAAM,OAAO,mBAAoB,SAAQ,SAAS;IAChC,OAAO,CAAS;IAChB,OAAO,CAAqB;IAC5B,MAAM,CAAU;IAEhC,YAAmB,KAAa,EAAE,OAAe,EAAE,OAA2B,EAAE,MAAe,EAAE,IAAgB;QAC/G,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF"}
|
|
@@ -0,0 +1,14 @@
|
|
|
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 { ValueNode } from "@noldova/context.parsers";
|
|
9
|
+
export class RegexUnknownNode extends ValueNode {
|
|
10
|
+
constructor(value, span) {
|
|
11
|
+
super(value, span);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=regex-unknown.node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"regex-unknown.node.js","sourceRoot":"","sources":["../../../../../src/parsers/noldova.context.parsers.regex/src/models/nodes/regex-unknown.node.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAmB,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAEtE,MAAM,OAAO,gBAAiB,SAAQ,SAAS;IAC7C,YAAmB,KAAa,EAAE,IAAgB;QAChD,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACrB,CAAC;CACF"}
|
|
@@ -0,0 +1,20 @@
|
|
|
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 { Node } from "@noldova/context.parsers";
|
|
9
|
+
export class RegexNode extends Node {
|
|
10
|
+
rawValue;
|
|
11
|
+
patternNode;
|
|
12
|
+
flagsNode;
|
|
13
|
+
constructor(rawValue, patternNode, flagsNode, span, leadingTrivia, trailingTrivia) {
|
|
14
|
+
super(span, leadingTrivia, trailingTrivia);
|
|
15
|
+
this.rawValue = rawValue;
|
|
16
|
+
this.patternNode = patternNode;
|
|
17
|
+
this.flagsNode = flagsNode;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=regex.node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"regex.node.js","sourceRoot":"","sources":["../../../../../src/parsers/noldova.context.parsers.regex/src/models/nodes/regex.node.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,IAAI,EAAmB,MAAM,0BAA0B,CAAC;AAKjE,MAAM,OAAO,SAAU,SAAQ,IAAI;IACjB,QAAQ,CAAS;IACjB,WAAW,CAAmB;IAC9B,SAAS,CAAiB;IAE1C,YAAmB,QAAgB,EAAE,WAA6B,EAAE,SAAyB,EAAE,IAAgB,EAAE,aAAoB,EAAE,cAAqB;QAC1J,KAAK,CAAC,IAAI,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;QAC3C,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;CACF"}
|
|
@@ -0,0 +1,16 @@
|
|
|
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
|
+
export class RegexAlternativeBranch {
|
|
9
|
+
alternativeIndex;
|
|
10
|
+
disjunctionIndex;
|
|
11
|
+
constructor(disjunctionIndex, alternativeIndex) {
|
|
12
|
+
this.disjunctionIndex = disjunctionIndex;
|
|
13
|
+
this.alternativeIndex = alternativeIndex;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=regex-alternative-branch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"regex-alternative-branch.js","sourceRoot":"","sources":["../../../../src/parsers/noldova.context.parsers.regex/src/models/regex-alternative-branch.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,OAAO,sBAAsB;IACjB,gBAAgB,CAAS;IACzB,gBAAgB,CAAS;IAEzC,YAAmB,gBAAwB,EAAE,gBAAwB;QACnE,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC3C,CAAC;CACF"}
|
|
@@ -0,0 +1,16 @@
|
|
|
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
|
+
export class RegexCapturingGroupSummary {
|
|
9
|
+
capturingGroupCount;
|
|
10
|
+
namedCapturingGroupNames;
|
|
11
|
+
constructor(capturingGroupCount, namedCapturingGroupNames) {
|
|
12
|
+
this.capturingGroupCount = capturingGroupCount;
|
|
13
|
+
this.namedCapturingGroupNames = namedCapturingGroupNames;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=regex-capturing-group-summary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"regex-capturing-group-summary.js","sourceRoot":"","sources":["../../../../src/parsers/noldova.context.parsers.regex/src/models/regex-capturing-group-summary.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,OAAO,0BAA0B;IACrB,mBAAmB,CAAS;IAC5B,wBAAwB,CAAsB;IAE9D,YAAmB,mBAA2B,EAAE,wBAA6C;QAC3F,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;QAC/C,IAAI,CAAC,wBAAwB,GAAG,wBAAwB,CAAC;IAC3D,CAAC;CACF"}
|
|
@@ -0,0 +1,16 @@
|
|
|
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
|
+
export class RegexGroupName {
|
|
9
|
+
value;
|
|
10
|
+
isValid;
|
|
11
|
+
constructor(value, isValid) {
|
|
12
|
+
this.value = value;
|
|
13
|
+
this.isValid = isValid;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=regex-group-name.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"regex-group-name.js","sourceRoot":"","sources":["../../../../src/parsers/noldova.context.parsers.regex/src/models/regex-group-name.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,OAAO,cAAc;IACT,KAAK,CAAS;IACd,OAAO,CAAU;IAEjC,YAAmB,KAAa,EAAE,OAAgB;QAChD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF"}
|
|
@@ -0,0 +1,12 @@
|
|
|
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
|
+
export class RegexNamedGroupBranch {
|
|
9
|
+
disjunctions = new Map();
|
|
10
|
+
isTerminal = false;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=regex-named-group-branch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"regex-named-group-branch.js","sourceRoot":"","sources":["../../../../src/parsers/noldova.context.parsers.regex/src/models/regex-named-group-branch.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,OAAO,qBAAqB;IAChB,YAAY,GAAoD,IAAI,GAAG,EAAE,CAAC;IACnF,UAAU,GAAY,KAAK,CAAC;CACpC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
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 { ParserContext } from "@noldova/context.parsers";
|
|
9
|
+
import { RegexNamedGroupRegistry } from "../services/regex-named-group-registry.js";
|
|
10
|
+
import { RegexDiagnosticTemplates } from "./diagnostics/regex-diagnostic-templates.js";
|
|
11
|
+
import { RegexAlternativeBranch } from "./regex-alternative-branch.js";
|
|
12
|
+
export class RegexParserContext extends ParserContext {
|
|
13
|
+
currentAlternativeBranches = [];
|
|
14
|
+
namedGroupRegistry = new RegexNamedGroupRegistry();
|
|
15
|
+
nextCapturingGroupIndex = 1;
|
|
16
|
+
nextDisjunctionIndex = 0;
|
|
17
|
+
nestingDepth = 0;
|
|
18
|
+
diagnosedReservedPunctuatorOffsets = new Set();
|
|
19
|
+
claimCapturingGroupIndex() {
|
|
20
|
+
const index = this.nextCapturingGroupIndex;
|
|
21
|
+
this.nextCapturingGroupIndex++;
|
|
22
|
+
return index;
|
|
23
|
+
}
|
|
24
|
+
beginDisjunction() {
|
|
25
|
+
const index = this.nextDisjunctionIndex;
|
|
26
|
+
this.nextDisjunctionIndex++;
|
|
27
|
+
return index;
|
|
28
|
+
}
|
|
29
|
+
enterAlternative(disjunctionIndex, alternativeIndex) {
|
|
30
|
+
this.currentAlternativeBranches.push(new RegexAlternativeBranch(disjunctionIndex, alternativeIndex));
|
|
31
|
+
}
|
|
32
|
+
leaveAlternative() {
|
|
33
|
+
this.currentAlternativeBranches.pop();
|
|
34
|
+
}
|
|
35
|
+
registerNamedCapturingGroup(groupName, span) {
|
|
36
|
+
if (this.namedGroupRegistry.hasConflict(groupName, this.currentAlternativeBranches))
|
|
37
|
+
this.diagnosticCollector.add(RegexDiagnosticTemplates.CTX1024, span, [groupName]);
|
|
38
|
+
this.namedGroupRegistry.add(groupName, this.currentAlternativeBranches);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=regex-parser-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"regex-parser-context.js","sourceRoot":"","sources":["../../../../src/parsers/noldova.context.parsers.regex/src/models/regex-parser-context.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,aAAa,EAAmB,MAAM,0BAA0B,CAAC;AAE1E,OAAO,EAAE,uBAAuB,EAAE,MAAM,2CAA2C,CAAC;AACpF,OAAO,EAAE,wBAAwB,EAAE,MAAM,6CAA6C,CAAC;AACvF,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAEvE,MAAM,OAAO,kBAAmB,SAAQ,aAAa;IAClC,0BAA0B,GAA6B,EAAE,CAAC;IAC1D,kBAAkB,GAA4B,IAAI,uBAAuB,EAAE,CAAC;IACrF,uBAAuB,GAAW,CAAC,CAAC;IACpC,oBAAoB,GAAW,CAAC,CAAC;IAElC,YAAY,GAAW,CAAC,CAAC;IAChB,kCAAkC,GAAgB,IAAI,GAAG,EAAE,CAAC;IAErE,wBAAwB;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC;QAC3C,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,gBAAgB;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC;QACxC,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,gBAAgB,CAAC,gBAAwB,EAAE,gBAAwB;QACxE,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,sBAAsB,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC,CAAC;IACvG,CAAC;IAEM,gBAAgB;QACrB,IAAI,CAAC,0BAA0B,CAAC,GAAG,EAAE,CAAC;IACxC,CAAC;IAEM,2BAA2B,CAAC,SAAiB,EAAE,IAAgB;QACpE,IAAI,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,0BAA0B,CAAC;YACjF,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,wBAAwB,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;QAEpF,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,0BAA0B,CAAC,CAAC;IAC1E,CAAC;CACF"}
|
|
@@ -0,0 +1,16 @@
|
|
|
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
|
+
export class RegexUnicodeEscapeValue {
|
|
9
|
+
codePoint;
|
|
10
|
+
value;
|
|
11
|
+
constructor(value, codePoint) {
|
|
12
|
+
this.value = value;
|
|
13
|
+
this.codePoint = codePoint;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=regex-unicode-escape-value.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"regex-unicode-escape-value.js","sourceRoot":"","sources":["../../../../src/parsers/noldova.context.parsers.regex/src/models/regex-unicode-escape-value.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,OAAO,uBAAuB;IAClB,SAAS,CAAS;IAClB,KAAK,CAAS;IAE9B,YAAmB,KAAa,EAAE,SAAiB;QACjD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,28 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@noldova/context.parsers.regex",
|
|
3
|
-
"version": "0.0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "0.0.2",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"main": "api/index.js",
|
|
6
|
+
"types": "api/index.d.ts",
|
|
7
|
+
"license": "MIT",
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "git+https://github.com/noldova-com/context.git",
|
|
11
|
+
"directory": "src/parsers/noldova.context.parsers.regex"
|
|
12
|
+
},
|
|
13
|
+
"homepage": "https://github.com/noldova-com/context#readme",
|
|
14
|
+
"bugs": {
|
|
15
|
+
"url": "https://github.com/noldova-com/context/issues"
|
|
16
|
+
},
|
|
17
|
+
"publishConfig": {
|
|
18
|
+
"access": "public",
|
|
19
|
+
"registry": "https://registry.npmjs.org/"
|
|
20
|
+
},
|
|
21
|
+
"dependencies": {
|
|
22
|
+
"@noldova/context.core": "0.0.2",
|
|
23
|
+
"@noldova/context.diagnostics": "0.0.2",
|
|
24
|
+
"@noldova/context.exceptions": "0.0.2",
|
|
25
|
+
"@noldova/context.parsers": "0.0.2",
|
|
26
|
+
"@noldova/context.text": "0.0.2"
|
|
27
|
+
}
|
|
28
|
+
}
|
package/resources.js
ADDED
|
@@ -0,0 +1,112 @@
|
|
|
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
|
+
export class Resources {
|
|
9
|
+
static alternativesParameterName = "alternatives";
|
|
10
|
+
static ampersandAmpersand = "&&";
|
|
11
|
+
static asterisk = "*";
|
|
12
|
+
static backslash = "\\";
|
|
13
|
+
static backspaceCodePoint = 0x08;
|
|
14
|
+
static backspaceEscape = "\\b";
|
|
15
|
+
static backspaceEscapeCharacter = "b";
|
|
16
|
+
static bar = "|";
|
|
17
|
+
static caret = "^";
|
|
18
|
+
static carriageReturnCodePoint = 0x0D;
|
|
19
|
+
static carriageReturnEscape = "\\r";
|
|
20
|
+
static carriageReturnEscapeCharacter = "r";
|
|
21
|
+
static classControlEscapeCharacter = "c";
|
|
22
|
+
static classSetReservedPunctuators = "&-!#%,:;<=>@`~";
|
|
23
|
+
static classSetReservedDoublePunctuators = "&!#$%*+,.:;<=>?@^`~";
|
|
24
|
+
static classSetSyntaxCharacters = "()[]{}/-\\|";
|
|
25
|
+
static classStringDisjunctionEscapeCharacter = "q";
|
|
26
|
+
static classStringDisjunctionStart = "\\q{";
|
|
27
|
+
static closeBrace = "}";
|
|
28
|
+
static closeBracket = "]";
|
|
29
|
+
static closeParenthesis = ")";
|
|
30
|
+
static colon = ":";
|
|
31
|
+
static comma = ",";
|
|
32
|
+
static digitEscape = "\\d";
|
|
33
|
+
static digitEscapeCharacter = "d";
|
|
34
|
+
static digitThree = "3";
|
|
35
|
+
static digitZero = "0";
|
|
36
|
+
static dollar = "$";
|
|
37
|
+
static dollarCodePoint = 0x24;
|
|
38
|
+
static dot = ".";
|
|
39
|
+
static dotAllFlag = "s";
|
|
40
|
+
static equals = "=";
|
|
41
|
+
static exclamation = "!";
|
|
42
|
+
static flagCharacters = "dgimsuvy";
|
|
43
|
+
static flagsOutsideInput = "The flags span must follow the pattern and remain inside the complete regular-expression input.";
|
|
44
|
+
static formFeedCodePoint = 0x0C;
|
|
45
|
+
static formFeedEscape = "\\f";
|
|
46
|
+
static formFeedEscapeCharacter = "f";
|
|
47
|
+
static generalCategoryProperty = "General_Category";
|
|
48
|
+
static generalCategoryPropertyAlias = "gc";
|
|
49
|
+
static globalFlag = "g";
|
|
50
|
+
static greaterThan = ">";
|
|
51
|
+
static hasIndicesFlag = "d";
|
|
52
|
+
static hexEscapeCharacter = "x";
|
|
53
|
+
static hyphen = "-";
|
|
54
|
+
static hyphenHyphen = "--";
|
|
55
|
+
static ignoreCaseFlag = "i";
|
|
56
|
+
static lessThan = "<";
|
|
57
|
+
static maximumNestingDepth = 512;
|
|
58
|
+
static modifierCharacters = "ims";
|
|
59
|
+
static multilineFlag = "m";
|
|
60
|
+
static namedBackreferenceEscapeCharacter = "k";
|
|
61
|
+
static negatedUnicodePropertyEscapeCharacter = "P";
|
|
62
|
+
static newlineCodePoint = 0x0A;
|
|
63
|
+
static newlineEscape = "\\n";
|
|
64
|
+
static newlineEscapeCharacter = "n";
|
|
65
|
+
static nonDigitEscape = "\\D";
|
|
66
|
+
static nonDigitEscapeCharacter = "D";
|
|
67
|
+
static nonWhitespaceEscape = "\\S";
|
|
68
|
+
static nonWhitespaceEscapeCharacter = "S";
|
|
69
|
+
static nonWordBoundary = "\\B";
|
|
70
|
+
static nonWordBoundaryEscapeCharacter = "B";
|
|
71
|
+
static nonWordEscape = "\\W";
|
|
72
|
+
static nonWordEscapeCharacter = "W";
|
|
73
|
+
static nullCodePoint = 0;
|
|
74
|
+
static nullEscape = "\\0";
|
|
75
|
+
static oneRepetition = 1n;
|
|
76
|
+
static openBrace = "{";
|
|
77
|
+
static openBracket = "[";
|
|
78
|
+
static openParenthesis = "(";
|
|
79
|
+
static operandsParameterName = "operands";
|
|
80
|
+
static patternOutsideInput = "The pattern span must remain inside the complete regular-expression input.";
|
|
81
|
+
static patternReaderMustStartAtRegionStart = "The pattern reader must be positioned at the start of its bounded source region.";
|
|
82
|
+
static plus = "+";
|
|
83
|
+
static question = "?";
|
|
84
|
+
static scriptProperty = "Script";
|
|
85
|
+
static scriptPropertyAlias = "sc";
|
|
86
|
+
static scriptExtensionsProperty = "Script_Extensions";
|
|
87
|
+
static scriptExtensionsPropertyAlias = "scx";
|
|
88
|
+
static slash = "/";
|
|
89
|
+
static stickyFlag = "y";
|
|
90
|
+
static stringsParameterName = "strings";
|
|
91
|
+
static syntaxCharacters = "^$\\.*+?()[]{}|";
|
|
92
|
+
static tabCodePoint = 0x09;
|
|
93
|
+
static tabEscape = "\\t";
|
|
94
|
+
static tabEscapeCharacter = "t";
|
|
95
|
+
static underscore = "_";
|
|
96
|
+
static underscoreCodePoint = 0x5F;
|
|
97
|
+
static unicodeEscapeCharacter = "u";
|
|
98
|
+
static unicodeEscapePrefix = "\\u";
|
|
99
|
+
static unicodeFlag = "u";
|
|
100
|
+
static unicodePropertyEscapeCharacter = "p";
|
|
101
|
+
static unicodeSetsFlag = "v";
|
|
102
|
+
static verticalTabCodePoint = 0x0B;
|
|
103
|
+
static verticalTabEscape = "\\v";
|
|
104
|
+
static verticalTabEscapeCharacter = "v";
|
|
105
|
+
static whitespaceEscape = "\\s";
|
|
106
|
+
static whitespaceEscapeCharacter = "s";
|
|
107
|
+
static wordBoundary = "\\b";
|
|
108
|
+
static wordEscape = "\\w";
|
|
109
|
+
static wordEscapeCharacter = "w";
|
|
110
|
+
static zeroRepetitions = 0n;
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=resources.js.map
|
package/resources.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resources.js","sourceRoot":"","sources":["../../../src/parsers/noldova.context.parsers.regex/src/resources.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
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 { RegexCharacterNode } from "../../models/nodes/regex-character.node.js";
|
|
10
|
+
export class CharacterLexer {
|
|
11
|
+
lex(lexer, character) {
|
|
12
|
+
const startOffset = lexer.reader.currentOffset;
|
|
13
|
+
let value = character;
|
|
14
|
+
if ((lexer.unicodeMode || lexer.isInGroupName) && UnicodeCodePointService.isLeadingSurrogate(character.charCodeAt(0))) {
|
|
15
|
+
const trailingCharacter = lexer.reader.peekCodeUnit(1);
|
|
16
|
+
if (UnicodeCodePointService.isTrailingSurrogate(trailingCharacter.charCodeAt(0)))
|
|
17
|
+
value += trailingCharacter;
|
|
18
|
+
}
|
|
19
|
+
lexer.reader.advance(value.length);
|
|
20
|
+
const span = lexer.reader.createSpan(startOffset, lexer.reader.currentOffset - startOffset);
|
|
21
|
+
return new RegexCharacterNode(value, span);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=character.lexer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"character.lexer.js","sourceRoot":"","sources":["../../../../../src/parsers/noldova.context.parsers.regex/src/services/lexers/character.lexer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAGhF,MAAM,OAAO,cAAc;IAClB,GAAG,CAAC,KAAiB,EAAE,SAAiB;QAC7C,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC;QAC/C,IAAI,KAAK,GAAG,SAAS,CAAC;QAEtB,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,aAAa,CAAC,IAAI,uBAAuB,CAAC,kBAAkB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACtH,MAAM,iBAAiB,GAAG,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACvD,IAAI,uBAAuB,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBAC9E,KAAK,IAAI,iBAAiB,CAAC;QAC/B,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAEnC,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,aAAa,GAAG,WAAW,CAAC,CAAC;QAC5F,OAAO,IAAI,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC;CACF"}
|
|
@@ -0,0 +1,56 @@
|
|
|
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 "@noldova/context.text";
|
|
10
|
+
import { RegexDiagnosticTemplates } from "../../models/diagnostics/regex-diagnostic-templates.js";
|
|
11
|
+
import { RegexHexEscapeNode } from "../../models/nodes/escapes/regex-hex-escape.node.js";
|
|
12
|
+
import { RegexIdentityEscapeNode } from "../../models/nodes/escapes/regex-identity-escape.node.js";
|
|
13
|
+
import { RegexUnicodeEscapeNode } from "../../models/nodes/escapes/regex-unicode-escape.node.js";
|
|
14
|
+
import { RegexUnknownNode } from "../../models/nodes/regex-unknown.node.js";
|
|
15
|
+
import { Resources } from "../../resources.js";
|
|
16
|
+
import { RegexUnicodeEscapeReader } from "../readers/regex-unicode-escape.reader.js";
|
|
17
|
+
import { RegexIdentityEscapeValidator } from "../validators/regex-identity-escape.validator.js";
|
|
18
|
+
export class CodePointEscapeLexer {
|
|
19
|
+
static HEXADECIMAL_DIGIT_COUNT = 2;
|
|
20
|
+
static HEXADECIMAL_RADIX = 16;
|
|
21
|
+
identityEscapeValidator = new RegexIdentityEscapeValidator();
|
|
22
|
+
unicodeEscapeReader = new RegexUnicodeEscapeReader();
|
|
23
|
+
lexHexadecimal(lexer, startOffset) {
|
|
24
|
+
const continuationOffset = lexer.reader.currentOffset;
|
|
25
|
+
const digitStartOffset = continuationOffset;
|
|
26
|
+
for (let index = 0; index < CodePointEscapeLexer.HEXADECIMAL_DIGIT_COUNT; index++) {
|
|
27
|
+
if (!String.isAsciiHexDigit(lexer.reader.peekCodeUnit()))
|
|
28
|
+
return this.createFallback(lexer, startOffset, continuationOffset, Resources.hexEscapeCharacter);
|
|
29
|
+
lexer.reader.advance();
|
|
30
|
+
}
|
|
31
|
+
const span = lexer.reader.createSpan(startOffset, lexer.reader.currentOffset - startOffset);
|
|
32
|
+
const digits = lexer.reader.source.getText(digitStartOffset, lexer.reader.currentOffset - digitStartOffset);
|
|
33
|
+
return new RegexHexEscapeNode(lexer.reader.source.getText(span), Number.parseInt(digits, CodePointEscapeLexer.HEXADECIMAL_RADIX), span);
|
|
34
|
+
}
|
|
35
|
+
lexUnicode(lexer, startOffset) {
|
|
36
|
+
const continuationOffset = lexer.reader.currentOffset;
|
|
37
|
+
lexer.reader.seek(startOffset);
|
|
38
|
+
const escape = this.unicodeEscapeReader.read(lexer.reader, lexer.unicodeMode || lexer.isInGroupName);
|
|
39
|
+
if (!Object.isUndefined(escape)) {
|
|
40
|
+
const span = lexer.reader.createSpan(startOffset, lexer.reader.currentOffset - startOffset);
|
|
41
|
+
return new RegexUnicodeEscapeNode(escape.value, escape.codePoint, span);
|
|
42
|
+
}
|
|
43
|
+
return this.createFallback(lexer, startOffset, continuationOffset, Resources.unicodeEscapeCharacter);
|
|
44
|
+
}
|
|
45
|
+
createFallback(lexer, startOffset, continuationOffset, character) {
|
|
46
|
+
if (this.identityEscapeValidator.isValid(lexer, character)) {
|
|
47
|
+
lexer.reader.seek(continuationOffset);
|
|
48
|
+
const span = lexer.reader.createSpan(startOffset, continuationOffset - startOffset);
|
|
49
|
+
return new RegexIdentityEscapeNode(lexer.reader.source.getText(span), character.charCodeAt(0), span);
|
|
50
|
+
}
|
|
51
|
+
const span = lexer.reader.createSpan(startOffset, lexer.reader.currentOffset - startOffset);
|
|
52
|
+
lexer.diagnosticCollector.add(RegexDiagnosticTemplates.CTX1014, span);
|
|
53
|
+
return new RegexUnknownNode(lexer.reader.source.getText(span), span);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=code-point-escape.lexer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code-point-escape.lexer.js","sourceRoot":"","sources":["../../../../../src/parsers/noldova.context.parsers.regex/src/services/lexers/code-point-escape.lexer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
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 "@noldova/context.text";
|
|
10
|
+
import { RegexDiagnosticTemplates } from "../../models/diagnostics/regex-diagnostic-templates.js";
|
|
11
|
+
import { RegexClassControlEscapeNode } from "../../models/nodes/escapes/regex-class-control-escape.node.js";
|
|
12
|
+
import { RegexControlLetterEscapeNode } from "../../models/nodes/escapes/regex-control-letter-escape.node.js";
|
|
13
|
+
import { RegexCharacterNode } from "../../models/nodes/regex-character.node.js";
|
|
14
|
+
import { RegexUnknownNode } from "../../models/nodes/regex-unknown.node.js";
|
|
15
|
+
import { Resources } from "../../resources.js";
|
|
16
|
+
export class ControlEscapeLexer {
|
|
17
|
+
static CONTROL_CHARACTER_MODULUS = 32;
|
|
18
|
+
lex(lexer, startOffset) {
|
|
19
|
+
const character = lexer.reader.peekCodeUnit();
|
|
20
|
+
if (String.isAsciiLetter(character)) {
|
|
21
|
+
lexer.reader.advance();
|
|
22
|
+
return new RegexControlLetterEscapeNode(lexer.reader.source.getText(startOffset, lexer.reader.currentOffset - startOffset), character.charCodeAt(0) % ControlEscapeLexer.CONTROL_CHARACTER_MODULUS, lexer.reader.createSpan(startOffset, lexer.reader.currentOffset - startOffset));
|
|
23
|
+
}
|
|
24
|
+
const isClassControl = lexer.isInCharacterClass
|
|
25
|
+
&& !lexer.unicodeMode
|
|
26
|
+
&& (String.isAsciiDigit(character) || character === Resources.underscore);
|
|
27
|
+
if (isClassControl) {
|
|
28
|
+
lexer.reader.advance();
|
|
29
|
+
return new RegexClassControlEscapeNode(lexer.reader.source.getText(startOffset, lexer.reader.currentOffset - startOffset), character.charCodeAt(0) % ControlEscapeLexer.CONTROL_CHARACTER_MODULUS, lexer.reader.createSpan(startOffset, lexer.reader.currentOffset - startOffset));
|
|
30
|
+
}
|
|
31
|
+
if (!lexer.unicodeMode) {
|
|
32
|
+
lexer.reader.seek(startOffset + Resources.backslash.length);
|
|
33
|
+
return new RegexCharacterNode(Resources.backslash, lexer.reader.createSpan(startOffset, Resources.backslash.length));
|
|
34
|
+
}
|
|
35
|
+
const span = lexer.reader.createSpan(startOffset, lexer.reader.currentOffset - startOffset);
|
|
36
|
+
lexer.diagnosticCollector.add(RegexDiagnosticTemplates.CTX1014, span);
|
|
37
|
+
return new RegexUnknownNode(lexer.reader.source.getText(span), span);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=control-escape.lexer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"control-escape.lexer.js","sourceRoot":"","sources":["../../../../../src/parsers/noldova.context.parsers.regex/src/services/lexers/control-escape.lexer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,uBAAuB,CAAC;AAC/B,OAAO,uBAAuB,CAAC;AAI/B,OAAO,EAAE,wBAAwB,EAAE,MAAM,wDAAwD,CAAC;AAClG,OAAO,EAAE,2BAA2B,EAAE,MAAM,+DAA+D,CAAC;AAC5G,OAAO,EAAE,4BAA4B,EAAE,MAAM,gEAAgE,CAAC;AAC9G,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG/C,MAAM,OAAO,kBAAkB;IACrB,MAAM,CAAU,yBAAyB,GAAW,EAAE,CAAC;IAExD,GAAG,CAAC,KAAiB,EAAE,WAAmB;QAC/C,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;QAC9C,IAAI,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC;YACpC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACvB,OAAO,IAAI,4BAA4B,CACrC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,aAAa,GAAG,WAAW,CAAC,EAClF,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,yBAAyB,EACtE,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,aAAa,GAAG,WAAW,CAAC,CAAC,CAAC;QACpF,CAAC;QAED,MAAM,cAAc,GAAG,KAAK,CAAC,kBAAkB;eAC1C,CAAC,KAAK,CAAC,WAAW;eAClB,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,SAAS,KAAK,SAAS,CAAC,UAAU,CAAC,CAAC;QAC5E,IAAI,cAAc,EAAE,CAAC;YACnB,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACvB,OAAO,IAAI,2BAA2B,CACpC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,aAAa,GAAG,WAAW,CAAC,EAClF,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,yBAAyB,EACtE,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,aAAa,GAAG,WAAW,CAAC,CAAC,CAAC;QACpF,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YACvB,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC5D,OAAO,IAAI,kBAAkB,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QACvH,CAAC;QAED,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,aAAa,GAAG,WAAW,CAAC,CAAC;QAC5F,KAAK,CAAC,mBAAmB,CAAC,GAAG,CAAC,wBAAwB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACtE,OAAO,IAAI,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IACvE,CAAC;CACF"}
|