@jay-framework/compiler-jay-html 0.6.10 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.cts +2 -1
- package/dist/index.js +1063 -284
- package/docs/jay-html-docs.md +136 -0
- package/package.json +8 -8
- package/readme.md +52 -1
- package/test/fixtures/recursive-html/README.md +142 -0
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { RenderFragment, Imports, Import, JayImportedType, isObjectType as isObjectType$1, isImportedType, JayUnknown, WithValidations, isArrayType as isArrayType$1, isAtomicType, isEnumType, hasRefs, GenerateTarget, JayComponentType, JayTypeAlias, mkRefsTree, mkRef, equalJayTypes, JayUnionType, JayHTMLType, getModeFileExtension, RuntimeMode, ImportsFor, nestRefs, mergeRefsTrees, JayObjectType, JayArrayType,
|
|
1
|
+
import { RenderFragment, Imports, Import, JayImportedType, isObjectType as isObjectType$1, isImportedType, isRecursiveType, JayUnknown, WithValidations, isArrayType as isArrayType$1, isAtomicType, isPromiseType, isEnumType, hasRefs, GenerateTarget, JayComponentType, JayTypeAlias, mkRefsTree, mkRef, equalJayTypes, JayUnionType, JayHTMLType, getModeFileExtension, RuntimeMode, ImportsFor, nestRefs, JayErrorType, mergeRefsTrees, JayObjectType, JayArrayType, JayPromiseType, JAY_CONTRACT_EXTENSION, JayRecursiveType, JayEnumType, resolvePrimitiveType, SourceFileFormat } from "@jay-framework/compiler-shared";
|
|
2
2
|
import path from "path";
|
|
3
3
|
import fs from "fs/promises";
|
|
4
4
|
import { analyzeExportedTypes } from "@jay-framework/compiler-analyze-exported-types";
|
|
@@ -6008,38 +6008,62 @@ function peg$parse(input, options) {
|
|
|
6008
6008
|
}
|
|
6009
6009
|
}, peg$c50 = function(cond) {
|
|
6010
6010
|
return cond.map((_) => `${vars.currentVar} => ${_}`);
|
|
6011
|
-
}, peg$c51 = function(
|
|
6011
|
+
}, peg$c51 = "||", peg$c52 = peg$literalExpectation("||", false), peg$c53 = function(head, tail) {
|
|
6012
|
+
if (tail.length === 0)
|
|
6013
|
+
return head;
|
|
6014
|
+
return tail.reduce((acc, curr) => {
|
|
6015
|
+
const right = curr[3];
|
|
6016
|
+
return RenderFragment2.merge(
|
|
6017
|
+
acc.map((_) => `(${_})`),
|
|
6018
|
+
right.map((_) => `(${_})`),
|
|
6019
|
+
" || "
|
|
6020
|
+
);
|
|
6021
|
+
}, head);
|
|
6022
|
+
}, peg$c54 = "&&", peg$c55 = peg$literalExpectation("&&", false), peg$c56 = function(head, tail) {
|
|
6023
|
+
if (tail.length === 0)
|
|
6024
|
+
return head;
|
|
6025
|
+
return tail.reduce((acc, curr) => {
|
|
6026
|
+
const right = curr[3];
|
|
6027
|
+
return RenderFragment2.merge(
|
|
6028
|
+
acc.map((_) => `(${_})`),
|
|
6029
|
+
right.map((_) => `(${_})`),
|
|
6030
|
+
" && "
|
|
6031
|
+
);
|
|
6032
|
+
}, head);
|
|
6033
|
+
}, peg$c57 = function(cond) {
|
|
6034
|
+
return cond;
|
|
6035
|
+
}, peg$c58 = function(not, head) {
|
|
6012
6036
|
return not ? head.render().map((_) => `!${_}`) : head.render();
|
|
6013
|
-
}, peg$
|
|
6037
|
+
}, peg$c59 = function(head, oper, val) {
|
|
6014
6038
|
if (oper.length === 2)
|
|
6015
6039
|
oper = oper + "=";
|
|
6016
6040
|
return head.render().map((_) => `${_} ${oper} ${head.resolvedType.name}.${val}`);
|
|
6017
|
-
}, peg$
|
|
6041
|
+
}, peg$c60 = ".", peg$c61 = peg$literalExpectation(".", false), peg$c62 = function() {
|
|
6018
6042
|
return vars.resolveAccessor(["."]);
|
|
6019
|
-
}, peg$
|
|
6043
|
+
}, peg$c63 = function(head, tail) {
|
|
6020
6044
|
let terms = [head, ...tail.map((_) => _[3])];
|
|
6021
6045
|
let accessor = vars.resolveAccessor(terms);
|
|
6022
6046
|
return accessor;
|
|
6023
|
-
}, peg$
|
|
6047
|
+
}, peg$c64 = peg$otherExpectation("integer"), peg$c65 = /^[0-9]/, peg$c66 = peg$classExpectation([["0", "9"]], false, false), peg$c67 = peg$otherExpectation("whitespace"), peg$c68 = /^[ \t\n\r]/, peg$c69 = peg$classExpectation([" ", " ", "\n", "\r"], false, false), peg$c70 = /^[^{} \t\n\r]/, peg$c71 = peg$classExpectation(["{", "}", " ", " ", "\n", "\r"], true, false), peg$c72 = function() {
|
|
6024
6048
|
return text2();
|
|
6025
|
-
}, peg$
|
|
6049
|
+
}, peg$c73 = "!", peg$c74 = peg$literalExpectation("!", false), peg$c75 = "===", peg$c76 = peg$literalExpectation("===", false), peg$c77 = "!==", peg$c78 = peg$literalExpectation("!==", false), peg$c79 = "==", peg$c80 = peg$literalExpectation("==", false), peg$c81 = "!=", peg$c82 = peg$literalExpectation("!=", false), peg$c83 = function(name) {
|
|
6026
6050
|
return text2();
|
|
6027
|
-
}, peg$
|
|
6051
|
+
}, peg$c84 = peg$otherExpectation("identifier"), peg$c85 = function(head, tail) {
|
|
6028
6052
|
return {
|
|
6029
6053
|
type: "Identifier",
|
|
6030
6054
|
name: head + tail.join("")
|
|
6031
6055
|
};
|
|
6032
|
-
}, peg$
|
|
6056
|
+
}, peg$c86 = "$", peg$c87 = peg$literalExpectation("$", false), peg$c88 = "_", peg$c89 = peg$literalExpectation("_", false), peg$c90 = "\\", peg$c91 = peg$literalExpectation("\\", false), peg$c92 = function(sequence) {
|
|
6033
6057
|
return sequence;
|
|
6034
|
-
}, peg$
|
|
6058
|
+
}, peg$c93 = "", peg$c94 = peg$literalExpectation("", false), peg$c95 = "", peg$c96 = peg$literalExpectation("", false), peg$c97 = "u", peg$c98 = peg$literalExpectation("u", false), peg$c99 = function(digits) {
|
|
6035
6059
|
return String.fromCharCode(parseInt(digits, 16));
|
|
6036
|
-
}, peg$
|
|
6060
|
+
}, peg$c100 = function() {
|
|
6037
6061
|
return { type: "Literal", value: null };
|
|
6038
|
-
}, peg$
|
|
6062
|
+
}, peg$c101 = function() {
|
|
6039
6063
|
return { type: "Literal", value: true };
|
|
6040
|
-
}, peg$
|
|
6064
|
+
}, peg$c102 = function() {
|
|
6041
6065
|
return { type: "Literal", value: false };
|
|
6042
|
-
}, peg$c96 = /^[A-Z\xC0-\xD6\xD8-\xDE\u0100\u0102\u0104\u0106\u0108\u010A\u010C\u010E\u0110\u0112\u0114\u0116\u0118\u011A\u011C\u011E\u0120\u0122\u0124\u0126\u0128\u012A\u012C\u012E\u0130\u0132\u0134\u0136\u0139\u013B\u013D\u013F\u0141\u0143\u0145\u0147\u014A\u014C\u014E\u0150\u0152\u0154\u0156\u0158\u015A\u015C\u015E\u0160\u0162\u0164\u0166\u0168\u016A\u016C\u016E\u0170\u0172\u0174\u0176\u0178-\u0179\u017B\u017D\u0181-\u0182\u0184\u0186-\u0187\u0189-\u018B\u018E-\u0191\u0193-\u0194\u0196-\u0198\u019C-\u019D\u019F-\u01A0\u01A2\u01A4\u01A6-\u01A7\u01A9\u01AC\u01AE-\u01AF\u01B1-\u01B3\u01B5\u01B7-\u01B8\u01BC\u01C4\u01C7\u01CA\u01CD\u01CF\u01D1\u01D3\u01D5\u01D7\u01D9\u01DB\u01DE\u01E0\u01E2\u01E4\u01E6\u01E8\u01EA\u01EC\u01EE\u01F1\u01F4\u01F6-\u01F8\u01FA\u01FC\u01FE\u0200\u0202\u0204\u0206\u0208\u020A\u020C\u020E\u0210\u0212\u0214\u0216\u0218\u021A\u021C\u021E\u0220\u0222\u0224\u0226\u0228\u022A\u022C\u022E\u0230\u0232\u023A-\u023B\u023D-\u023E\u0241\u0243-\u0246\u0248\u024A\u024C\u024E\u0370\u0372\u0376\u037F\u0386\u0388-\u038A\u038C\u038E-\u038F\u0391-\u03A1\u03A3-\u03AB\u03CF\u03D2-\u03D4\u03D8\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA\u03EC\u03EE\u03F4\u03F7\u03F9-\u03FA\u03FD-\u042F\u0460\u0462\u0464\u0466\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476\u0478\u047A\u047C\u047E\u0480\u048A\u048C\u048E\u0490\u0492\u0494\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2\u04B4\u04B6\u04B8\u04BA\u04BC\u04BE\u04C0-\u04C1\u04C3\u04C5\u04C7\u04C9\u04CB\u04CD\u04D0\u04D2\u04D4\u04D6\u04D8\u04DA\u04DC\u04DE\u04E0\u04E2\u04E4\u04E6\u04E8\u04EA\u04EC\u04EE\u04F0\u04F2\u04F4\u04F6\u04F8\u04FA\u04FC\u04FE\u0500\u0502\u0504\u0506\u0508\u050A\u050C\u050E\u0510\u0512\u0514\u0516\u0518\u051A\u051C\u051E\u0520\u0522\u0524\u0526\u0528\u052A\u052C\u052E\u0531-\u0556\u10A0-\u10C5\u10C7\u10CD\u13A0-\u13F5\u1C90-\u1CBA\u1CBD-\u1CBF\u1E00\u1E02\u1E04\u1E06\u1E08\u1E0A\u1E0C\u1E0E\u1E10\u1E12\u1E14\u1E16\u1E18\u1E1A\u1E1C\u1E1E\u1E20\u1E22\u1E24\u1E26\u1E28\u1E2A\u1E2C\u1E2E\u1E30\u1E32\u1E34\u1E36\u1E38\u1E3A\u1E3C\u1E3E\u1E40\u1E42\u1E44\u1E46\u1E48\u1E4A\u1E4C\u1E4E\u1E50\u1E52\u1E54\u1E56\u1E58\u1E5A\u1E5C\u1E5E\u1E60\u1E62\u1E64\u1E66\u1E68\u1E6A\u1E6C\u1E6E\u1E70\u1E72\u1E74\u1E76\u1E78\u1E7A\u1E7C\u1E7E\u1E80\u1E82\u1E84\u1E86\u1E88\u1E8A\u1E8C\u1E8E\u1E90\u1E92\u1E94\u1E9E\u1EA0\u1EA2\u1EA4\u1EA6\u1EA8\u1EAA\u1EAC\u1EAE\u1EB0\u1EB2\u1EB4\u1EB6\u1EB8\u1EBA\u1EBC\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1EC8\u1ECA\u1ECC\u1ECE\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EDA\u1EDC\u1EDE\u1EE0\u1EE2\u1EE4\u1EE6\u1EE8\u1EEA\u1EEC\u1EEE\u1EF0\u1EF2\u1EF4\u1EF6\u1EF8\u1EFA\u1EFC\u1EFE\u1F08-\u1F0F\u1F18-\u1F1D\u1F28-\u1F2F\u1F38-\u1F3F\u1F48-\u1F4D\u1F59\u1F5B\u1F5D\u1F5F\u1F68-\u1F6F\u1FB8-\u1FBB\u1FC8-\u1FCB\u1FD8-\u1FDB\u1FE8-\u1FEC\u1FF8-\u1FFB\u2102\u2107\u210B-\u210D\u2110-\u2112\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u2130-\u2133\u213E-\u213F\u2145\u2183\u2C00-\u2C2E\u2C60\u2C62-\u2C64\u2C67\u2C69\u2C6B\u2C6D-\u2C70\u2C72\u2C75\u2C7E-\u2C80\u2C82\u2C84\u2C86\u2C88\u2C8A\u2C8C\u2C8E\u2C90\u2C92\u2C94\u2C96\u2C98\u2C9A\u2C9C\u2C9E\u2CA0\u2CA2\u2CA4\u2CA6\u2CA8\u2CAA\u2CAC\u2CAE\u2CB0\u2CB2\u2CB4\u2CB6\u2CB8\u2CBA\u2CBC\u2CBE\u2CC0\u2CC2\u2CC4\u2CC6\u2CC8\u2CCA\u2CCC\u2CCE\u2CD0\u2CD2\u2CD4\u2CD6\u2CD8\u2CDA\u2CDC\u2CDE\u2CE0\u2CE2\u2CEB\u2CED\u2CF2\uA640\uA642\uA644\uA646\uA648\uA64A\uA64C\uA64E\uA650\uA652\uA654\uA656\uA658\uA65A\uA65C\uA65E\uA660\uA662\uA664\uA666\uA668\uA66A\uA66C\uA680\uA682\uA684\uA686\uA688\uA68A\uA68C\uA68E\uA690\uA692\uA694\uA696\uA698\uA69A\uA722\uA724\uA726\uA728\uA72A\uA72C\uA72E\uA732\uA734\uA736\uA738\uA73A\uA73C\uA73E\uA740\uA742\uA744\uA746\uA748\uA74A\uA74C\uA74E\uA750\uA752\uA754\uA756\uA758\uA75A\uA75C\uA75E\uA760\uA762\uA764\uA766\uA768\uA76A\uA76C\uA76E\uA779\uA77B\uA77D-\uA77E\uA780\uA782\uA784\uA786\uA78B\uA78D\uA790\uA792\uA796\uA798\uA79A\uA79C\uA79E\uA7A0\uA7A2\uA7A4\uA7A6\uA7A8\uA7AA-\uA7AE\uA7B0-\uA7B4\uA7B6\uA7B8\uFF21-\uFF3A]/, peg$c97 = peg$classExpectation([["A", "Z"], ["À", "Ö"], ["Ø", "Þ"], "Ā", "Ă", "Ą", "Ć", "Ĉ", "Ċ", "Č", "Ď", "Đ", "Ē", "Ĕ", "Ė", "Ę", "Ě", "Ĝ", "Ğ", "Ġ", "Ģ", "Ĥ", "Ħ", "Ĩ", "Ī", "Ĭ", "Į", "İ", "IJ", "Ĵ", "Ķ", "Ĺ", "Ļ", "Ľ", "Ŀ", "Ł", "Ń", "Ņ", "Ň", "Ŋ", "Ō", "Ŏ", "Ő", "Œ", "Ŕ", "Ŗ", "Ř", "Ś", "Ŝ", "Ş", "Š", "Ţ", "Ť", "Ŧ", "Ũ", "Ū", "Ŭ", "Ů", "Ű", "Ų", "Ŵ", "Ŷ", ["Ÿ", "Ź"], "Ż", "Ž", ["Ɓ", "Ƃ"], "Ƅ", ["Ɔ", "Ƈ"], ["Ɖ", "Ƌ"], ["Ǝ", "Ƒ"], ["Ɠ", "Ɣ"], ["Ɩ", "Ƙ"], ["Ɯ", "Ɲ"], ["Ɵ", "Ơ"], "Ƣ", "Ƥ", ["Ʀ", "Ƨ"], "Ʃ", "Ƭ", ["Ʈ", "Ư"], ["Ʊ", "Ƴ"], "Ƶ", ["Ʒ", "Ƹ"], "Ƽ", "DŽ", "LJ", "NJ", "Ǎ", "Ǐ", "Ǒ", "Ǔ", "Ǖ", "Ǘ", "Ǚ", "Ǜ", "Ǟ", "Ǡ", "Ǣ", "Ǥ", "Ǧ", "Ǩ", "Ǫ", "Ǭ", "Ǯ", "DZ", "Ǵ", ["Ƕ", "Ǹ"], "Ǻ", "Ǽ", "Ǿ", "Ȁ", "Ȃ", "Ȅ", "Ȇ", "Ȉ", "Ȋ", "Ȍ", "Ȏ", "Ȑ", "Ȓ", "Ȕ", "Ȗ", "Ș", "Ț", "Ȝ", "Ȟ", "Ƞ", "Ȣ", "Ȥ", "Ȧ", "Ȩ", "Ȫ", "Ȭ", "Ȯ", "Ȱ", "Ȳ", ["Ⱥ", "Ȼ"], ["Ƚ", "Ⱦ"], "Ɂ", ["Ƀ", "Ɇ"], "Ɉ", "Ɋ", "Ɍ", "Ɏ", "Ͱ", "Ͳ", "Ͷ", "Ϳ", "Ά", ["Έ", "Ί"], "Ό", ["Ύ", "Ώ"], ["Α", "Ρ"], ["Σ", "Ϋ"], "Ϗ", ["ϒ", "ϔ"], "Ϙ", "Ϛ", "Ϝ", "Ϟ", "Ϡ", "Ϣ", "Ϥ", "Ϧ", "Ϩ", "Ϫ", "Ϭ", "Ϯ", "ϴ", "Ϸ", ["Ϲ", "Ϻ"], ["Ͻ", "Я"], "Ѡ", "Ѣ", "Ѥ", "Ѧ", "Ѩ", "Ѫ", "Ѭ", "Ѯ", "Ѱ", "Ѳ", "Ѵ", "Ѷ", "Ѹ", "Ѻ", "Ѽ", "Ѿ", "Ҁ", "Ҋ", "Ҍ", "Ҏ", "Ґ", "Ғ", "Ҕ", "Җ", "Ҙ", "Қ", "Ҝ", "Ҟ", "Ҡ", "Ң", "Ҥ", "Ҧ", "Ҩ", "Ҫ", "Ҭ", "Ү", "Ұ", "Ҳ", "Ҵ", "Ҷ", "Ҹ", "Һ", "Ҽ", "Ҿ", ["Ӏ", "Ӂ"], "Ӄ", "Ӆ", "Ӈ", "Ӊ", "Ӌ", "Ӎ", "Ӑ", "Ӓ", "Ӕ", "Ӗ", "Ә", "Ӛ", "Ӝ", "Ӟ", "Ӡ", "Ӣ", "Ӥ", "Ӧ", "Ө", "Ӫ", "Ӭ", "Ӯ", "Ӱ", "Ӳ", "Ӵ", "Ӷ", "Ӹ", "Ӻ", "Ӽ", "Ӿ", "Ԁ", "Ԃ", "Ԅ", "Ԇ", "Ԉ", "Ԋ", "Ԍ", "Ԏ", "Ԑ", "Ԓ", "Ԕ", "Ԗ", "Ԙ", "Ԛ", "Ԝ", "Ԟ", "Ԡ", "Ԣ", "Ԥ", "Ԧ", "Ԩ", "Ԫ", "Ԭ", "Ԯ", ["Ա", "Ֆ"], ["Ⴀ", "Ⴥ"], "Ⴧ", "Ⴭ", ["Ꭰ", "Ᏽ"], ["Ა", "Ჺ"], ["Ჽ", "Ჿ"], "Ḁ", "Ḃ", "Ḅ", "Ḇ", "Ḉ", "Ḋ", "Ḍ", "Ḏ", "Ḑ", "Ḓ", "Ḕ", "Ḗ", "Ḙ", "Ḛ", "Ḝ", "Ḟ", "Ḡ", "Ḣ", "Ḥ", "Ḧ", "Ḩ", "Ḫ", "Ḭ", "Ḯ", "Ḱ", "Ḳ", "Ḵ", "Ḷ", "Ḹ", "Ḻ", "Ḽ", "Ḿ", "Ṁ", "Ṃ", "Ṅ", "Ṇ", "Ṉ", "Ṋ", "Ṍ", "Ṏ", "Ṑ", "Ṓ", "Ṕ", "Ṗ", "Ṙ", "Ṛ", "Ṝ", "Ṟ", "Ṡ", "Ṣ", "Ṥ", "Ṧ", "Ṩ", "Ṫ", "Ṭ", "Ṯ", "Ṱ", "Ṳ", "Ṵ", "Ṷ", "Ṹ", "Ṻ", "Ṽ", "Ṿ", "Ẁ", "Ẃ", "Ẅ", "Ẇ", "Ẉ", "Ẋ", "Ẍ", "Ẏ", "Ẑ", "Ẓ", "Ẕ", "ẞ", "Ạ", "Ả", "Ấ", "Ầ", "Ẩ", "Ẫ", "Ậ", "Ắ", "Ằ", "Ẳ", "Ẵ", "Ặ", "Ẹ", "Ẻ", "Ẽ", "Ế", "Ề", "Ể", "Ễ", "Ệ", "Ỉ", "Ị", "Ọ", "Ỏ", "Ố", "Ồ", "Ổ", "Ỗ", "Ộ", "Ớ", "Ờ", "Ở", "Ỡ", "Ợ", "Ụ", "Ủ", "Ứ", "Ừ", "Ử", "Ữ", "Ự", "Ỳ", "Ỵ", "Ỷ", "Ỹ", "Ỻ", "Ỽ", "Ỿ", ["Ἀ", "Ἇ"], ["Ἐ", "Ἕ"], ["Ἠ", "Ἧ"], ["Ἰ", "Ἷ"], ["Ὀ", "Ὅ"], "Ὑ", "Ὓ", "Ὕ", "Ὗ", ["Ὠ", "Ὧ"], ["Ᾰ", "Ά"], ["Ὲ", "Ή"], ["Ῐ", "Ί"], ["Ῠ", "Ῥ"], ["Ὸ", "Ώ"], "ℂ", "ℇ", ["ℋ", "ℍ"], ["ℐ", "ℒ"], "ℕ", ["ℙ", "ℝ"], "ℤ", "Ω", "ℨ", ["K", "ℭ"], ["ℰ", "ℳ"], ["ℾ", "ℿ"], "ⅅ", "Ↄ", ["Ⰰ", "Ⱞ"], "Ⱡ", ["Ɫ", "Ɽ"], "Ⱨ", "Ⱪ", "Ⱬ", ["Ɑ", "Ɒ"], "Ⱳ", "Ⱶ", ["Ȿ", "Ⲁ"], "Ⲃ", "Ⲅ", "Ⲇ", "Ⲉ", "Ⲋ", "Ⲍ", "Ⲏ", "Ⲑ", "Ⲓ", "Ⲕ", "Ⲗ", "Ⲙ", "Ⲛ", "Ⲝ", "Ⲟ", "Ⲡ", "Ⲣ", "Ⲥ", "Ⲧ", "Ⲩ", "Ⲫ", "Ⲭ", "Ⲯ", "Ⲱ", "Ⲳ", "Ⲵ", "Ⲷ", "Ⲹ", "Ⲻ", "Ⲽ", "Ⲿ", "Ⳁ", "Ⳃ", "Ⳅ", "Ⳇ", "Ⳉ", "Ⳋ", "Ⳍ", "Ⳏ", "Ⳑ", "Ⳓ", "Ⳕ", "Ⳗ", "Ⳙ", "Ⳛ", "Ⳝ", "Ⳟ", "Ⳡ", "Ⳣ", "Ⳬ", "Ⳮ", "Ⳳ", "Ꙁ", "Ꙃ", "Ꙅ", "Ꙇ", "Ꙉ", "Ꙋ", "Ꙍ", "Ꙏ", "Ꙑ", "Ꙓ", "Ꙕ", "Ꙗ", "Ꙙ", "Ꙛ", "Ꙝ", "Ꙟ", "Ꙡ", "Ꙣ", "Ꙥ", "Ꙧ", "Ꙩ", "Ꙫ", "Ꙭ", "Ꚁ", "Ꚃ", "Ꚅ", "Ꚇ", "Ꚉ", "Ꚋ", "Ꚍ", "Ꚏ", "Ꚑ", "Ꚓ", "Ꚕ", "Ꚗ", "Ꚙ", "Ꚛ", "Ꜣ", "Ꜥ", "Ꜧ", "Ꜩ", "Ꜫ", "Ꜭ", "Ꜯ", "Ꜳ", "Ꜵ", "Ꜷ", "Ꜹ", "Ꜻ", "Ꜽ", "Ꜿ", "Ꝁ", "Ꝃ", "Ꝅ", "Ꝇ", "Ꝉ", "Ꝋ", "Ꝍ", "Ꝏ", "Ꝑ", "Ꝓ", "Ꝕ", "Ꝗ", "Ꝙ", "Ꝛ", "Ꝝ", "Ꝟ", "Ꝡ", "Ꝣ", "Ꝥ", "Ꝧ", "Ꝩ", "Ꝫ", "Ꝭ", "Ꝯ", "Ꝺ", "Ꝼ", ["Ᵹ", "Ꝿ"], "Ꞁ", "Ꞃ", "Ꞅ", "Ꞇ", "Ꞌ", "Ɥ", "Ꞑ", "Ꞓ", "Ꞗ", "Ꞙ", "Ꞛ", "Ꞝ", "Ꞟ", "Ꞡ", "Ꞣ", "Ꞥ", "Ꞧ", "Ꞩ", ["Ɦ", "Ɪ"], ["Ʞ", "Ꞵ"], "Ꞷ", "Ꞹ", ["A", "Z"]], false, false), peg$c98 = /^[a-z\xB5\xDF-\xF6\xF8-\xFF\u0101\u0103\u0105\u0107\u0109\u010B\u010D\u010F\u0111\u0113\u0115\u0117\u0119\u011B\u011D\u011F\u0121\u0123\u0125\u0127\u0129\u012B\u012D\u012F\u0131\u0133\u0135\u0137-\u0138\u013A\u013C\u013E\u0140\u0142\u0144\u0146\u0148-\u0149\u014B\u014D\u014F\u0151\u0153\u0155\u0157\u0159\u015B\u015D\u015F\u0161\u0163\u0165\u0167\u0169\u016B\u016D\u016F\u0171\u0173\u0175\u0177\u017A\u017C\u017E-\u0180\u0183\u0185\u0188\u018C-\u018D\u0192\u0195\u0199-\u019B\u019E\u01A1\u01A3\u01A5\u01A8\u01AA-\u01AB\u01AD\u01B0\u01B4\u01B6\u01B9-\u01BA\u01BD-\u01BF\u01C6\u01C9\u01CC\u01CE\u01D0\u01D2\u01D4\u01D6\u01D8\u01DA\u01DC-\u01DD\u01DF\u01E1\u01E3\u01E5\u01E7\u01E9\u01EB\u01ED\u01EF-\u01F0\u01F3\u01F5\u01F9\u01FB\u01FD\u01FF\u0201\u0203\u0205\u0207\u0209\u020B\u020D\u020F\u0211\u0213\u0215\u0217\u0219\u021B\u021D\u021F\u0221\u0223\u0225\u0227\u0229\u022B\u022D\u022F\u0231\u0233-\u0239\u023C\u023F-\u0240\u0242\u0247\u0249\u024B\u024D\u024F-\u0293\u0295-\u02AF\u0371\u0373\u0377\u037B-\u037D\u0390\u03AC-\u03CE\u03D0-\u03D1\u03D5-\u03D7\u03D9\u03DB\u03DD\u03DF\u03E1\u03E3\u03E5\u03E7\u03E9\u03EB\u03ED\u03EF-\u03F3\u03F5\u03F8\u03FB-\u03FC\u0430-\u045F\u0461\u0463\u0465\u0467\u0469\u046B\u046D\u046F\u0471\u0473\u0475\u0477\u0479\u047B\u047D\u047F\u0481\u048B\u048D\u048F\u0491\u0493\u0495\u0497\u0499\u049B\u049D\u049F\u04A1\u04A3\u04A5\u04A7\u04A9\u04AB\u04AD\u04AF\u04B1\u04B3\u04B5\u04B7\u04B9\u04BB\u04BD\u04BF\u04C2\u04C4\u04C6\u04C8\u04CA\u04CC\u04CE-\u04CF\u04D1\u04D3\u04D5\u04D7\u04D9\u04DB\u04DD\u04DF\u04E1\u04E3\u04E5\u04E7\u04E9\u04EB\u04ED\u04EF\u04F1\u04F3\u04F5\u04F7\u04F9\u04FB\u04FD\u04FF\u0501\u0503\u0505\u0507\u0509\u050B\u050D\u050F\u0511\u0513\u0515\u0517\u0519\u051B\u051D\u051F\u0521\u0523\u0525\u0527\u0529\u052B\u052D\u052F\u0560-\u0588\u10D0-\u10FA\u10FD-\u10FF\u13F8-\u13FD\u1C80-\u1C88\u1D00-\u1D2B\u1D6B-\u1D77\u1D79-\u1D9A\u1E01\u1E03\u1E05\u1E07\u1E09\u1E0B\u1E0D\u1E0F\u1E11\u1E13\u1E15\u1E17\u1E19\u1E1B\u1E1D\u1E1F\u1E21\u1E23\u1E25\u1E27\u1E29\u1E2B\u1E2D\u1E2F\u1E31\u1E33\u1E35\u1E37\u1E39\u1E3B\u1E3D\u1E3F\u1E41\u1E43\u1E45\u1E47\u1E49\u1E4B\u1E4D\u1E4F\u1E51\u1E53\u1E55\u1E57\u1E59\u1E5B\u1E5D\u1E5F\u1E61\u1E63\u1E65\u1E67\u1E69\u1E6B\u1E6D\u1E6F\u1E71\u1E73\u1E75\u1E77\u1E79\u1E7B\u1E7D\u1E7F\u1E81\u1E83\u1E85\u1E87\u1E89\u1E8B\u1E8D\u1E8F\u1E91\u1E93\u1E95-\u1E9D\u1E9F\u1EA1\u1EA3\u1EA5\u1EA7\u1EA9\u1EAB\u1EAD\u1EAF\u1EB1\u1EB3\u1EB5\u1EB7\u1EB9\u1EBB\u1EBD\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1EC9\u1ECB\u1ECD\u1ECF\u1ED1\u1ED3\u1ED5\u1ED7\u1ED9\u1EDB\u1EDD\u1EDF\u1EE1\u1EE3\u1EE5\u1EE7\u1EE9\u1EEB\u1EED\u1EEF\u1EF1\u1EF3\u1EF5\u1EF7\u1EF9\u1EFB\u1EFD\u1EFF-\u1F07\u1F10-\u1F15\u1F20-\u1F27\u1F30-\u1F37\u1F40-\u1F45\u1F50-\u1F57\u1F60-\u1F67\u1F70-\u1F7D\u1F80-\u1F87\u1F90-\u1F97\u1FA0-\u1FA7\u1FB0-\u1FB4\u1FB6-\u1FB7\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FC7\u1FD0-\u1FD3\u1FD6-\u1FD7\u1FE0-\u1FE7\u1FF2-\u1FF4\u1FF6-\u1FF7\u210A\u210E-\u210F\u2113\u212F\u2134\u2139\u213C-\u213D\u2146-\u2149\u214E\u2184\u2C30-\u2C5E\u2C61\u2C65-\u2C66\u2C68\u2C6A\u2C6C\u2C71\u2C73-\u2C74\u2C76-\u2C7B\u2C81\u2C83\u2C85\u2C87\u2C89\u2C8B\u2C8D\u2C8F\u2C91\u2C93\u2C95\u2C97\u2C99\u2C9B\u2C9D\u2C9F\u2CA1\u2CA3\u2CA5\u2CA7\u2CA9\u2CAB\u2CAD\u2CAF\u2CB1\u2CB3\u2CB5\u2CB7\u2CB9\u2CBB\u2CBD\u2CBF\u2CC1\u2CC3\u2CC5\u2CC7\u2CC9\u2CCB\u2CCD\u2CCF\u2CD1\u2CD3\u2CD5\u2CD7\u2CD9\u2CDB\u2CDD\u2CDF\u2CE1\u2CE3-\u2CE4\u2CEC\u2CEE\u2CF3\u2D00-\u2D25\u2D27\u2D2D\uA641\uA643\uA645\uA647\uA649\uA64B\uA64D\uA64F\uA651\uA653\uA655\uA657\uA659\uA65B\uA65D\uA65F\uA661\uA663\uA665\uA667\uA669\uA66B\uA66D\uA681\uA683\uA685\uA687\uA689\uA68B\uA68D\uA68F\uA691\uA693\uA695\uA697\uA699\uA69B\uA723\uA725\uA727\uA729\uA72B\uA72D\uA72F-\uA731\uA733\uA735\uA737\uA739\uA73B\uA73D\uA73F\uA741\uA743\uA745\uA747\uA749\uA74B\uA74D\uA74F\uA751\uA753\uA755\uA757\uA759\uA75B\uA75D\uA75F\uA761\uA763\uA765\uA767\uA769\uA76B\uA76D\uA76F\uA771-\uA778\uA77A\uA77C\uA77F\uA781\uA783\uA785\uA787\uA78C\uA78E\uA791\uA793-\uA795\uA797\uA799\uA79B\uA79D\uA79F\uA7A1\uA7A3\uA7A5\uA7A7\uA7A9\uA7AF\uA7B5\uA7B7\uA7B9\uA7FA\uAB30-\uAB5A\uAB60-\uAB65\uAB70-\uABBF\uFB00-\uFB06\uFB13-\uFB17\uFF41-\uFF5A]/, peg$c99 = peg$classExpectation([["a", "z"], "µ", ["ß", "ö"], ["ø", "ÿ"], "ā", "ă", "ą", "ć", "ĉ", "ċ", "č", "ď", "đ", "ē", "ĕ", "ė", "ę", "ě", "ĝ", "ğ", "ġ", "ģ", "ĥ", "ħ", "ĩ", "ī", "ĭ", "į", "ı", "ij", "ĵ", ["ķ", "ĸ"], "ĺ", "ļ", "ľ", "ŀ", "ł", "ń", "ņ", ["ň", "ʼn"], "ŋ", "ō", "ŏ", "ő", "œ", "ŕ", "ŗ", "ř", "ś", "ŝ", "ş", "š", "ţ", "ť", "ŧ", "ũ", "ū", "ŭ", "ů", "ű", "ų", "ŵ", "ŷ", "ź", "ż", ["ž", "ƀ"], "ƃ", "ƅ", "ƈ", ["ƌ", "ƍ"], "ƒ", "ƕ", ["ƙ", "ƛ"], "ƞ", "ơ", "ƣ", "ƥ", "ƨ", ["ƪ", "ƫ"], "ƭ", "ư", "ƴ", "ƶ", ["ƹ", "ƺ"], ["ƽ", "ƿ"], "dž", "lj", "nj", "ǎ", "ǐ", "ǒ", "ǔ", "ǖ", "ǘ", "ǚ", ["ǜ", "ǝ"], "ǟ", "ǡ", "ǣ", "ǥ", "ǧ", "ǩ", "ǫ", "ǭ", ["ǯ", "ǰ"], "dz", "ǵ", "ǹ", "ǻ", "ǽ", "ǿ", "ȁ", "ȃ", "ȅ", "ȇ", "ȉ", "ȋ", "ȍ", "ȏ", "ȑ", "ȓ", "ȕ", "ȗ", "ș", "ț", "ȝ", "ȟ", "ȡ", "ȣ", "ȥ", "ȧ", "ȩ", "ȫ", "ȭ", "ȯ", "ȱ", ["ȳ", "ȹ"], "ȼ", ["ȿ", "ɀ"], "ɂ", "ɇ", "ɉ", "ɋ", "ɍ", ["ɏ", "ʓ"], ["ʕ", "ʯ"], "ͱ", "ͳ", "ͷ", ["ͻ", "ͽ"], "ΐ", ["ά", "ώ"], ["ϐ", "ϑ"], ["ϕ", "ϗ"], "ϙ", "ϛ", "ϝ", "ϟ", "ϡ", "ϣ", "ϥ", "ϧ", "ϩ", "ϫ", "ϭ", ["ϯ", "ϳ"], "ϵ", "ϸ", ["ϻ", "ϼ"], ["а", "џ"], "ѡ", "ѣ", "ѥ", "ѧ", "ѩ", "ѫ", "ѭ", "ѯ", "ѱ", "ѳ", "ѵ", "ѷ", "ѹ", "ѻ", "ѽ", "ѿ", "ҁ", "ҋ", "ҍ", "ҏ", "ґ", "ғ", "ҕ", "җ", "ҙ", "қ", "ҝ", "ҟ", "ҡ", "ң", "ҥ", "ҧ", "ҩ", "ҫ", "ҭ", "ү", "ұ", "ҳ", "ҵ", "ҷ", "ҹ", "һ", "ҽ", "ҿ", "ӂ", "ӄ", "ӆ", "ӈ", "ӊ", "ӌ", ["ӎ", "ӏ"], "ӑ", "ӓ", "ӕ", "ӗ", "ә", "ӛ", "ӝ", "ӟ", "ӡ", "ӣ", "ӥ", "ӧ", "ө", "ӫ", "ӭ", "ӯ", "ӱ", "ӳ", "ӵ", "ӷ", "ӹ", "ӻ", "ӽ", "ӿ", "ԁ", "ԃ", "ԅ", "ԇ", "ԉ", "ԋ", "ԍ", "ԏ", "ԑ", "ԓ", "ԕ", "ԗ", "ԙ", "ԛ", "ԝ", "ԟ", "ԡ", "ԣ", "ԥ", "ԧ", "ԩ", "ԫ", "ԭ", "ԯ", ["ՠ", "ֈ"], ["ა", "ჺ"], ["ჽ", "ჿ"], ["ᏸ", "ᏽ"], ["ᲀ", "ᲈ"], ["ᴀ", "ᴫ"], ["ᵫ", "ᵷ"], ["ᵹ", "ᶚ"], "ḁ", "ḃ", "ḅ", "ḇ", "ḉ", "ḋ", "ḍ", "ḏ", "ḑ", "ḓ", "ḕ", "ḗ", "ḙ", "ḛ", "ḝ", "ḟ", "ḡ", "ḣ", "ḥ", "ḧ", "ḩ", "ḫ", "ḭ", "ḯ", "ḱ", "ḳ", "ḵ", "ḷ", "ḹ", "ḻ", "ḽ", "ḿ", "ṁ", "ṃ", "ṅ", "ṇ", "ṉ", "ṋ", "ṍ", "ṏ", "ṑ", "ṓ", "ṕ", "ṗ", "ṙ", "ṛ", "ṝ", "ṟ", "ṡ", "ṣ", "ṥ", "ṧ", "ṩ", "ṫ", "ṭ", "ṯ", "ṱ", "ṳ", "ṵ", "ṷ", "ṹ", "ṻ", "ṽ", "ṿ", "ẁ", "ẃ", "ẅ", "ẇ", "ẉ", "ẋ", "ẍ", "ẏ", "ẑ", "ẓ", ["ẕ", "ẝ"], "ẟ", "ạ", "ả", "ấ", "ầ", "ẩ", "ẫ", "ậ", "ắ", "ằ", "ẳ", "ẵ", "ặ", "ẹ", "ẻ", "ẽ", "ế", "ề", "ể", "ễ", "ệ", "ỉ", "ị", "ọ", "ỏ", "ố", "ồ", "ổ", "ỗ", "ộ", "ớ", "ờ", "ở", "ỡ", "ợ", "ụ", "ủ", "ứ", "ừ", "ử", "ữ", "ự", "ỳ", "ỵ", "ỷ", "ỹ", "ỻ", "ỽ", ["ỿ", "ἇ"], ["ἐ", "ἕ"], ["ἠ", "ἧ"], ["ἰ", "ἷ"], ["ὀ", "ὅ"], ["ὐ", "ὗ"], ["ὠ", "ὧ"], ["ὰ", "ώ"], ["ᾀ", "ᾇ"], ["ᾐ", "ᾗ"], ["ᾠ", "ᾧ"], ["ᾰ", "ᾴ"], ["ᾶ", "ᾷ"], "ι", ["ῂ", "ῄ"], ["ῆ", "ῇ"], ["ῐ", "ΐ"], ["ῖ", "ῗ"], ["ῠ", "ῧ"], ["ῲ", "ῴ"], ["ῶ", "ῷ"], "ℊ", ["ℎ", "ℏ"], "ℓ", "ℯ", "ℴ", "ℹ", ["ℼ", "ℽ"], ["ⅆ", "ⅉ"], "ⅎ", "ↄ", ["ⰰ", "ⱞ"], "ⱡ", ["ⱥ", "ⱦ"], "ⱨ", "ⱪ", "ⱬ", "ⱱ", ["ⱳ", "ⱴ"], ["ⱶ", "ⱻ"], "ⲁ", "ⲃ", "ⲅ", "ⲇ", "ⲉ", "ⲋ", "ⲍ", "ⲏ", "ⲑ", "ⲓ", "ⲕ", "ⲗ", "ⲙ", "ⲛ", "ⲝ", "ⲟ", "ⲡ", "ⲣ", "ⲥ", "ⲧ", "ⲩ", "ⲫ", "ⲭ", "ⲯ", "ⲱ", "ⲳ", "ⲵ", "ⲷ", "ⲹ", "ⲻ", "ⲽ", "ⲿ", "ⳁ", "ⳃ", "ⳅ", "ⳇ", "ⳉ", "ⳋ", "ⳍ", "ⳏ", "ⳑ", "ⳓ", "ⳕ", "ⳗ", "ⳙ", "ⳛ", "ⳝ", "ⳟ", "ⳡ", ["ⳣ", "ⳤ"], "ⳬ", "ⳮ", "ⳳ", ["ⴀ", "ⴥ"], "ⴧ", "ⴭ", "ꙁ", "ꙃ", "ꙅ", "ꙇ", "ꙉ", "ꙋ", "ꙍ", "ꙏ", "ꙑ", "ꙓ", "ꙕ", "ꙗ", "ꙙ", "ꙛ", "ꙝ", "ꙟ", "ꙡ", "ꙣ", "ꙥ", "ꙧ", "ꙩ", "ꙫ", "ꙭ", "ꚁ", "ꚃ", "ꚅ", "ꚇ", "ꚉ", "ꚋ", "ꚍ", "ꚏ", "ꚑ", "ꚓ", "ꚕ", "ꚗ", "ꚙ", "ꚛ", "ꜣ", "ꜥ", "ꜧ", "ꜩ", "ꜫ", "ꜭ", ["ꜯ", "ꜱ"], "ꜳ", "ꜵ", "ꜷ", "ꜹ", "ꜻ", "ꜽ", "ꜿ", "ꝁ", "ꝃ", "ꝅ", "ꝇ", "ꝉ", "ꝋ", "ꝍ", "ꝏ", "ꝑ", "ꝓ", "ꝕ", "ꝗ", "ꝙ", "ꝛ", "ꝝ", "ꝟ", "ꝡ", "ꝣ", "ꝥ", "ꝧ", "ꝩ", "ꝫ", "ꝭ", "ꝯ", ["ꝱ", "ꝸ"], "ꝺ", "ꝼ", "ꝿ", "ꞁ", "ꞃ", "ꞅ", "ꞇ", "ꞌ", "ꞎ", "ꞑ", ["ꞓ", "ꞕ"], "ꞗ", "ꞙ", "ꞛ", "ꞝ", "ꞟ", "ꞡ", "ꞣ", "ꞥ", "ꞧ", "ꞩ", "ꞯ", "ꞵ", "ꞷ", "ꞹ", "ꟺ", ["ꬰ", "ꭚ"], ["ꭠ", "ꭥ"], ["ꭰ", "ꮿ"], ["ff", "st"], ["ﬓ", "ﬗ"], ["a", "z"]], false, false), peg$c100 = /^[\u01C5\u01C8\u01CB\u01F2\u1F88-\u1F8F\u1F98-\u1F9F\u1FA8-\u1FAF\u1FBC\u1FCC\u1FFC]/, peg$c101 = peg$classExpectation(["Dž", "Lj", "Nj", "Dz", ["ᾈ", "ᾏ"], ["ᾘ", "ᾟ"], ["ᾨ", "ᾯ"], "ᾼ", "ῌ", "ῼ"], false, false), peg$c102 = /^[\u02B0-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0374\u037A\u0559\u0640\u06E5-\u06E6\u07F4-\u07F5\u07FA\u081A\u0824\u0828\u0971\u0E46\u0EC6\u10FC\u17D7\u1843\u1AA7\u1C78-\u1C7D\u1D2C-\u1D6A\u1D78\u1D9B-\u1DBF\u2071\u207F\u2090-\u209C\u2C7C-\u2C7D\u2D6F\u2E2F\u3005\u3031-\u3035\u303B\u309D-\u309E\u30FC-\u30FE\uA015\uA4F8-\uA4FD\uA60C\uA67F\uA69C-\uA69D\uA717-\uA71F\uA770\uA788\uA7F8-\uA7F9\uA9CF\uA9E6\uAA70\uAADD\uAAF3-\uAAF4\uAB5C-\uAB5F\uFF70\uFF9E-\uFF9F]/, peg$c103 = peg$classExpectation([["ʰ", "ˁ"], ["ˆ", "ˑ"], ["ˠ", "ˤ"], "ˬ", "ˮ", "ʹ", "ͺ", "ՙ", "ـ", ["ۥ", "ۦ"], ["ߴ", "ߵ"], "ߺ", "ࠚ", "ࠤ", "ࠨ", "ॱ", "ๆ", "ໆ", "ჼ", "ៗ", "ᡃ", "ᪧ", ["ᱸ", "ᱽ"], ["ᴬ", "ᵪ"], "ᵸ", ["ᶛ", "ᶿ"], "ⁱ", "ⁿ", ["ₐ", "ₜ"], ["ⱼ", "ⱽ"], "ⵯ", "ⸯ", "々", ["〱", "〵"], "〻", ["ゝ", "ゞ"], ["ー", "ヾ"], "ꀕ", ["ꓸ", "ꓽ"], "ꘌ", "ꙿ", ["ꚜ", "ꚝ"], ["ꜗ", "ꜟ"], "ꝰ", "ꞈ", ["ꟸ", "ꟹ"], "ꧏ", "ꧦ", "ꩰ", "ꫝ", ["ꫳ", "ꫴ"], ["ꭜ", "ꭟ"], "ー", ["゙", "゚"]], false, false), peg$c104 = /^[\xAA\xBA\u01BB\u01C0-\u01C3\u0294\u05D0-\u05EA\u05EF-\u05F2\u0620-\u063F\u0641-\u064A\u066E-\u066F\u0671-\u06D3\u06D5\u06EE-\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u0800-\u0815\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0972-\u0980\u0985-\u098C\u098F-\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC-\u09DD\u09DF-\u09E1\u09F0-\u09F1\u09FC\u0A05-\u0A0A\u0A0F-\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32-\u0A33\u0A35-\u0A36\u0A38-\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2-\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0-\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F-\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32-\u0B33\u0B35-\u0B39\u0B3D\u0B5C-\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99-\u0B9A\u0B9C\u0B9E-\u0B9F\u0BA3-\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60-\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0-\u0CE1\u0CF1-\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32-\u0E33\u0E40-\u0E45\u0E81-\u0E82\u0E84\u0E87-\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA-\u0EAB\u0EAD-\u0EB0\u0EB2-\u0EB3\u0EBD\u0EC0-\u0EC4\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065-\u1066\u106E-\u1070\u1075-\u1081\u108E\u1100-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17DC\u1820-\u1842\u1844-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE-\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C77\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5-\u1CF6\u2135-\u2138\u2D30-\u2D67\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3006\u303C\u3041-\u3096\u309F\u30A1-\u30FA\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEF\uA000-\uA014\uA016-\uA48C\uA4D0-\uA4F7\uA500-\uA60B\uA610-\uA61F\uA62A-\uA62B\uA66E\uA6A0-\uA6E5\uA78F\uA7F7\uA7FB-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD-\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9E0-\uA9E4\uA9E7-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA6F\uAA71-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5-\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADC\uAAE0-\uAAEA\uAAF2\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40-\uFB41\uFB43-\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF66-\uFF6F\uFF71-\uFF9D\uFFA0-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/, peg$c105 = peg$classExpectation(["ª", "º", "ƻ", ["ǀ", "ǃ"], "ʔ", ["א", "ת"], ["ׯ", "ײ"], ["ؠ", "ؿ"], ["ف", "ي"], ["ٮ", "ٯ"], ["ٱ", "ۓ"], "ە", ["ۮ", "ۯ"], ["ۺ", "ۼ"], "ۿ", "ܐ", ["ܒ", "ܯ"], ["ݍ", "ޥ"], "ޱ", ["ߊ", "ߪ"], ["ࠀ", "ࠕ"], ["ࡀ", "ࡘ"], ["ࡠ", "ࡪ"], ["ࢠ", "ࢴ"], ["ࢶ", "ࢽ"], ["ऄ", "ह"], "ऽ", "ॐ", ["क़", "ॡ"], ["ॲ", "ঀ"], ["অ", "ঌ"], ["এ", "ঐ"], ["ও", "ন"], ["প", "র"], "ল", ["শ", "হ"], "ঽ", "ৎ", ["ড়", "ঢ়"], ["য়", "ৡ"], ["ৰ", "ৱ"], "ৼ", ["ਅ", "ਊ"], ["ਏ", "ਐ"], ["ਓ", "ਨ"], ["ਪ", "ਰ"], ["ਲ", "ਲ਼"], ["ਵ", "ਸ਼"], ["ਸ", "ਹ"], ["ਖ਼", "ੜ"], "ਫ਼", ["ੲ", "ੴ"], ["અ", "ઍ"], ["એ", "ઑ"], ["ઓ", "ન"], ["પ", "ર"], ["લ", "ળ"], ["વ", "હ"], "ઽ", "ૐ", ["ૠ", "ૡ"], "ૹ", ["ଅ", "ଌ"], ["ଏ", "ଐ"], ["ଓ", "ନ"], ["ପ", "ର"], ["ଲ", "ଳ"], ["ଵ", "ହ"], "ଽ", ["ଡ଼", "ଢ଼"], ["ୟ", "ୡ"], "ୱ", "ஃ", ["அ", "ஊ"], ["எ", "ஐ"], ["ஒ", "க"], ["ங", "ச"], "ஜ", ["ஞ", "ட"], ["ண", "த"], ["ந", "ப"], ["ம", "ஹ"], "ௐ", ["అ", "ఌ"], ["ఎ", "ఐ"], ["ఒ", "న"], ["ప", "హ"], "ఽ", ["ౘ", "ౚ"], ["ౠ", "ౡ"], "ಀ", ["ಅ", "ಌ"], ["ಎ", "ಐ"], ["ಒ", "ನ"], ["ಪ", "ಳ"], ["ವ", "ಹ"], "ಽ", "ೞ", ["ೠ", "ೡ"], ["ೱ", "ೲ"], ["അ", "ഌ"], ["എ", "ഐ"], ["ഒ", "ഺ"], "ഽ", "ൎ", ["ൔ", "ൖ"], ["ൟ", "ൡ"], ["ൺ", "ൿ"], ["අ", "ඖ"], ["ක", "න"], ["ඳ", "ර"], "ල", ["ව", "ෆ"], ["ก", "ะ"], ["า", "ำ"], ["เ", "ๅ"], ["ກ", "ຂ"], "ຄ", ["ງ", "ຈ"], "ຊ", "ຍ", ["ດ", "ທ"], ["ນ", "ຟ"], ["ມ", "ຣ"], "ລ", "ວ", ["ສ", "ຫ"], ["ອ", "ະ"], ["າ", "ຳ"], "ຽ", ["ເ", "ໄ"], ["ໜ", "ໟ"], "ༀ", ["ཀ", "ཇ"], ["ཉ", "ཬ"], ["ྈ", "ྌ"], ["က", "ဪ"], "ဿ", ["ၐ", "ၕ"], ["ၚ", "ၝ"], "ၡ", ["ၥ", "ၦ"], ["ၮ", "ၰ"], ["ၵ", "ႁ"], "ႎ", ["ᄀ", "ቈ"], ["ቊ", "ቍ"], ["ቐ", "ቖ"], "ቘ", ["ቚ", "ቝ"], ["በ", "ኈ"], ["ኊ", "ኍ"], ["ነ", "ኰ"], ["ኲ", "ኵ"], ["ኸ", "ኾ"], "ዀ", ["ዂ", "ዅ"], ["ወ", "ዖ"], ["ዘ", "ጐ"], ["ጒ", "ጕ"], ["ጘ", "ፚ"], ["ᎀ", "ᎏ"], ["ᐁ", "ᙬ"], ["ᙯ", "ᙿ"], ["ᚁ", "ᚚ"], ["ᚠ", "ᛪ"], ["ᛱ", "ᛸ"], ["ᜀ", "ᜌ"], ["ᜎ", "ᜑ"], ["ᜠ", "ᜱ"], ["ᝀ", "ᝑ"], ["ᝠ", "ᝬ"], ["ᝮ", "ᝰ"], ["ក", "ឳ"], "ៜ", ["ᠠ", "ᡂ"], ["ᡄ", "ᡸ"], ["ᢀ", "ᢄ"], ["ᢇ", "ᢨ"], "ᢪ", ["ᢰ", "ᣵ"], ["ᤀ", "ᤞ"], ["ᥐ", "ᥭ"], ["ᥰ", "ᥴ"], ["ᦀ", "ᦫ"], ["ᦰ", "ᧉ"], ["ᨀ", "ᨖ"], ["ᨠ", "ᩔ"], ["ᬅ", "ᬳ"], ["ᭅ", "ᭋ"], ["ᮃ", "ᮠ"], ["ᮮ", "ᮯ"], ["ᮺ", "ᯥ"], ["ᰀ", "ᰣ"], ["ᱍ", "ᱏ"], ["ᱚ", "ᱷ"], ["ᳩ", "ᳬ"], ["ᳮ", "ᳱ"], ["ᳵ", "ᳶ"], ["ℵ", "ℸ"], ["ⴰ", "ⵧ"], ["ⶀ", "ⶖ"], ["ⶠ", "ⶦ"], ["ⶨ", "ⶮ"], ["ⶰ", "ⶶ"], ["ⶸ", "ⶾ"], ["ⷀ", "ⷆ"], ["ⷈ", "ⷎ"], ["ⷐ", "ⷖ"], ["ⷘ", "ⷞ"], "〆", "〼", ["ぁ", "ゖ"], "ゟ", ["ァ", "ヺ"], "ヿ", ["ㄅ", "ㄯ"], ["ㄱ", "ㆎ"], ["ㆠ", "ㆺ"], ["ㇰ", "ㇿ"], ["㐀", "䶵"], ["一", "鿯"], ["ꀀ", "ꀔ"], ["ꀖ", "ꒌ"], ["ꓐ", "ꓷ"], ["ꔀ", "ꘋ"], ["ꘐ", "ꘟ"], ["ꘪ", "ꘫ"], "ꙮ", ["ꚠ", "ꛥ"], "ꞏ", "ꟷ", ["ꟻ", "ꠁ"], ["ꠃ", "ꠅ"], ["ꠇ", "ꠊ"], ["ꠌ", "ꠢ"], ["ꡀ", "ꡳ"], ["ꢂ", "ꢳ"], ["ꣲ", "ꣷ"], "ꣻ", ["ꣽ", "ꣾ"], ["ꤊ", "ꤥ"], ["ꤰ", "ꥆ"], ["ꥠ", "ꥼ"], ["ꦄ", "ꦲ"], ["ꧠ", "ꧤ"], ["ꧧ", "ꧯ"], ["ꧺ", "ꧾ"], ["ꨀ", "ꨨ"], ["ꩀ", "ꩂ"], ["ꩄ", "ꩋ"], ["ꩠ", "ꩯ"], ["ꩱ", "ꩶ"], "ꩺ", ["ꩾ", "ꪯ"], "ꪱ", ["ꪵ", "ꪶ"], ["ꪹ", "ꪽ"], "ꫀ", "ꫂ", ["ꫛ", "ꫜ"], ["ꫠ", "ꫪ"], "ꫲ", ["ꬁ", "ꬆ"], ["ꬉ", "ꬎ"], ["ꬑ", "ꬖ"], ["ꬠ", "ꬦ"], ["ꬨ", "ꬮ"], ["ꯀ", "ꯢ"], ["가", "힣"], ["ힰ", "ퟆ"], ["ퟋ", "ퟻ"], ["豈", "舘"], ["並", "龎"], "יִ", ["ײַ", "ﬨ"], ["שׁ", "זּ"], ["טּ", "לּ"], "מּ", ["נּ", "סּ"], ["ףּ", "פּ"], ["צּ", "ﮱ"], ["ﯓ", "ﴽ"], ["ﵐ", "ﶏ"], ["ﶒ", "ﷇ"], ["ﷰ", "ﷻ"], ["ﹰ", "ﹴ"], ["ﹶ", "ﻼ"], ["ヲ", "ッ"], ["ア", "ン"], ["ᅠ", "ᄒ"], ["ᅡ", "ᅦ"], ["ᅧ", "ᅬ"], ["ᅭ", "ᅲ"], ["ᅳ", "ᅵ"]], false, false), peg$c106 = /^[\u16EE-\u16F0\u2160-\u2182\u2185-\u2188\u3007\u3021-\u3029\u3038-\u303A\uA6E6-\uA6EF]/, peg$c107 = peg$classExpectation([["ᛮ", "ᛰ"], ["Ⅰ", "ↂ"], ["ↅ", "ↈ"], "〇", ["〡", "〩"], ["〸", "〺"], ["ꛦ", "ꛯ"]], false, false), peg$c108 = /^[\u0300-\u036F\u0483-\u0487\u0591-\u05BD\u05BF\u05C1-\u05C2\u05C4-\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7-\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u07FD\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08D3-\u08E1\u08E3-\u0902\u093A\u093C\u0941-\u0948\u094D\u0951-\u0957\u0962-\u0963\u0981\u09BC\u09C1-\u09C4\u09CD\u09E2-\u09E3\u09FE\u0A01-\u0A02\u0A3C\u0A41-\u0A42\u0A47-\u0A48\u0A4B-\u0A4D\u0A51\u0A70-\u0A71\u0A75\u0A81-\u0A82\u0ABC\u0AC1-\u0AC5\u0AC7-\u0AC8\u0ACD\u0AE2-\u0AE3\u0AFA-\u0AFF\u0B01\u0B3C\u0B3F\u0B41-\u0B44\u0B4D\u0B56\u0B62-\u0B63\u0B82\u0BC0\u0BCD\u0C00\u0C04\u0C3E-\u0C40\u0C46-\u0C48\u0C4A-\u0C4D\u0C55-\u0C56\u0C62-\u0C63\u0C81\u0CBC\u0CBF\u0CC6\u0CCC-\u0CCD\u0CE2-\u0CE3\u0D00-\u0D01\u0D3B-\u0D3C\u0D41-\u0D44\u0D4D\u0D62-\u0D63\u0DCA\u0DD2-\u0DD4\u0DD6\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB-\u0EBC\u0EC8-\u0ECD\u0F18-\u0F19\u0F35\u0F37\u0F39\u0F71-\u0F7E\u0F80-\u0F84\u0F86-\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102D-\u1030\u1032-\u1037\u1039-\u103A\u103D-\u103E\u1058-\u1059\u105E-\u1060\u1071-\u1074\u1082\u1085-\u1086\u108D\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752-\u1753\u1772-\u1773\u17B4-\u17B5\u17B7-\u17BD\u17C6\u17C9-\u17D3\u17DD\u180B-\u180D\u1885-\u1886\u18A9\u1920-\u1922\u1927-\u1928\u1932\u1939-\u193B\u1A17-\u1A18\u1A1B\u1A56\u1A58-\u1A5E\u1A60\u1A62\u1A65-\u1A6C\u1A73-\u1A7C\u1A7F\u1AB0-\u1ABD\u1B00-\u1B03\u1B34\u1B36-\u1B3A\u1B3C\u1B42\u1B6B-\u1B73\u1B80-\u1B81\u1BA2-\u1BA5\u1BA8-\u1BA9\u1BAB-\u1BAD\u1BE6\u1BE8-\u1BE9\u1BED\u1BEF-\u1BF1\u1C2C-\u1C33\u1C36-\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE0\u1CE2-\u1CE8\u1CED\u1CF4\u1CF8-\u1CF9\u1DC0-\u1DF9\u1DFB-\u1DFF\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302D\u3099-\u309A\uA66F\uA674-\uA67D\uA69E-\uA69F\uA6F0-\uA6F1\uA802\uA806\uA80B\uA825-\uA826\uA8C4-\uA8C5\uA8E0-\uA8F1\uA8FF\uA926-\uA92D\uA947-\uA951\uA980-\uA982\uA9B3\uA9B6-\uA9B9\uA9BC\uA9E5\uAA29-\uAA2E\uAA31-\uAA32\uAA35-\uAA36\uAA43\uAA4C\uAA7C\uAAB0\uAAB2-\uAAB4\uAAB7-\uAAB8\uAABE-\uAABF\uAAC1\uAAEC-\uAAED\uAAF6\uABE5\uABE8\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F]/, peg$c109 = peg$classExpectation([["̀", "ͯ"], ["҃", "҇"], ["֑", "ֽ"], "ֿ", ["ׁ", "ׂ"], ["ׄ", "ׅ"], "ׇ", ["ؐ", "ؚ"], ["ً", "ٟ"], "ٰ", ["ۖ", "ۜ"], ["۟", "ۤ"], ["ۧ", "ۨ"], ["۪", "ۭ"], "ܑ", ["ܰ", "݊"], ["ަ", "ް"], ["߫", "߳"], "߽", ["ࠖ", "࠙"], ["ࠛ", "ࠣ"], ["ࠥ", "ࠧ"], ["ࠩ", "࠭"], ["࡙", "࡛"], ["࣓", "࣡"], ["ࣣ", "ं"], "ऺ", "़", ["ु", "ै"], "्", ["॑", "ॗ"], ["ॢ", "ॣ"], "ঁ", "়", ["ু", "ৄ"], "্", ["ৢ", "ৣ"], "৾", ["ਁ", "ਂ"], "਼", ["ੁ", "ੂ"], ["ੇ", "ੈ"], ["ੋ", "੍"], "ੑ", ["ੰ", "ੱ"], "ੵ", ["ઁ", "ં"], "઼", ["ુ", "ૅ"], ["ે", "ૈ"], "્", ["ૢ", "ૣ"], ["ૺ", "૿"], "ଁ", "଼", "ି", ["ୁ", "ୄ"], "୍", "ୖ", ["ୢ", "ୣ"], "ஂ", "ீ", "்", "ఀ", "ఄ", ["ా", "ీ"], ["ె", "ై"], ["ొ", "్"], ["ౕ", "ౖ"], ["ౢ", "ౣ"], "ಁ", "಼", "ಿ", "ೆ", ["ೌ", "್"], ["ೢ", "ೣ"], ["ഀ", "ഁ"], ["഻", "഼"], ["ു", "ൄ"], "്", ["ൢ", "ൣ"], "්", ["ි", "ු"], "ූ", "ั", ["ิ", "ฺ"], ["็", "๎"], "ັ", ["ິ", "ູ"], ["ົ", "ຼ"], ["່", "ໍ"], ["༘", "༙"], "༵", "༷", "༹", ["ཱ", "ཾ"], ["ྀ", "྄"], ["྆", "྇"], ["ྍ", "ྗ"], ["ྙ", "ྼ"], "࿆", ["ိ", "ူ"], ["ဲ", "့"], ["္", "်"], ["ွ", "ှ"], ["ၘ", "ၙ"], ["ၞ", "ၠ"], ["ၱ", "ၴ"], "ႂ", ["ႅ", "ႆ"], "ႍ", "ႝ", ["፝", "፟"], ["ᜒ", "᜔"], ["ᜲ", "᜴"], ["ᝒ", "ᝓ"], ["ᝲ", "ᝳ"], ["឴", "឵"], ["ិ", "ួ"], "ំ", ["៉", "៓"], "៝", ["᠋", "᠍"], ["ᢅ", "ᢆ"], "ᢩ", ["ᤠ", "ᤢ"], ["ᤧ", "ᤨ"], "ᤲ", ["᤹", "᤻"], ["ᨗ", "ᨘ"], "ᨛ", "ᩖ", ["ᩘ", "ᩞ"], "᩠", "ᩢ", ["ᩥ", "ᩬ"], ["ᩳ", "᩼"], "᩿", ["᪰", "᪽"], ["ᬀ", "ᬃ"], "᬴", ["ᬶ", "ᬺ"], "ᬼ", "ᭂ", ["᭫", "᭳"], ["ᮀ", "ᮁ"], ["ᮢ", "ᮥ"], ["ᮨ", "ᮩ"], ["᮫", "ᮭ"], "᯦", ["ᯨ", "ᯩ"], "ᯭ", ["ᯯ", "ᯱ"], ["ᰬ", "ᰳ"], ["ᰶ", "᰷"], ["᳐", "᳒"], ["᳔", "᳠"], ["᳢", "᳨"], "᳭", "᳴", ["᳸", "᳹"], ["᷀", "᷹"], ["᷻", "᷿"], ["⃐", "⃜"], "⃡", ["⃥", "⃰"], ["⳯", "⳱"], "⵿", ["ⷠ", "ⷿ"], ["〪", "〭"], ["゙", "゚"], "꙯", ["ꙴ", "꙽"], ["ꚞ", "ꚟ"], ["꛰", "꛱"], "ꠂ", "꠆", "ꠋ", ["ꠥ", "ꠦ"], ["꣄", "ꣅ"], ["꣠", "꣱"], "ꣿ", ["ꤦ", "꤭"], ["ꥇ", "ꥑ"], ["ꦀ", "ꦂ"], "꦳", ["ꦶ", "ꦹ"], "ꦼ", "ꧥ", ["ꨩ", "ꨮ"], ["ꨱ", "ꨲ"], ["ꨵ", "ꨶ"], "ꩃ", "ꩌ", "ꩼ", "ꪰ", ["ꪲ", "ꪴ"], ["ꪷ", "ꪸ"], ["ꪾ", "꪿"], "꫁", ["ꫬ", "ꫭ"], "꫶", "ꯥ", "ꯨ", "꯭", "ﬞ", ["︀", "️"], ["︠", "︯"]], false, false), peg$c110 = /^[\u0903\u093B\u093E-\u0940\u0949-\u094C\u094E-\u094F\u0982-\u0983\u09BE-\u09C0\u09C7-\u09C8\u09CB-\u09CC\u09D7\u0A03\u0A3E-\u0A40\u0A83\u0ABE-\u0AC0\u0AC9\u0ACB-\u0ACC\u0B02-\u0B03\u0B3E\u0B40\u0B47-\u0B48\u0B4B-\u0B4C\u0B57\u0BBE-\u0BBF\u0BC1-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCC\u0BD7\u0C01-\u0C03\u0C41-\u0C44\u0C82-\u0C83\u0CBE\u0CC0-\u0CC4\u0CC7-\u0CC8\u0CCA-\u0CCB\u0CD5-\u0CD6\u0D02-\u0D03\u0D3E-\u0D40\u0D46-\u0D48\u0D4A-\u0D4C\u0D57\u0D82-\u0D83\u0DCF-\u0DD1\u0DD8-\u0DDF\u0DF2-\u0DF3\u0F3E-\u0F3F\u0F7F\u102B-\u102C\u1031\u1038\u103B-\u103C\u1056-\u1057\u1062-\u1064\u1067-\u106D\u1083-\u1084\u1087-\u108C\u108F\u109A-\u109C\u17B6\u17BE-\u17C5\u17C7-\u17C8\u1923-\u1926\u1929-\u192B\u1930-\u1931\u1933-\u1938\u1A19-\u1A1A\u1A55\u1A57\u1A61\u1A63-\u1A64\u1A6D-\u1A72\u1B04\u1B35\u1B3B\u1B3D-\u1B41\u1B43-\u1B44\u1B82\u1BA1\u1BA6-\u1BA7\u1BAA\u1BE7\u1BEA-\u1BEC\u1BEE\u1BF2-\u1BF3\u1C24-\u1C2B\u1C34-\u1C35\u1CE1\u1CF2-\u1CF3\u1CF7\u302E-\u302F\uA823-\uA824\uA827\uA880-\uA881\uA8B4-\uA8C3\uA952-\uA953\uA983\uA9B4-\uA9B5\uA9BA-\uA9BB\uA9BD-\uA9C0\uAA2F-\uAA30\uAA33-\uAA34\uAA4D\uAA7B\uAA7D\uAAEB\uAAEE-\uAAEF\uAAF5\uABE3-\uABE4\uABE6-\uABE7\uABE9-\uABEA\uABEC]/, peg$c111 = peg$classExpectation(["ः", "ऻ", ["ा", "ी"], ["ॉ", "ौ"], ["ॎ", "ॏ"], ["ং", "ঃ"], ["া", "ী"], ["ে", "ৈ"], ["ো", "ৌ"], "ৗ", "ਃ", ["ਾ", "ੀ"], "ઃ", ["ા", "ી"], "ૉ", ["ો", "ૌ"], ["ଂ", "ଃ"], "ା", "ୀ", ["େ", "ୈ"], ["ୋ", "ୌ"], "ୗ", ["ா", "ி"], ["ு", "ூ"], ["ெ", "ை"], ["ொ", "ௌ"], "ௗ", ["ఁ", "ః"], ["ు", "ౄ"], ["ಂ", "ಃ"], "ಾ", ["ೀ", "ೄ"], ["ೇ", "ೈ"], ["ೊ", "ೋ"], ["ೕ", "ೖ"], ["ം", "ഃ"], ["ാ", "ീ"], ["െ", "ൈ"], ["ൊ", "ൌ"], "ൗ", ["ං", "ඃ"], ["ා", "ෑ"], ["ෘ", "ෟ"], ["ෲ", "ෳ"], ["༾", "༿"], "ཿ", ["ါ", "ာ"], "ေ", "း", ["ျ", "ြ"], ["ၖ", "ၗ"], ["ၢ", "ၤ"], ["ၧ", "ၭ"], ["ႃ", "ႄ"], ["ႇ", "ႌ"], "ႏ", ["ႚ", "ႜ"], "ា", ["ើ", "ៅ"], ["ះ", "ៈ"], ["ᤣ", "ᤦ"], ["ᤩ", "ᤫ"], ["ᤰ", "ᤱ"], ["ᤳ", "ᤸ"], ["ᨙ", "ᨚ"], "ᩕ", "ᩗ", "ᩡ", ["ᩣ", "ᩤ"], ["ᩭ", "ᩲ"], "ᬄ", "ᬵ", "ᬻ", ["ᬽ", "ᭁ"], ["ᭃ", "᭄"], "ᮂ", "ᮡ", ["ᮦ", "ᮧ"], "᮪", "ᯧ", ["ᯪ", "ᯬ"], "ᯮ", ["᯲", "᯳"], ["ᰤ", "ᰫ"], ["ᰴ", "ᰵ"], "᳡", ["ᳲ", "ᳳ"], "᳷", ["〮", "〯"], ["ꠣ", "ꠤ"], "ꠧ", ["ꢀ", "ꢁ"], ["ꢴ", "ꣃ"], ["ꥒ", "꥓"], "ꦃ", ["ꦴ", "ꦵ"], ["ꦺ", "ꦻ"], ["ꦽ", "꧀"], ["ꨯ", "ꨰ"], ["ꨳ", "ꨴ"], "ꩍ", "ꩻ", "ꩽ", "ꫫ", ["ꫮ", "ꫯ"], "ꫵ", ["ꯣ", "ꯤ"], ["ꯦ", "ꯧ"], ["ꯩ", "ꯪ"], "꯬"], false, false), peg$c112 = /^[0-9\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0BE6-\u0BEF\u0C66-\u0C6F\u0CE6-\u0CEF\u0D66-\u0D6F\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F29\u1040-\u1049\u1090-\u1099\u17E0-\u17E9\u1810-\u1819\u1946-\u194F\u19D0-\u19D9\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\uA620-\uA629\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19]/, peg$c113 = peg$classExpectation([["0", "9"], ["٠", "٩"], ["۰", "۹"], ["߀", "߉"], ["०", "९"], ["০", "৯"], ["੦", "੯"], ["૦", "૯"], ["୦", "୯"], ["௦", "௯"], ["౦", "౯"], ["೦", "೯"], ["൦", "൯"], ["෦", "෯"], ["๐", "๙"], ["໐", "໙"], ["༠", "༩"], ["၀", "၉"], ["႐", "႙"], ["០", "៩"], ["᠐", "᠙"], ["᥆", "᥏"], ["᧐", "᧙"], ["᪀", "᪉"], ["᪐", "᪙"], ["᭐", "᭙"], ["᮰", "᮹"], ["᱀", "᱉"], ["᱐", "᱙"], ["꘠", "꘩"], ["꣐", "꣙"], ["꤀", "꤉"], ["꧐", "꧙"], ["꧰", "꧹"], ["꩐", "꩙"], ["꯰", "꯹"], ["0", "9"]], false, false), peg$c114 = /^[_\u203F-\u2040\u2054\uFE33-\uFE34\uFE4D-\uFE4F\uFF3F]/, peg$c115 = peg$classExpectation(["_", ["‿", "⁀"], "⁔", ["︳", "︴"], ["﹍", "﹏"], "_"], false, false), peg$c118 = /^[0-9a-f]/i, peg$c119 = peg$classExpectation([["0", "9"], ["a", "f"]], false, true), peg$c120 = "break", peg$c121 = peg$literalExpectation("break", false), peg$c122 = "case", peg$c123 = peg$literalExpectation("case", false), peg$c124 = "catch", peg$c125 = peg$literalExpectation("catch", false), peg$c126 = "class", peg$c127 = peg$literalExpectation("class", false), peg$c128 = "const", peg$c129 = peg$literalExpectation("const", false), peg$c130 = "continue", peg$c131 = peg$literalExpectation("continue", false), peg$c132 = "debugger", peg$c133 = peg$literalExpectation("debugger", false), peg$c134 = "default", peg$c135 = peg$literalExpectation("default", false), peg$c136 = "delete", peg$c137 = peg$literalExpectation("delete", false), peg$c138 = "do", peg$c139 = peg$literalExpectation("do", false), peg$c140 = "else", peg$c141 = peg$literalExpectation("else", false), peg$c142 = "export", peg$c143 = peg$literalExpectation("export", false), peg$c144 = "extends", peg$c145 = peg$literalExpectation("extends", false), peg$c146 = "false", peg$c147 = peg$literalExpectation("false", false), peg$c148 = "finally", peg$c149 = peg$literalExpectation("finally", false), peg$c150 = "for", peg$c151 = peg$literalExpectation("for", false), peg$c152 = "function", peg$c153 = peg$literalExpectation("function", false), peg$c156 = "if", peg$c157 = peg$literalExpectation("if", false), peg$c158 = "import", peg$c159 = peg$literalExpectation("import", false), peg$c160 = "instanceof", peg$c161 = peg$literalExpectation("instanceof", false), peg$c162 = "in", peg$c163 = peg$literalExpectation("in", false), peg$c164 = "new", peg$c165 = peg$literalExpectation("new", false), peg$c166 = "null", peg$c167 = peg$literalExpectation("null", false), peg$c168 = "return", peg$c169 = peg$literalExpectation("return", false), peg$c172 = "super", peg$c173 = peg$literalExpectation("super", false), peg$c174 = "switch", peg$c175 = peg$literalExpectation("switch", false), peg$c176 = "this", peg$c177 = peg$literalExpectation("this", false), peg$c178 = "throw", peg$c179 = peg$literalExpectation("throw", false), peg$c180 = "true", peg$c181 = peg$literalExpectation("true", false), peg$c182 = "try", peg$c183 = peg$literalExpectation("try", false), peg$c184 = "typeof", peg$c185 = peg$literalExpectation("typeof", false), peg$c186 = "var", peg$c187 = peg$literalExpectation("var", false), peg$c188 = "void", peg$c189 = peg$literalExpectation("void", false), peg$c190 = "while", peg$c191 = peg$literalExpectation("while", false), peg$c192 = "with", peg$c193 = peg$literalExpectation("with", false), peg$currPos = 0, peg$savedPos = 0, peg$posDetailsCache = [{ line: 1, column: 1 }], peg$maxFailPos = 0, peg$maxFailExpected = [], peg$silentFails = 0, peg$result;
|
|
6066
|
+
}, peg$c103 = /^[A-Z\xC0-\xD6\xD8-\xDE\u0100\u0102\u0104\u0106\u0108\u010A\u010C\u010E\u0110\u0112\u0114\u0116\u0118\u011A\u011C\u011E\u0120\u0122\u0124\u0126\u0128\u012A\u012C\u012E\u0130\u0132\u0134\u0136\u0139\u013B\u013D\u013F\u0141\u0143\u0145\u0147\u014A\u014C\u014E\u0150\u0152\u0154\u0156\u0158\u015A\u015C\u015E\u0160\u0162\u0164\u0166\u0168\u016A\u016C\u016E\u0170\u0172\u0174\u0176\u0178-\u0179\u017B\u017D\u0181-\u0182\u0184\u0186-\u0187\u0189-\u018B\u018E-\u0191\u0193-\u0194\u0196-\u0198\u019C-\u019D\u019F-\u01A0\u01A2\u01A4\u01A6-\u01A7\u01A9\u01AC\u01AE-\u01AF\u01B1-\u01B3\u01B5\u01B7-\u01B8\u01BC\u01C4\u01C7\u01CA\u01CD\u01CF\u01D1\u01D3\u01D5\u01D7\u01D9\u01DB\u01DE\u01E0\u01E2\u01E4\u01E6\u01E8\u01EA\u01EC\u01EE\u01F1\u01F4\u01F6-\u01F8\u01FA\u01FC\u01FE\u0200\u0202\u0204\u0206\u0208\u020A\u020C\u020E\u0210\u0212\u0214\u0216\u0218\u021A\u021C\u021E\u0220\u0222\u0224\u0226\u0228\u022A\u022C\u022E\u0230\u0232\u023A-\u023B\u023D-\u023E\u0241\u0243-\u0246\u0248\u024A\u024C\u024E\u0370\u0372\u0376\u037F\u0386\u0388-\u038A\u038C\u038E-\u038F\u0391-\u03A1\u03A3-\u03AB\u03CF\u03D2-\u03D4\u03D8\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA\u03EC\u03EE\u03F4\u03F7\u03F9-\u03FA\u03FD-\u042F\u0460\u0462\u0464\u0466\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476\u0478\u047A\u047C\u047E\u0480\u048A\u048C\u048E\u0490\u0492\u0494\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2\u04B4\u04B6\u04B8\u04BA\u04BC\u04BE\u04C0-\u04C1\u04C3\u04C5\u04C7\u04C9\u04CB\u04CD\u04D0\u04D2\u04D4\u04D6\u04D8\u04DA\u04DC\u04DE\u04E0\u04E2\u04E4\u04E6\u04E8\u04EA\u04EC\u04EE\u04F0\u04F2\u04F4\u04F6\u04F8\u04FA\u04FC\u04FE\u0500\u0502\u0504\u0506\u0508\u050A\u050C\u050E\u0510\u0512\u0514\u0516\u0518\u051A\u051C\u051E\u0520\u0522\u0524\u0526\u0528\u052A\u052C\u052E\u0531-\u0556\u10A0-\u10C5\u10C7\u10CD\u13A0-\u13F5\u1C90-\u1CBA\u1CBD-\u1CBF\u1E00\u1E02\u1E04\u1E06\u1E08\u1E0A\u1E0C\u1E0E\u1E10\u1E12\u1E14\u1E16\u1E18\u1E1A\u1E1C\u1E1E\u1E20\u1E22\u1E24\u1E26\u1E28\u1E2A\u1E2C\u1E2E\u1E30\u1E32\u1E34\u1E36\u1E38\u1E3A\u1E3C\u1E3E\u1E40\u1E42\u1E44\u1E46\u1E48\u1E4A\u1E4C\u1E4E\u1E50\u1E52\u1E54\u1E56\u1E58\u1E5A\u1E5C\u1E5E\u1E60\u1E62\u1E64\u1E66\u1E68\u1E6A\u1E6C\u1E6E\u1E70\u1E72\u1E74\u1E76\u1E78\u1E7A\u1E7C\u1E7E\u1E80\u1E82\u1E84\u1E86\u1E88\u1E8A\u1E8C\u1E8E\u1E90\u1E92\u1E94\u1E9E\u1EA0\u1EA2\u1EA4\u1EA6\u1EA8\u1EAA\u1EAC\u1EAE\u1EB0\u1EB2\u1EB4\u1EB6\u1EB8\u1EBA\u1EBC\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1EC8\u1ECA\u1ECC\u1ECE\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EDA\u1EDC\u1EDE\u1EE0\u1EE2\u1EE4\u1EE6\u1EE8\u1EEA\u1EEC\u1EEE\u1EF0\u1EF2\u1EF4\u1EF6\u1EF8\u1EFA\u1EFC\u1EFE\u1F08-\u1F0F\u1F18-\u1F1D\u1F28-\u1F2F\u1F38-\u1F3F\u1F48-\u1F4D\u1F59\u1F5B\u1F5D\u1F5F\u1F68-\u1F6F\u1FB8-\u1FBB\u1FC8-\u1FCB\u1FD8-\u1FDB\u1FE8-\u1FEC\u1FF8-\u1FFB\u2102\u2107\u210B-\u210D\u2110-\u2112\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u2130-\u2133\u213E-\u213F\u2145\u2183\u2C00-\u2C2E\u2C60\u2C62-\u2C64\u2C67\u2C69\u2C6B\u2C6D-\u2C70\u2C72\u2C75\u2C7E-\u2C80\u2C82\u2C84\u2C86\u2C88\u2C8A\u2C8C\u2C8E\u2C90\u2C92\u2C94\u2C96\u2C98\u2C9A\u2C9C\u2C9E\u2CA0\u2CA2\u2CA4\u2CA6\u2CA8\u2CAA\u2CAC\u2CAE\u2CB0\u2CB2\u2CB4\u2CB6\u2CB8\u2CBA\u2CBC\u2CBE\u2CC0\u2CC2\u2CC4\u2CC6\u2CC8\u2CCA\u2CCC\u2CCE\u2CD0\u2CD2\u2CD4\u2CD6\u2CD8\u2CDA\u2CDC\u2CDE\u2CE0\u2CE2\u2CEB\u2CED\u2CF2\uA640\uA642\uA644\uA646\uA648\uA64A\uA64C\uA64E\uA650\uA652\uA654\uA656\uA658\uA65A\uA65C\uA65E\uA660\uA662\uA664\uA666\uA668\uA66A\uA66C\uA680\uA682\uA684\uA686\uA688\uA68A\uA68C\uA68E\uA690\uA692\uA694\uA696\uA698\uA69A\uA722\uA724\uA726\uA728\uA72A\uA72C\uA72E\uA732\uA734\uA736\uA738\uA73A\uA73C\uA73E\uA740\uA742\uA744\uA746\uA748\uA74A\uA74C\uA74E\uA750\uA752\uA754\uA756\uA758\uA75A\uA75C\uA75E\uA760\uA762\uA764\uA766\uA768\uA76A\uA76C\uA76E\uA779\uA77B\uA77D-\uA77E\uA780\uA782\uA784\uA786\uA78B\uA78D\uA790\uA792\uA796\uA798\uA79A\uA79C\uA79E\uA7A0\uA7A2\uA7A4\uA7A6\uA7A8\uA7AA-\uA7AE\uA7B0-\uA7B4\uA7B6\uA7B8\uFF21-\uFF3A]/, peg$c104 = peg$classExpectation([["A", "Z"], ["À", "Ö"], ["Ø", "Þ"], "Ā", "Ă", "Ą", "Ć", "Ĉ", "Ċ", "Č", "Ď", "Đ", "Ē", "Ĕ", "Ė", "Ę", "Ě", "Ĝ", "Ğ", "Ġ", "Ģ", "Ĥ", "Ħ", "Ĩ", "Ī", "Ĭ", "Į", "İ", "IJ", "Ĵ", "Ķ", "Ĺ", "Ļ", "Ľ", "Ŀ", "Ł", "Ń", "Ņ", "Ň", "Ŋ", "Ō", "Ŏ", "Ő", "Œ", "Ŕ", "Ŗ", "Ř", "Ś", "Ŝ", "Ş", "Š", "Ţ", "Ť", "Ŧ", "Ũ", "Ū", "Ŭ", "Ů", "Ű", "Ų", "Ŵ", "Ŷ", ["Ÿ", "Ź"], "Ż", "Ž", ["Ɓ", "Ƃ"], "Ƅ", ["Ɔ", "Ƈ"], ["Ɖ", "Ƌ"], ["Ǝ", "Ƒ"], ["Ɠ", "Ɣ"], ["Ɩ", "Ƙ"], ["Ɯ", "Ɲ"], ["Ɵ", "Ơ"], "Ƣ", "Ƥ", ["Ʀ", "Ƨ"], "Ʃ", "Ƭ", ["Ʈ", "Ư"], ["Ʊ", "Ƴ"], "Ƶ", ["Ʒ", "Ƹ"], "Ƽ", "DŽ", "LJ", "NJ", "Ǎ", "Ǐ", "Ǒ", "Ǔ", "Ǖ", "Ǘ", "Ǚ", "Ǜ", "Ǟ", "Ǡ", "Ǣ", "Ǥ", "Ǧ", "Ǩ", "Ǫ", "Ǭ", "Ǯ", "DZ", "Ǵ", ["Ƕ", "Ǹ"], "Ǻ", "Ǽ", "Ǿ", "Ȁ", "Ȃ", "Ȅ", "Ȇ", "Ȉ", "Ȋ", "Ȍ", "Ȏ", "Ȑ", "Ȓ", "Ȕ", "Ȗ", "Ș", "Ț", "Ȝ", "Ȟ", "Ƞ", "Ȣ", "Ȥ", "Ȧ", "Ȩ", "Ȫ", "Ȭ", "Ȯ", "Ȱ", "Ȳ", ["Ⱥ", "Ȼ"], ["Ƚ", "Ⱦ"], "Ɂ", ["Ƀ", "Ɇ"], "Ɉ", "Ɋ", "Ɍ", "Ɏ", "Ͱ", "Ͳ", "Ͷ", "Ϳ", "Ά", ["Έ", "Ί"], "Ό", ["Ύ", "Ώ"], ["Α", "Ρ"], ["Σ", "Ϋ"], "Ϗ", ["ϒ", "ϔ"], "Ϙ", "Ϛ", "Ϝ", "Ϟ", "Ϡ", "Ϣ", "Ϥ", "Ϧ", "Ϩ", "Ϫ", "Ϭ", "Ϯ", "ϴ", "Ϸ", ["Ϲ", "Ϻ"], ["Ͻ", "Я"], "Ѡ", "Ѣ", "Ѥ", "Ѧ", "Ѩ", "Ѫ", "Ѭ", "Ѯ", "Ѱ", "Ѳ", "Ѵ", "Ѷ", "Ѹ", "Ѻ", "Ѽ", "Ѿ", "Ҁ", "Ҋ", "Ҍ", "Ҏ", "Ґ", "Ғ", "Ҕ", "Җ", "Ҙ", "Қ", "Ҝ", "Ҟ", "Ҡ", "Ң", "Ҥ", "Ҧ", "Ҩ", "Ҫ", "Ҭ", "Ү", "Ұ", "Ҳ", "Ҵ", "Ҷ", "Ҹ", "Һ", "Ҽ", "Ҿ", ["Ӏ", "Ӂ"], "Ӄ", "Ӆ", "Ӈ", "Ӊ", "Ӌ", "Ӎ", "Ӑ", "Ӓ", "Ӕ", "Ӗ", "Ә", "Ӛ", "Ӝ", "Ӟ", "Ӡ", "Ӣ", "Ӥ", "Ӧ", "Ө", "Ӫ", "Ӭ", "Ӯ", "Ӱ", "Ӳ", "Ӵ", "Ӷ", "Ӹ", "Ӻ", "Ӽ", "Ӿ", "Ԁ", "Ԃ", "Ԅ", "Ԇ", "Ԉ", "Ԋ", "Ԍ", "Ԏ", "Ԑ", "Ԓ", "Ԕ", "Ԗ", "Ԙ", "Ԛ", "Ԝ", "Ԟ", "Ԡ", "Ԣ", "Ԥ", "Ԧ", "Ԩ", "Ԫ", "Ԭ", "Ԯ", ["Ա", "Ֆ"], ["Ⴀ", "Ⴥ"], "Ⴧ", "Ⴭ", ["Ꭰ", "Ᏽ"], ["Ა", "Ჺ"], ["Ჽ", "Ჿ"], "Ḁ", "Ḃ", "Ḅ", "Ḇ", "Ḉ", "Ḋ", "Ḍ", "Ḏ", "Ḑ", "Ḓ", "Ḕ", "Ḗ", "Ḙ", "Ḛ", "Ḝ", "Ḟ", "Ḡ", "Ḣ", "Ḥ", "Ḧ", "Ḩ", "Ḫ", "Ḭ", "Ḯ", "Ḱ", "Ḳ", "Ḵ", "Ḷ", "Ḹ", "Ḻ", "Ḽ", "Ḿ", "Ṁ", "Ṃ", "Ṅ", "Ṇ", "Ṉ", "Ṋ", "Ṍ", "Ṏ", "Ṑ", "Ṓ", "Ṕ", "Ṗ", "Ṙ", "Ṛ", "Ṝ", "Ṟ", "Ṡ", "Ṣ", "Ṥ", "Ṧ", "Ṩ", "Ṫ", "Ṭ", "Ṯ", "Ṱ", "Ṳ", "Ṵ", "Ṷ", "Ṹ", "Ṻ", "Ṽ", "Ṿ", "Ẁ", "Ẃ", "Ẅ", "Ẇ", "Ẉ", "Ẋ", "Ẍ", "Ẏ", "Ẑ", "Ẓ", "Ẕ", "ẞ", "Ạ", "Ả", "Ấ", "Ầ", "Ẩ", "Ẫ", "Ậ", "Ắ", "Ằ", "Ẳ", "Ẵ", "Ặ", "Ẹ", "Ẻ", "Ẽ", "Ế", "Ề", "Ể", "Ễ", "Ệ", "Ỉ", "Ị", "Ọ", "Ỏ", "Ố", "Ồ", "Ổ", "Ỗ", "Ộ", "Ớ", "Ờ", "Ở", "Ỡ", "Ợ", "Ụ", "Ủ", "Ứ", "Ừ", "Ử", "Ữ", "Ự", "Ỳ", "Ỵ", "Ỷ", "Ỹ", "Ỻ", "Ỽ", "Ỿ", ["Ἀ", "Ἇ"], ["Ἐ", "Ἕ"], ["Ἠ", "Ἧ"], ["Ἰ", "Ἷ"], ["Ὀ", "Ὅ"], "Ὑ", "Ὓ", "Ὕ", "Ὗ", ["Ὠ", "Ὧ"], ["Ᾰ", "Ά"], ["Ὲ", "Ή"], ["Ῐ", "Ί"], ["Ῠ", "Ῥ"], ["Ὸ", "Ώ"], "ℂ", "ℇ", ["ℋ", "ℍ"], ["ℐ", "ℒ"], "ℕ", ["ℙ", "ℝ"], "ℤ", "Ω", "ℨ", ["K", "ℭ"], ["ℰ", "ℳ"], ["ℾ", "ℿ"], "ⅅ", "Ↄ", ["Ⰰ", "Ⱞ"], "Ⱡ", ["Ɫ", "Ɽ"], "Ⱨ", "Ⱪ", "Ⱬ", ["Ɑ", "Ɒ"], "Ⱳ", "Ⱶ", ["Ȿ", "Ⲁ"], "Ⲃ", "Ⲅ", "Ⲇ", "Ⲉ", "Ⲋ", "Ⲍ", "Ⲏ", "Ⲑ", "Ⲓ", "Ⲕ", "Ⲗ", "Ⲙ", "Ⲛ", "Ⲝ", "Ⲟ", "Ⲡ", "Ⲣ", "Ⲥ", "Ⲧ", "Ⲩ", "Ⲫ", "Ⲭ", "Ⲯ", "Ⲱ", "Ⲳ", "Ⲵ", "Ⲷ", "Ⲹ", "Ⲻ", "Ⲽ", "Ⲿ", "Ⳁ", "Ⳃ", "Ⳅ", "Ⳇ", "Ⳉ", "Ⳋ", "Ⳍ", "Ⳏ", "Ⳑ", "Ⳓ", "Ⳕ", "Ⳗ", "Ⳙ", "Ⳛ", "Ⳝ", "Ⳟ", "Ⳡ", "Ⳣ", "Ⳬ", "Ⳮ", "Ⳳ", "Ꙁ", "Ꙃ", "Ꙅ", "Ꙇ", "Ꙉ", "Ꙋ", "Ꙍ", "Ꙏ", "Ꙑ", "Ꙓ", "Ꙕ", "Ꙗ", "Ꙙ", "Ꙛ", "Ꙝ", "Ꙟ", "Ꙡ", "Ꙣ", "Ꙥ", "Ꙧ", "Ꙩ", "Ꙫ", "Ꙭ", "Ꚁ", "Ꚃ", "Ꚅ", "Ꚇ", "Ꚉ", "Ꚋ", "Ꚍ", "Ꚏ", "Ꚑ", "Ꚓ", "Ꚕ", "Ꚗ", "Ꚙ", "Ꚛ", "Ꜣ", "Ꜥ", "Ꜧ", "Ꜩ", "Ꜫ", "Ꜭ", "Ꜯ", "Ꜳ", "Ꜵ", "Ꜷ", "Ꜹ", "Ꜻ", "Ꜽ", "Ꜿ", "Ꝁ", "Ꝃ", "Ꝅ", "Ꝇ", "Ꝉ", "Ꝋ", "Ꝍ", "Ꝏ", "Ꝑ", "Ꝓ", "Ꝕ", "Ꝗ", "Ꝙ", "Ꝛ", "Ꝝ", "Ꝟ", "Ꝡ", "Ꝣ", "Ꝥ", "Ꝧ", "Ꝩ", "Ꝫ", "Ꝭ", "Ꝯ", "Ꝺ", "Ꝼ", ["Ᵹ", "Ꝿ"], "Ꞁ", "Ꞃ", "Ꞅ", "Ꞇ", "Ꞌ", "Ɥ", "Ꞑ", "Ꞓ", "Ꞗ", "Ꞙ", "Ꞛ", "Ꞝ", "Ꞟ", "Ꞡ", "Ꞣ", "Ꞥ", "Ꞧ", "Ꞩ", ["Ɦ", "Ɪ"], ["Ʞ", "Ꞵ"], "Ꞷ", "Ꞹ", ["A", "Z"]], false, false), peg$c105 = /^[a-z\xB5\xDF-\xF6\xF8-\xFF\u0101\u0103\u0105\u0107\u0109\u010B\u010D\u010F\u0111\u0113\u0115\u0117\u0119\u011B\u011D\u011F\u0121\u0123\u0125\u0127\u0129\u012B\u012D\u012F\u0131\u0133\u0135\u0137-\u0138\u013A\u013C\u013E\u0140\u0142\u0144\u0146\u0148-\u0149\u014B\u014D\u014F\u0151\u0153\u0155\u0157\u0159\u015B\u015D\u015F\u0161\u0163\u0165\u0167\u0169\u016B\u016D\u016F\u0171\u0173\u0175\u0177\u017A\u017C\u017E-\u0180\u0183\u0185\u0188\u018C-\u018D\u0192\u0195\u0199-\u019B\u019E\u01A1\u01A3\u01A5\u01A8\u01AA-\u01AB\u01AD\u01B0\u01B4\u01B6\u01B9-\u01BA\u01BD-\u01BF\u01C6\u01C9\u01CC\u01CE\u01D0\u01D2\u01D4\u01D6\u01D8\u01DA\u01DC-\u01DD\u01DF\u01E1\u01E3\u01E5\u01E7\u01E9\u01EB\u01ED\u01EF-\u01F0\u01F3\u01F5\u01F9\u01FB\u01FD\u01FF\u0201\u0203\u0205\u0207\u0209\u020B\u020D\u020F\u0211\u0213\u0215\u0217\u0219\u021B\u021D\u021F\u0221\u0223\u0225\u0227\u0229\u022B\u022D\u022F\u0231\u0233-\u0239\u023C\u023F-\u0240\u0242\u0247\u0249\u024B\u024D\u024F-\u0293\u0295-\u02AF\u0371\u0373\u0377\u037B-\u037D\u0390\u03AC-\u03CE\u03D0-\u03D1\u03D5-\u03D7\u03D9\u03DB\u03DD\u03DF\u03E1\u03E3\u03E5\u03E7\u03E9\u03EB\u03ED\u03EF-\u03F3\u03F5\u03F8\u03FB-\u03FC\u0430-\u045F\u0461\u0463\u0465\u0467\u0469\u046B\u046D\u046F\u0471\u0473\u0475\u0477\u0479\u047B\u047D\u047F\u0481\u048B\u048D\u048F\u0491\u0493\u0495\u0497\u0499\u049B\u049D\u049F\u04A1\u04A3\u04A5\u04A7\u04A9\u04AB\u04AD\u04AF\u04B1\u04B3\u04B5\u04B7\u04B9\u04BB\u04BD\u04BF\u04C2\u04C4\u04C6\u04C8\u04CA\u04CC\u04CE-\u04CF\u04D1\u04D3\u04D5\u04D7\u04D9\u04DB\u04DD\u04DF\u04E1\u04E3\u04E5\u04E7\u04E9\u04EB\u04ED\u04EF\u04F1\u04F3\u04F5\u04F7\u04F9\u04FB\u04FD\u04FF\u0501\u0503\u0505\u0507\u0509\u050B\u050D\u050F\u0511\u0513\u0515\u0517\u0519\u051B\u051D\u051F\u0521\u0523\u0525\u0527\u0529\u052B\u052D\u052F\u0560-\u0588\u10D0-\u10FA\u10FD-\u10FF\u13F8-\u13FD\u1C80-\u1C88\u1D00-\u1D2B\u1D6B-\u1D77\u1D79-\u1D9A\u1E01\u1E03\u1E05\u1E07\u1E09\u1E0B\u1E0D\u1E0F\u1E11\u1E13\u1E15\u1E17\u1E19\u1E1B\u1E1D\u1E1F\u1E21\u1E23\u1E25\u1E27\u1E29\u1E2B\u1E2D\u1E2F\u1E31\u1E33\u1E35\u1E37\u1E39\u1E3B\u1E3D\u1E3F\u1E41\u1E43\u1E45\u1E47\u1E49\u1E4B\u1E4D\u1E4F\u1E51\u1E53\u1E55\u1E57\u1E59\u1E5B\u1E5D\u1E5F\u1E61\u1E63\u1E65\u1E67\u1E69\u1E6B\u1E6D\u1E6F\u1E71\u1E73\u1E75\u1E77\u1E79\u1E7B\u1E7D\u1E7F\u1E81\u1E83\u1E85\u1E87\u1E89\u1E8B\u1E8D\u1E8F\u1E91\u1E93\u1E95-\u1E9D\u1E9F\u1EA1\u1EA3\u1EA5\u1EA7\u1EA9\u1EAB\u1EAD\u1EAF\u1EB1\u1EB3\u1EB5\u1EB7\u1EB9\u1EBB\u1EBD\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1EC9\u1ECB\u1ECD\u1ECF\u1ED1\u1ED3\u1ED5\u1ED7\u1ED9\u1EDB\u1EDD\u1EDF\u1EE1\u1EE3\u1EE5\u1EE7\u1EE9\u1EEB\u1EED\u1EEF\u1EF1\u1EF3\u1EF5\u1EF7\u1EF9\u1EFB\u1EFD\u1EFF-\u1F07\u1F10-\u1F15\u1F20-\u1F27\u1F30-\u1F37\u1F40-\u1F45\u1F50-\u1F57\u1F60-\u1F67\u1F70-\u1F7D\u1F80-\u1F87\u1F90-\u1F97\u1FA0-\u1FA7\u1FB0-\u1FB4\u1FB6-\u1FB7\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FC7\u1FD0-\u1FD3\u1FD6-\u1FD7\u1FE0-\u1FE7\u1FF2-\u1FF4\u1FF6-\u1FF7\u210A\u210E-\u210F\u2113\u212F\u2134\u2139\u213C-\u213D\u2146-\u2149\u214E\u2184\u2C30-\u2C5E\u2C61\u2C65-\u2C66\u2C68\u2C6A\u2C6C\u2C71\u2C73-\u2C74\u2C76-\u2C7B\u2C81\u2C83\u2C85\u2C87\u2C89\u2C8B\u2C8D\u2C8F\u2C91\u2C93\u2C95\u2C97\u2C99\u2C9B\u2C9D\u2C9F\u2CA1\u2CA3\u2CA5\u2CA7\u2CA9\u2CAB\u2CAD\u2CAF\u2CB1\u2CB3\u2CB5\u2CB7\u2CB9\u2CBB\u2CBD\u2CBF\u2CC1\u2CC3\u2CC5\u2CC7\u2CC9\u2CCB\u2CCD\u2CCF\u2CD1\u2CD3\u2CD5\u2CD7\u2CD9\u2CDB\u2CDD\u2CDF\u2CE1\u2CE3-\u2CE4\u2CEC\u2CEE\u2CF3\u2D00-\u2D25\u2D27\u2D2D\uA641\uA643\uA645\uA647\uA649\uA64B\uA64D\uA64F\uA651\uA653\uA655\uA657\uA659\uA65B\uA65D\uA65F\uA661\uA663\uA665\uA667\uA669\uA66B\uA66D\uA681\uA683\uA685\uA687\uA689\uA68B\uA68D\uA68F\uA691\uA693\uA695\uA697\uA699\uA69B\uA723\uA725\uA727\uA729\uA72B\uA72D\uA72F-\uA731\uA733\uA735\uA737\uA739\uA73B\uA73D\uA73F\uA741\uA743\uA745\uA747\uA749\uA74B\uA74D\uA74F\uA751\uA753\uA755\uA757\uA759\uA75B\uA75D\uA75F\uA761\uA763\uA765\uA767\uA769\uA76B\uA76D\uA76F\uA771-\uA778\uA77A\uA77C\uA77F\uA781\uA783\uA785\uA787\uA78C\uA78E\uA791\uA793-\uA795\uA797\uA799\uA79B\uA79D\uA79F\uA7A1\uA7A3\uA7A5\uA7A7\uA7A9\uA7AF\uA7B5\uA7B7\uA7B9\uA7FA\uAB30-\uAB5A\uAB60-\uAB65\uAB70-\uABBF\uFB00-\uFB06\uFB13-\uFB17\uFF41-\uFF5A]/, peg$c106 = peg$classExpectation([["a", "z"], "µ", ["ß", "ö"], ["ø", "ÿ"], "ā", "ă", "ą", "ć", "ĉ", "ċ", "č", "ď", "đ", "ē", "ĕ", "ė", "ę", "ě", "ĝ", "ğ", "ġ", "ģ", "ĥ", "ħ", "ĩ", "ī", "ĭ", "į", "ı", "ij", "ĵ", ["ķ", "ĸ"], "ĺ", "ļ", "ľ", "ŀ", "ł", "ń", "ņ", ["ň", "ʼn"], "ŋ", "ō", "ŏ", "ő", "œ", "ŕ", "ŗ", "ř", "ś", "ŝ", "ş", "š", "ţ", "ť", "ŧ", "ũ", "ū", "ŭ", "ů", "ű", "ų", "ŵ", "ŷ", "ź", "ż", ["ž", "ƀ"], "ƃ", "ƅ", "ƈ", ["ƌ", "ƍ"], "ƒ", "ƕ", ["ƙ", "ƛ"], "ƞ", "ơ", "ƣ", "ƥ", "ƨ", ["ƪ", "ƫ"], "ƭ", "ư", "ƴ", "ƶ", ["ƹ", "ƺ"], ["ƽ", "ƿ"], "dž", "lj", "nj", "ǎ", "ǐ", "ǒ", "ǔ", "ǖ", "ǘ", "ǚ", ["ǜ", "ǝ"], "ǟ", "ǡ", "ǣ", "ǥ", "ǧ", "ǩ", "ǫ", "ǭ", ["ǯ", "ǰ"], "dz", "ǵ", "ǹ", "ǻ", "ǽ", "ǿ", "ȁ", "ȃ", "ȅ", "ȇ", "ȉ", "ȋ", "ȍ", "ȏ", "ȑ", "ȓ", "ȕ", "ȗ", "ș", "ț", "ȝ", "ȟ", "ȡ", "ȣ", "ȥ", "ȧ", "ȩ", "ȫ", "ȭ", "ȯ", "ȱ", ["ȳ", "ȹ"], "ȼ", ["ȿ", "ɀ"], "ɂ", "ɇ", "ɉ", "ɋ", "ɍ", ["ɏ", "ʓ"], ["ʕ", "ʯ"], "ͱ", "ͳ", "ͷ", ["ͻ", "ͽ"], "ΐ", ["ά", "ώ"], ["ϐ", "ϑ"], ["ϕ", "ϗ"], "ϙ", "ϛ", "ϝ", "ϟ", "ϡ", "ϣ", "ϥ", "ϧ", "ϩ", "ϫ", "ϭ", ["ϯ", "ϳ"], "ϵ", "ϸ", ["ϻ", "ϼ"], ["а", "џ"], "ѡ", "ѣ", "ѥ", "ѧ", "ѩ", "ѫ", "ѭ", "ѯ", "ѱ", "ѳ", "ѵ", "ѷ", "ѹ", "ѻ", "ѽ", "ѿ", "ҁ", "ҋ", "ҍ", "ҏ", "ґ", "ғ", "ҕ", "җ", "ҙ", "қ", "ҝ", "ҟ", "ҡ", "ң", "ҥ", "ҧ", "ҩ", "ҫ", "ҭ", "ү", "ұ", "ҳ", "ҵ", "ҷ", "ҹ", "һ", "ҽ", "ҿ", "ӂ", "ӄ", "ӆ", "ӈ", "ӊ", "ӌ", ["ӎ", "ӏ"], "ӑ", "ӓ", "ӕ", "ӗ", "ә", "ӛ", "ӝ", "ӟ", "ӡ", "ӣ", "ӥ", "ӧ", "ө", "ӫ", "ӭ", "ӯ", "ӱ", "ӳ", "ӵ", "ӷ", "ӹ", "ӻ", "ӽ", "ӿ", "ԁ", "ԃ", "ԅ", "ԇ", "ԉ", "ԋ", "ԍ", "ԏ", "ԑ", "ԓ", "ԕ", "ԗ", "ԙ", "ԛ", "ԝ", "ԟ", "ԡ", "ԣ", "ԥ", "ԧ", "ԩ", "ԫ", "ԭ", "ԯ", ["ՠ", "ֈ"], ["ა", "ჺ"], ["ჽ", "ჿ"], ["ᏸ", "ᏽ"], ["ᲀ", "ᲈ"], ["ᴀ", "ᴫ"], ["ᵫ", "ᵷ"], ["ᵹ", "ᶚ"], "ḁ", "ḃ", "ḅ", "ḇ", "ḉ", "ḋ", "ḍ", "ḏ", "ḑ", "ḓ", "ḕ", "ḗ", "ḙ", "ḛ", "ḝ", "ḟ", "ḡ", "ḣ", "ḥ", "ḧ", "ḩ", "ḫ", "ḭ", "ḯ", "ḱ", "ḳ", "ḵ", "ḷ", "ḹ", "ḻ", "ḽ", "ḿ", "ṁ", "ṃ", "ṅ", "ṇ", "ṉ", "ṋ", "ṍ", "ṏ", "ṑ", "ṓ", "ṕ", "ṗ", "ṙ", "ṛ", "ṝ", "ṟ", "ṡ", "ṣ", "ṥ", "ṧ", "ṩ", "ṫ", "ṭ", "ṯ", "ṱ", "ṳ", "ṵ", "ṷ", "ṹ", "ṻ", "ṽ", "ṿ", "ẁ", "ẃ", "ẅ", "ẇ", "ẉ", "ẋ", "ẍ", "ẏ", "ẑ", "ẓ", ["ẕ", "ẝ"], "ẟ", "ạ", "ả", "ấ", "ầ", "ẩ", "ẫ", "ậ", "ắ", "ằ", "ẳ", "ẵ", "ặ", "ẹ", "ẻ", "ẽ", "ế", "ề", "ể", "ễ", "ệ", "ỉ", "ị", "ọ", "ỏ", "ố", "ồ", "ổ", "ỗ", "ộ", "ớ", "ờ", "ở", "ỡ", "ợ", "ụ", "ủ", "ứ", "ừ", "ử", "ữ", "ự", "ỳ", "ỵ", "ỷ", "ỹ", "ỻ", "ỽ", ["ỿ", "ἇ"], ["ἐ", "ἕ"], ["ἠ", "ἧ"], ["ἰ", "ἷ"], ["ὀ", "ὅ"], ["ὐ", "ὗ"], ["ὠ", "ὧ"], ["ὰ", "ώ"], ["ᾀ", "ᾇ"], ["ᾐ", "ᾗ"], ["ᾠ", "ᾧ"], ["ᾰ", "ᾴ"], ["ᾶ", "ᾷ"], "ι", ["ῂ", "ῄ"], ["ῆ", "ῇ"], ["ῐ", "ΐ"], ["ῖ", "ῗ"], ["ῠ", "ῧ"], ["ῲ", "ῴ"], ["ῶ", "ῷ"], "ℊ", ["ℎ", "ℏ"], "ℓ", "ℯ", "ℴ", "ℹ", ["ℼ", "ℽ"], ["ⅆ", "ⅉ"], "ⅎ", "ↄ", ["ⰰ", "ⱞ"], "ⱡ", ["ⱥ", "ⱦ"], "ⱨ", "ⱪ", "ⱬ", "ⱱ", ["ⱳ", "ⱴ"], ["ⱶ", "ⱻ"], "ⲁ", "ⲃ", "ⲅ", "ⲇ", "ⲉ", "ⲋ", "ⲍ", "ⲏ", "ⲑ", "ⲓ", "ⲕ", "ⲗ", "ⲙ", "ⲛ", "ⲝ", "ⲟ", "ⲡ", "ⲣ", "ⲥ", "ⲧ", "ⲩ", "ⲫ", "ⲭ", "ⲯ", "ⲱ", "ⲳ", "ⲵ", "ⲷ", "ⲹ", "ⲻ", "ⲽ", "ⲿ", "ⳁ", "ⳃ", "ⳅ", "ⳇ", "ⳉ", "ⳋ", "ⳍ", "ⳏ", "ⳑ", "ⳓ", "ⳕ", "ⳗ", "ⳙ", "ⳛ", "ⳝ", "ⳟ", "ⳡ", ["ⳣ", "ⳤ"], "ⳬ", "ⳮ", "ⳳ", ["ⴀ", "ⴥ"], "ⴧ", "ⴭ", "ꙁ", "ꙃ", "ꙅ", "ꙇ", "ꙉ", "ꙋ", "ꙍ", "ꙏ", "ꙑ", "ꙓ", "ꙕ", "ꙗ", "ꙙ", "ꙛ", "ꙝ", "ꙟ", "ꙡ", "ꙣ", "ꙥ", "ꙧ", "ꙩ", "ꙫ", "ꙭ", "ꚁ", "ꚃ", "ꚅ", "ꚇ", "ꚉ", "ꚋ", "ꚍ", "ꚏ", "ꚑ", "ꚓ", "ꚕ", "ꚗ", "ꚙ", "ꚛ", "ꜣ", "ꜥ", "ꜧ", "ꜩ", "ꜫ", "ꜭ", ["ꜯ", "ꜱ"], "ꜳ", "ꜵ", "ꜷ", "ꜹ", "ꜻ", "ꜽ", "ꜿ", "ꝁ", "ꝃ", "ꝅ", "ꝇ", "ꝉ", "ꝋ", "ꝍ", "ꝏ", "ꝑ", "ꝓ", "ꝕ", "ꝗ", "ꝙ", "ꝛ", "ꝝ", "ꝟ", "ꝡ", "ꝣ", "ꝥ", "ꝧ", "ꝩ", "ꝫ", "ꝭ", "ꝯ", ["ꝱ", "ꝸ"], "ꝺ", "ꝼ", "ꝿ", "ꞁ", "ꞃ", "ꞅ", "ꞇ", "ꞌ", "ꞎ", "ꞑ", ["ꞓ", "ꞕ"], "ꞗ", "ꞙ", "ꞛ", "ꞝ", "ꞟ", "ꞡ", "ꞣ", "ꞥ", "ꞧ", "ꞩ", "ꞯ", "ꞵ", "ꞷ", "ꞹ", "ꟺ", ["ꬰ", "ꭚ"], ["ꭠ", "ꭥ"], ["ꭰ", "ꮿ"], ["ff", "st"], ["ﬓ", "ﬗ"], ["a", "z"]], false, false), peg$c107 = /^[\u01C5\u01C8\u01CB\u01F2\u1F88-\u1F8F\u1F98-\u1F9F\u1FA8-\u1FAF\u1FBC\u1FCC\u1FFC]/, peg$c108 = peg$classExpectation(["Dž", "Lj", "Nj", "Dz", ["ᾈ", "ᾏ"], ["ᾘ", "ᾟ"], ["ᾨ", "ᾯ"], "ᾼ", "ῌ", "ῼ"], false, false), peg$c109 = /^[\u02B0-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0374\u037A\u0559\u0640\u06E5-\u06E6\u07F4-\u07F5\u07FA\u081A\u0824\u0828\u0971\u0E46\u0EC6\u10FC\u17D7\u1843\u1AA7\u1C78-\u1C7D\u1D2C-\u1D6A\u1D78\u1D9B-\u1DBF\u2071\u207F\u2090-\u209C\u2C7C-\u2C7D\u2D6F\u2E2F\u3005\u3031-\u3035\u303B\u309D-\u309E\u30FC-\u30FE\uA015\uA4F8-\uA4FD\uA60C\uA67F\uA69C-\uA69D\uA717-\uA71F\uA770\uA788\uA7F8-\uA7F9\uA9CF\uA9E6\uAA70\uAADD\uAAF3-\uAAF4\uAB5C-\uAB5F\uFF70\uFF9E-\uFF9F]/, peg$c110 = peg$classExpectation([["ʰ", "ˁ"], ["ˆ", "ˑ"], ["ˠ", "ˤ"], "ˬ", "ˮ", "ʹ", "ͺ", "ՙ", "ـ", ["ۥ", "ۦ"], ["ߴ", "ߵ"], "ߺ", "ࠚ", "ࠤ", "ࠨ", "ॱ", "ๆ", "ໆ", "ჼ", "ៗ", "ᡃ", "ᪧ", ["ᱸ", "ᱽ"], ["ᴬ", "ᵪ"], "ᵸ", ["ᶛ", "ᶿ"], "ⁱ", "ⁿ", ["ₐ", "ₜ"], ["ⱼ", "ⱽ"], "ⵯ", "ⸯ", "々", ["〱", "〵"], "〻", ["ゝ", "ゞ"], ["ー", "ヾ"], "ꀕ", ["ꓸ", "ꓽ"], "ꘌ", "ꙿ", ["ꚜ", "ꚝ"], ["ꜗ", "ꜟ"], "ꝰ", "ꞈ", ["ꟸ", "ꟹ"], "ꧏ", "ꧦ", "ꩰ", "ꫝ", ["ꫳ", "ꫴ"], ["ꭜ", "ꭟ"], "ー", ["゙", "゚"]], false, false), peg$c111 = /^[\xAA\xBA\u01BB\u01C0-\u01C3\u0294\u05D0-\u05EA\u05EF-\u05F2\u0620-\u063F\u0641-\u064A\u066E-\u066F\u0671-\u06D3\u06D5\u06EE-\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u0800-\u0815\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0972-\u0980\u0985-\u098C\u098F-\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC-\u09DD\u09DF-\u09E1\u09F0-\u09F1\u09FC\u0A05-\u0A0A\u0A0F-\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32-\u0A33\u0A35-\u0A36\u0A38-\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2-\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0-\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F-\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32-\u0B33\u0B35-\u0B39\u0B3D\u0B5C-\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99-\u0B9A\u0B9C\u0B9E-\u0B9F\u0BA3-\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60-\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0-\u0CE1\u0CF1-\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32-\u0E33\u0E40-\u0E45\u0E81-\u0E82\u0E84\u0E87-\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA-\u0EAB\u0EAD-\u0EB0\u0EB2-\u0EB3\u0EBD\u0EC0-\u0EC4\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065-\u1066\u106E-\u1070\u1075-\u1081\u108E\u1100-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17DC\u1820-\u1842\u1844-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE-\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C77\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5-\u1CF6\u2135-\u2138\u2D30-\u2D67\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3006\u303C\u3041-\u3096\u309F\u30A1-\u30FA\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEF\uA000-\uA014\uA016-\uA48C\uA4D0-\uA4F7\uA500-\uA60B\uA610-\uA61F\uA62A-\uA62B\uA66E\uA6A0-\uA6E5\uA78F\uA7F7\uA7FB-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD-\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9E0-\uA9E4\uA9E7-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA6F\uAA71-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5-\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADC\uAAE0-\uAAEA\uAAF2\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40-\uFB41\uFB43-\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF66-\uFF6F\uFF71-\uFF9D\uFFA0-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/, peg$c112 = peg$classExpectation(["ª", "º", "ƻ", ["ǀ", "ǃ"], "ʔ", ["א", "ת"], ["ׯ", "ײ"], ["ؠ", "ؿ"], ["ف", "ي"], ["ٮ", "ٯ"], ["ٱ", "ۓ"], "ە", ["ۮ", "ۯ"], ["ۺ", "ۼ"], "ۿ", "ܐ", ["ܒ", "ܯ"], ["ݍ", "ޥ"], "ޱ", ["ߊ", "ߪ"], ["ࠀ", "ࠕ"], ["ࡀ", "ࡘ"], ["ࡠ", "ࡪ"], ["ࢠ", "ࢴ"], ["ࢶ", "ࢽ"], ["ऄ", "ह"], "ऽ", "ॐ", ["क़", "ॡ"], ["ॲ", "ঀ"], ["অ", "ঌ"], ["এ", "ঐ"], ["ও", "ন"], ["প", "র"], "ল", ["শ", "হ"], "ঽ", "ৎ", ["ড়", "ঢ়"], ["য়", "ৡ"], ["ৰ", "ৱ"], "ৼ", ["ਅ", "ਊ"], ["ਏ", "ਐ"], ["ਓ", "ਨ"], ["ਪ", "ਰ"], ["ਲ", "ਲ਼"], ["ਵ", "ਸ਼"], ["ਸ", "ਹ"], ["ਖ਼", "ੜ"], "ਫ਼", ["ੲ", "ੴ"], ["અ", "ઍ"], ["એ", "ઑ"], ["ઓ", "ન"], ["પ", "ર"], ["લ", "ળ"], ["વ", "હ"], "ઽ", "ૐ", ["ૠ", "ૡ"], "ૹ", ["ଅ", "ଌ"], ["ଏ", "ଐ"], ["ଓ", "ନ"], ["ପ", "ର"], ["ଲ", "ଳ"], ["ଵ", "ହ"], "ଽ", ["ଡ଼", "ଢ଼"], ["ୟ", "ୡ"], "ୱ", "ஃ", ["அ", "ஊ"], ["எ", "ஐ"], ["ஒ", "க"], ["ங", "ச"], "ஜ", ["ஞ", "ட"], ["ண", "த"], ["ந", "ப"], ["ம", "ஹ"], "ௐ", ["అ", "ఌ"], ["ఎ", "ఐ"], ["ఒ", "న"], ["ప", "హ"], "ఽ", ["ౘ", "ౚ"], ["ౠ", "ౡ"], "ಀ", ["ಅ", "ಌ"], ["ಎ", "ಐ"], ["ಒ", "ನ"], ["ಪ", "ಳ"], ["ವ", "ಹ"], "ಽ", "ೞ", ["ೠ", "ೡ"], ["ೱ", "ೲ"], ["അ", "ഌ"], ["എ", "ഐ"], ["ഒ", "ഺ"], "ഽ", "ൎ", ["ൔ", "ൖ"], ["ൟ", "ൡ"], ["ൺ", "ൿ"], ["අ", "ඖ"], ["ක", "න"], ["ඳ", "ර"], "ල", ["ව", "ෆ"], ["ก", "ะ"], ["า", "ำ"], ["เ", "ๅ"], ["ກ", "ຂ"], "ຄ", ["ງ", "ຈ"], "ຊ", "ຍ", ["ດ", "ທ"], ["ນ", "ຟ"], ["ມ", "ຣ"], "ລ", "ວ", ["ສ", "ຫ"], ["ອ", "ະ"], ["າ", "ຳ"], "ຽ", ["ເ", "ໄ"], ["ໜ", "ໟ"], "ༀ", ["ཀ", "ཇ"], ["ཉ", "ཬ"], ["ྈ", "ྌ"], ["က", "ဪ"], "ဿ", ["ၐ", "ၕ"], ["ၚ", "ၝ"], "ၡ", ["ၥ", "ၦ"], ["ၮ", "ၰ"], ["ၵ", "ႁ"], "ႎ", ["ᄀ", "ቈ"], ["ቊ", "ቍ"], ["ቐ", "ቖ"], "ቘ", ["ቚ", "ቝ"], ["በ", "ኈ"], ["ኊ", "ኍ"], ["ነ", "ኰ"], ["ኲ", "ኵ"], ["ኸ", "ኾ"], "ዀ", ["ዂ", "ዅ"], ["ወ", "ዖ"], ["ዘ", "ጐ"], ["ጒ", "ጕ"], ["ጘ", "ፚ"], ["ᎀ", "ᎏ"], ["ᐁ", "ᙬ"], ["ᙯ", "ᙿ"], ["ᚁ", "ᚚ"], ["ᚠ", "ᛪ"], ["ᛱ", "ᛸ"], ["ᜀ", "ᜌ"], ["ᜎ", "ᜑ"], ["ᜠ", "ᜱ"], ["ᝀ", "ᝑ"], ["ᝠ", "ᝬ"], ["ᝮ", "ᝰ"], ["ក", "ឳ"], "ៜ", ["ᠠ", "ᡂ"], ["ᡄ", "ᡸ"], ["ᢀ", "ᢄ"], ["ᢇ", "ᢨ"], "ᢪ", ["ᢰ", "ᣵ"], ["ᤀ", "ᤞ"], ["ᥐ", "ᥭ"], ["ᥰ", "ᥴ"], ["ᦀ", "ᦫ"], ["ᦰ", "ᧉ"], ["ᨀ", "ᨖ"], ["ᨠ", "ᩔ"], ["ᬅ", "ᬳ"], ["ᭅ", "ᭋ"], ["ᮃ", "ᮠ"], ["ᮮ", "ᮯ"], ["ᮺ", "ᯥ"], ["ᰀ", "ᰣ"], ["ᱍ", "ᱏ"], ["ᱚ", "ᱷ"], ["ᳩ", "ᳬ"], ["ᳮ", "ᳱ"], ["ᳵ", "ᳶ"], ["ℵ", "ℸ"], ["ⴰ", "ⵧ"], ["ⶀ", "ⶖ"], ["ⶠ", "ⶦ"], ["ⶨ", "ⶮ"], ["ⶰ", "ⶶ"], ["ⶸ", "ⶾ"], ["ⷀ", "ⷆ"], ["ⷈ", "ⷎ"], ["ⷐ", "ⷖ"], ["ⷘ", "ⷞ"], "〆", "〼", ["ぁ", "ゖ"], "ゟ", ["ァ", "ヺ"], "ヿ", ["ㄅ", "ㄯ"], ["ㄱ", "ㆎ"], ["ㆠ", "ㆺ"], ["ㇰ", "ㇿ"], ["㐀", "䶵"], ["一", "鿯"], ["ꀀ", "ꀔ"], ["ꀖ", "ꒌ"], ["ꓐ", "ꓷ"], ["ꔀ", "ꘋ"], ["ꘐ", "ꘟ"], ["ꘪ", "ꘫ"], "ꙮ", ["ꚠ", "ꛥ"], "ꞏ", "ꟷ", ["ꟻ", "ꠁ"], ["ꠃ", "ꠅ"], ["ꠇ", "ꠊ"], ["ꠌ", "ꠢ"], ["ꡀ", "ꡳ"], ["ꢂ", "ꢳ"], ["ꣲ", "ꣷ"], "ꣻ", ["ꣽ", "ꣾ"], ["ꤊ", "ꤥ"], ["ꤰ", "ꥆ"], ["ꥠ", "ꥼ"], ["ꦄ", "ꦲ"], ["ꧠ", "ꧤ"], ["ꧧ", "ꧯ"], ["ꧺ", "ꧾ"], ["ꨀ", "ꨨ"], ["ꩀ", "ꩂ"], ["ꩄ", "ꩋ"], ["ꩠ", "ꩯ"], ["ꩱ", "ꩶ"], "ꩺ", ["ꩾ", "ꪯ"], "ꪱ", ["ꪵ", "ꪶ"], ["ꪹ", "ꪽ"], "ꫀ", "ꫂ", ["ꫛ", "ꫜ"], ["ꫠ", "ꫪ"], "ꫲ", ["ꬁ", "ꬆ"], ["ꬉ", "ꬎ"], ["ꬑ", "ꬖ"], ["ꬠ", "ꬦ"], ["ꬨ", "ꬮ"], ["ꯀ", "ꯢ"], ["가", "힣"], ["ힰ", "ퟆ"], ["ퟋ", "ퟻ"], ["豈", "舘"], ["並", "龎"], "יִ", ["ײַ", "ﬨ"], ["שׁ", "זּ"], ["טּ", "לּ"], "מּ", ["נּ", "סּ"], ["ףּ", "פּ"], ["צּ", "ﮱ"], ["ﯓ", "ﴽ"], ["ﵐ", "ﶏ"], ["ﶒ", "ﷇ"], ["ﷰ", "ﷻ"], ["ﹰ", "ﹴ"], ["ﹶ", "ﻼ"], ["ヲ", "ッ"], ["ア", "ン"], ["ᅠ", "ᄒ"], ["ᅡ", "ᅦ"], ["ᅧ", "ᅬ"], ["ᅭ", "ᅲ"], ["ᅳ", "ᅵ"]], false, false), peg$c113 = /^[\u16EE-\u16F0\u2160-\u2182\u2185-\u2188\u3007\u3021-\u3029\u3038-\u303A\uA6E6-\uA6EF]/, peg$c114 = peg$classExpectation([["ᛮ", "ᛰ"], ["Ⅰ", "ↂ"], ["ↅ", "ↈ"], "〇", ["〡", "〩"], ["〸", "〺"], ["ꛦ", "ꛯ"]], false, false), peg$c115 = /^[\u0300-\u036F\u0483-\u0487\u0591-\u05BD\u05BF\u05C1-\u05C2\u05C4-\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7-\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u07FD\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08D3-\u08E1\u08E3-\u0902\u093A\u093C\u0941-\u0948\u094D\u0951-\u0957\u0962-\u0963\u0981\u09BC\u09C1-\u09C4\u09CD\u09E2-\u09E3\u09FE\u0A01-\u0A02\u0A3C\u0A41-\u0A42\u0A47-\u0A48\u0A4B-\u0A4D\u0A51\u0A70-\u0A71\u0A75\u0A81-\u0A82\u0ABC\u0AC1-\u0AC5\u0AC7-\u0AC8\u0ACD\u0AE2-\u0AE3\u0AFA-\u0AFF\u0B01\u0B3C\u0B3F\u0B41-\u0B44\u0B4D\u0B56\u0B62-\u0B63\u0B82\u0BC0\u0BCD\u0C00\u0C04\u0C3E-\u0C40\u0C46-\u0C48\u0C4A-\u0C4D\u0C55-\u0C56\u0C62-\u0C63\u0C81\u0CBC\u0CBF\u0CC6\u0CCC-\u0CCD\u0CE2-\u0CE3\u0D00-\u0D01\u0D3B-\u0D3C\u0D41-\u0D44\u0D4D\u0D62-\u0D63\u0DCA\u0DD2-\u0DD4\u0DD6\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB-\u0EBC\u0EC8-\u0ECD\u0F18-\u0F19\u0F35\u0F37\u0F39\u0F71-\u0F7E\u0F80-\u0F84\u0F86-\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102D-\u1030\u1032-\u1037\u1039-\u103A\u103D-\u103E\u1058-\u1059\u105E-\u1060\u1071-\u1074\u1082\u1085-\u1086\u108D\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752-\u1753\u1772-\u1773\u17B4-\u17B5\u17B7-\u17BD\u17C6\u17C9-\u17D3\u17DD\u180B-\u180D\u1885-\u1886\u18A9\u1920-\u1922\u1927-\u1928\u1932\u1939-\u193B\u1A17-\u1A18\u1A1B\u1A56\u1A58-\u1A5E\u1A60\u1A62\u1A65-\u1A6C\u1A73-\u1A7C\u1A7F\u1AB0-\u1ABD\u1B00-\u1B03\u1B34\u1B36-\u1B3A\u1B3C\u1B42\u1B6B-\u1B73\u1B80-\u1B81\u1BA2-\u1BA5\u1BA8-\u1BA9\u1BAB-\u1BAD\u1BE6\u1BE8-\u1BE9\u1BED\u1BEF-\u1BF1\u1C2C-\u1C33\u1C36-\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE0\u1CE2-\u1CE8\u1CED\u1CF4\u1CF8-\u1CF9\u1DC0-\u1DF9\u1DFB-\u1DFF\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302D\u3099-\u309A\uA66F\uA674-\uA67D\uA69E-\uA69F\uA6F0-\uA6F1\uA802\uA806\uA80B\uA825-\uA826\uA8C4-\uA8C5\uA8E0-\uA8F1\uA8FF\uA926-\uA92D\uA947-\uA951\uA980-\uA982\uA9B3\uA9B6-\uA9B9\uA9BC\uA9E5\uAA29-\uAA2E\uAA31-\uAA32\uAA35-\uAA36\uAA43\uAA4C\uAA7C\uAAB0\uAAB2-\uAAB4\uAAB7-\uAAB8\uAABE-\uAABF\uAAC1\uAAEC-\uAAED\uAAF6\uABE5\uABE8\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F]/, peg$c116 = peg$classExpectation([["̀", "ͯ"], ["҃", "҇"], ["֑", "ֽ"], "ֿ", ["ׁ", "ׂ"], ["ׄ", "ׅ"], "ׇ", ["ؐ", "ؚ"], ["ً", "ٟ"], "ٰ", ["ۖ", "ۜ"], ["۟", "ۤ"], ["ۧ", "ۨ"], ["۪", "ۭ"], "ܑ", ["ܰ", "݊"], ["ަ", "ް"], ["߫", "߳"], "߽", ["ࠖ", "࠙"], ["ࠛ", "ࠣ"], ["ࠥ", "ࠧ"], ["ࠩ", "࠭"], ["࡙", "࡛"], ["࣓", "࣡"], ["ࣣ", "ं"], "ऺ", "़", ["ु", "ै"], "्", ["॑", "ॗ"], ["ॢ", "ॣ"], "ঁ", "়", ["ু", "ৄ"], "্", ["ৢ", "ৣ"], "৾", ["ਁ", "ਂ"], "਼", ["ੁ", "ੂ"], ["ੇ", "ੈ"], ["ੋ", "੍"], "ੑ", ["ੰ", "ੱ"], "ੵ", ["ઁ", "ં"], "઼", ["ુ", "ૅ"], ["ે", "ૈ"], "્", ["ૢ", "ૣ"], ["ૺ", "૿"], "ଁ", "଼", "ି", ["ୁ", "ୄ"], "୍", "ୖ", ["ୢ", "ୣ"], "ஂ", "ீ", "்", "ఀ", "ఄ", ["ా", "ీ"], ["ె", "ై"], ["ొ", "్"], ["ౕ", "ౖ"], ["ౢ", "ౣ"], "ಁ", "಼", "ಿ", "ೆ", ["ೌ", "್"], ["ೢ", "ೣ"], ["ഀ", "ഁ"], ["഻", "഼"], ["ു", "ൄ"], "്", ["ൢ", "ൣ"], "්", ["ි", "ු"], "ූ", "ั", ["ิ", "ฺ"], ["็", "๎"], "ັ", ["ິ", "ູ"], ["ົ", "ຼ"], ["່", "ໍ"], ["༘", "༙"], "༵", "༷", "༹", ["ཱ", "ཾ"], ["ྀ", "྄"], ["྆", "྇"], ["ྍ", "ྗ"], ["ྙ", "ྼ"], "࿆", ["ိ", "ူ"], ["ဲ", "့"], ["္", "်"], ["ွ", "ှ"], ["ၘ", "ၙ"], ["ၞ", "ၠ"], ["ၱ", "ၴ"], "ႂ", ["ႅ", "ႆ"], "ႍ", "ႝ", ["፝", "፟"], ["ᜒ", "᜔"], ["ᜲ", "᜴"], ["ᝒ", "ᝓ"], ["ᝲ", "ᝳ"], ["឴", "឵"], ["ិ", "ួ"], "ំ", ["៉", "៓"], "៝", ["᠋", "᠍"], ["ᢅ", "ᢆ"], "ᢩ", ["ᤠ", "ᤢ"], ["ᤧ", "ᤨ"], "ᤲ", ["᤹", "᤻"], ["ᨗ", "ᨘ"], "ᨛ", "ᩖ", ["ᩘ", "ᩞ"], "᩠", "ᩢ", ["ᩥ", "ᩬ"], ["ᩳ", "᩼"], "᩿", ["᪰", "᪽"], ["ᬀ", "ᬃ"], "᬴", ["ᬶ", "ᬺ"], "ᬼ", "ᭂ", ["᭫", "᭳"], ["ᮀ", "ᮁ"], ["ᮢ", "ᮥ"], ["ᮨ", "ᮩ"], ["᮫", "ᮭ"], "᯦", ["ᯨ", "ᯩ"], "ᯭ", ["ᯯ", "ᯱ"], ["ᰬ", "ᰳ"], ["ᰶ", "᰷"], ["᳐", "᳒"], ["᳔", "᳠"], ["᳢", "᳨"], "᳭", "᳴", ["᳸", "᳹"], ["᷀", "᷹"], ["᷻", "᷿"], ["⃐", "⃜"], "⃡", ["⃥", "⃰"], ["⳯", "⳱"], "⵿", ["ⷠ", "ⷿ"], ["〪", "〭"], ["゙", "゚"], "꙯", ["ꙴ", "꙽"], ["ꚞ", "ꚟ"], ["꛰", "꛱"], "ꠂ", "꠆", "ꠋ", ["ꠥ", "ꠦ"], ["꣄", "ꣅ"], ["꣠", "꣱"], "ꣿ", ["ꤦ", "꤭"], ["ꥇ", "ꥑ"], ["ꦀ", "ꦂ"], "꦳", ["ꦶ", "ꦹ"], "ꦼ", "ꧥ", ["ꨩ", "ꨮ"], ["ꨱ", "ꨲ"], ["ꨵ", "ꨶ"], "ꩃ", "ꩌ", "ꩼ", "ꪰ", ["ꪲ", "ꪴ"], ["ꪷ", "ꪸ"], ["ꪾ", "꪿"], "꫁", ["ꫬ", "ꫭ"], "꫶", "ꯥ", "ꯨ", "꯭", "ﬞ", ["︀", "️"], ["︠", "︯"]], false, false), peg$c117 = /^[\u0903\u093B\u093E-\u0940\u0949-\u094C\u094E-\u094F\u0982-\u0983\u09BE-\u09C0\u09C7-\u09C8\u09CB-\u09CC\u09D7\u0A03\u0A3E-\u0A40\u0A83\u0ABE-\u0AC0\u0AC9\u0ACB-\u0ACC\u0B02-\u0B03\u0B3E\u0B40\u0B47-\u0B48\u0B4B-\u0B4C\u0B57\u0BBE-\u0BBF\u0BC1-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCC\u0BD7\u0C01-\u0C03\u0C41-\u0C44\u0C82-\u0C83\u0CBE\u0CC0-\u0CC4\u0CC7-\u0CC8\u0CCA-\u0CCB\u0CD5-\u0CD6\u0D02-\u0D03\u0D3E-\u0D40\u0D46-\u0D48\u0D4A-\u0D4C\u0D57\u0D82-\u0D83\u0DCF-\u0DD1\u0DD8-\u0DDF\u0DF2-\u0DF3\u0F3E-\u0F3F\u0F7F\u102B-\u102C\u1031\u1038\u103B-\u103C\u1056-\u1057\u1062-\u1064\u1067-\u106D\u1083-\u1084\u1087-\u108C\u108F\u109A-\u109C\u17B6\u17BE-\u17C5\u17C7-\u17C8\u1923-\u1926\u1929-\u192B\u1930-\u1931\u1933-\u1938\u1A19-\u1A1A\u1A55\u1A57\u1A61\u1A63-\u1A64\u1A6D-\u1A72\u1B04\u1B35\u1B3B\u1B3D-\u1B41\u1B43-\u1B44\u1B82\u1BA1\u1BA6-\u1BA7\u1BAA\u1BE7\u1BEA-\u1BEC\u1BEE\u1BF2-\u1BF3\u1C24-\u1C2B\u1C34-\u1C35\u1CE1\u1CF2-\u1CF3\u1CF7\u302E-\u302F\uA823-\uA824\uA827\uA880-\uA881\uA8B4-\uA8C3\uA952-\uA953\uA983\uA9B4-\uA9B5\uA9BA-\uA9BB\uA9BD-\uA9C0\uAA2F-\uAA30\uAA33-\uAA34\uAA4D\uAA7B\uAA7D\uAAEB\uAAEE-\uAAEF\uAAF5\uABE3-\uABE4\uABE6-\uABE7\uABE9-\uABEA\uABEC]/, peg$c118 = peg$classExpectation(["ः", "ऻ", ["ा", "ी"], ["ॉ", "ौ"], ["ॎ", "ॏ"], ["ং", "ঃ"], ["া", "ী"], ["ে", "ৈ"], ["ো", "ৌ"], "ৗ", "ਃ", ["ਾ", "ੀ"], "ઃ", ["ા", "ી"], "ૉ", ["ો", "ૌ"], ["ଂ", "ଃ"], "ା", "ୀ", ["େ", "ୈ"], ["ୋ", "ୌ"], "ୗ", ["ா", "ி"], ["ு", "ூ"], ["ெ", "ை"], ["ொ", "ௌ"], "ௗ", ["ఁ", "ః"], ["ు", "ౄ"], ["ಂ", "ಃ"], "ಾ", ["ೀ", "ೄ"], ["ೇ", "ೈ"], ["ೊ", "ೋ"], ["ೕ", "ೖ"], ["ം", "ഃ"], ["ാ", "ീ"], ["െ", "ൈ"], ["ൊ", "ൌ"], "ൗ", ["ං", "ඃ"], ["ා", "ෑ"], ["ෘ", "ෟ"], ["ෲ", "ෳ"], ["༾", "༿"], "ཿ", ["ါ", "ာ"], "ေ", "း", ["ျ", "ြ"], ["ၖ", "ၗ"], ["ၢ", "ၤ"], ["ၧ", "ၭ"], ["ႃ", "ႄ"], ["ႇ", "ႌ"], "ႏ", ["ႚ", "ႜ"], "ា", ["ើ", "ៅ"], ["ះ", "ៈ"], ["ᤣ", "ᤦ"], ["ᤩ", "ᤫ"], ["ᤰ", "ᤱ"], ["ᤳ", "ᤸ"], ["ᨙ", "ᨚ"], "ᩕ", "ᩗ", "ᩡ", ["ᩣ", "ᩤ"], ["ᩭ", "ᩲ"], "ᬄ", "ᬵ", "ᬻ", ["ᬽ", "ᭁ"], ["ᭃ", "᭄"], "ᮂ", "ᮡ", ["ᮦ", "ᮧ"], "᮪", "ᯧ", ["ᯪ", "ᯬ"], "ᯮ", ["᯲", "᯳"], ["ᰤ", "ᰫ"], ["ᰴ", "ᰵ"], "᳡", ["ᳲ", "ᳳ"], "᳷", ["〮", "〯"], ["ꠣ", "ꠤ"], "ꠧ", ["ꢀ", "ꢁ"], ["ꢴ", "ꣃ"], ["ꥒ", "꥓"], "ꦃ", ["ꦴ", "ꦵ"], ["ꦺ", "ꦻ"], ["ꦽ", "꧀"], ["ꨯ", "ꨰ"], ["ꨳ", "ꨴ"], "ꩍ", "ꩻ", "ꩽ", "ꫫ", ["ꫮ", "ꫯ"], "ꫵ", ["ꯣ", "ꯤ"], ["ꯦ", "ꯧ"], ["ꯩ", "ꯪ"], "꯬"], false, false), peg$c119 = /^[0-9\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0BE6-\u0BEF\u0C66-\u0C6F\u0CE6-\u0CEF\u0D66-\u0D6F\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F29\u1040-\u1049\u1090-\u1099\u17E0-\u17E9\u1810-\u1819\u1946-\u194F\u19D0-\u19D9\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\uA620-\uA629\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19]/, peg$c120 = peg$classExpectation([["0", "9"], ["٠", "٩"], ["۰", "۹"], ["߀", "߉"], ["०", "९"], ["০", "৯"], ["੦", "੯"], ["૦", "૯"], ["୦", "୯"], ["௦", "௯"], ["౦", "౯"], ["೦", "೯"], ["൦", "൯"], ["෦", "෯"], ["๐", "๙"], ["໐", "໙"], ["༠", "༩"], ["၀", "၉"], ["႐", "႙"], ["០", "៩"], ["᠐", "᠙"], ["᥆", "᥏"], ["᧐", "᧙"], ["᪀", "᪉"], ["᪐", "᪙"], ["᭐", "᭙"], ["᮰", "᮹"], ["᱀", "᱉"], ["᱐", "᱙"], ["꘠", "꘩"], ["꣐", "꣙"], ["꤀", "꤉"], ["꧐", "꧙"], ["꧰", "꧹"], ["꩐", "꩙"], ["꯰", "꯹"], ["0", "9"]], false, false), peg$c121 = /^[_\u203F-\u2040\u2054\uFE33-\uFE34\uFE4D-\uFE4F\uFF3F]/, peg$c122 = peg$classExpectation(["_", ["‿", "⁀"], "⁔", ["︳", "︴"], ["﹍", "﹏"], "_"], false, false), peg$c125 = /^[0-9a-f]/i, peg$c126 = peg$classExpectation([["0", "9"], ["a", "f"]], false, true), peg$c127 = "break", peg$c128 = peg$literalExpectation("break", false), peg$c129 = "case", peg$c130 = peg$literalExpectation("case", false), peg$c131 = "catch", peg$c132 = peg$literalExpectation("catch", false), peg$c133 = "class", peg$c134 = peg$literalExpectation("class", false), peg$c135 = "const", peg$c136 = peg$literalExpectation("const", false), peg$c137 = "continue", peg$c138 = peg$literalExpectation("continue", false), peg$c139 = "debugger", peg$c140 = peg$literalExpectation("debugger", false), peg$c141 = "default", peg$c142 = peg$literalExpectation("default", false), peg$c143 = "delete", peg$c144 = peg$literalExpectation("delete", false), peg$c145 = "do", peg$c146 = peg$literalExpectation("do", false), peg$c147 = "else", peg$c148 = peg$literalExpectation("else", false), peg$c149 = "export", peg$c150 = peg$literalExpectation("export", false), peg$c151 = "extends", peg$c152 = peg$literalExpectation("extends", false), peg$c153 = "false", peg$c154 = peg$literalExpectation("false", false), peg$c155 = "finally", peg$c156 = peg$literalExpectation("finally", false), peg$c157 = "for", peg$c158 = peg$literalExpectation("for", false), peg$c159 = "function", peg$c160 = peg$literalExpectation("function", false), peg$c163 = "if", peg$c164 = peg$literalExpectation("if", false), peg$c165 = "import", peg$c166 = peg$literalExpectation("import", false), peg$c167 = "instanceof", peg$c168 = peg$literalExpectation("instanceof", false), peg$c169 = "in", peg$c170 = peg$literalExpectation("in", false), peg$c171 = "new", peg$c172 = peg$literalExpectation("new", false), peg$c173 = "null", peg$c174 = peg$literalExpectation("null", false), peg$c175 = "return", peg$c176 = peg$literalExpectation("return", false), peg$c179 = "super", peg$c180 = peg$literalExpectation("super", false), peg$c181 = "switch", peg$c182 = peg$literalExpectation("switch", false), peg$c183 = "this", peg$c184 = peg$literalExpectation("this", false), peg$c185 = "throw", peg$c186 = peg$literalExpectation("throw", false), peg$c187 = "true", peg$c188 = peg$literalExpectation("true", false), peg$c189 = "try", peg$c190 = peg$literalExpectation("try", false), peg$c191 = "typeof", peg$c192 = peg$literalExpectation("typeof", false), peg$c193 = "var", peg$c194 = peg$literalExpectation("var", false), peg$c195 = "void", peg$c196 = peg$literalExpectation("void", false), peg$c197 = "while", peg$c198 = peg$literalExpectation("while", false), peg$c199 = "with", peg$c200 = peg$literalExpectation("with", false), peg$currPos = 0, peg$savedPos = 0, peg$posDetailsCache = [{ line: 1, column: 1 }], peg$maxFailPos = 0, peg$maxFailExpected = [], peg$silentFails = 0, peg$result;
|
|
6043
6067
|
if ("startRule" in options) {
|
|
6044
6068
|
if (!(options.startRule in peg$startRuleFunctions)) {
|
|
6045
6069
|
throw new Error(`Can't start parsing from rule "` + options.startRule + '".');
|
|
@@ -6334,7 +6358,7 @@ function peg$parse(input, options) {
|
|
|
6334
6358
|
if (s1 !== peg$FAILED) {
|
|
6335
6359
|
s2 = peg$parse_();
|
|
6336
6360
|
if (s2 !== peg$FAILED) {
|
|
6337
|
-
s3 = peg$
|
|
6361
|
+
s3 = peg$parselogicalOrCondition();
|
|
6338
6362
|
if (s3 !== peg$FAILED) {
|
|
6339
6363
|
s4 = peg$parse_();
|
|
6340
6364
|
if (s4 !== peg$FAILED) {
|
|
@@ -7610,7 +7634,7 @@ function peg$parse(input, options) {
|
|
|
7610
7634
|
function peg$parseconditionFunc() {
|
|
7611
7635
|
var s0, s1;
|
|
7612
7636
|
s0 = peg$currPos;
|
|
7613
|
-
s1 = peg$
|
|
7637
|
+
s1 = peg$parselogicalOrCondition();
|
|
7614
7638
|
if (s1 !== peg$FAILED) {
|
|
7615
7639
|
peg$savedPos = s0;
|
|
7616
7640
|
s1 = peg$c50(s1);
|
|
@@ -7620,9 +7644,252 @@ function peg$parse(input, options) {
|
|
|
7620
7644
|
}
|
|
7621
7645
|
function peg$parsecondition() {
|
|
7622
7646
|
var s0;
|
|
7623
|
-
s0 = peg$
|
|
7647
|
+
s0 = peg$parselogicalOrCondition();
|
|
7648
|
+
return s0;
|
|
7649
|
+
}
|
|
7650
|
+
function peg$parselogicalOrCondition() {
|
|
7651
|
+
var s0, s1, s2, s3, s4, s5, s6, s7;
|
|
7652
|
+
s0 = peg$currPos;
|
|
7653
|
+
s1 = peg$parselogicalAndCondition();
|
|
7654
|
+
if (s1 !== peg$FAILED) {
|
|
7655
|
+
s2 = [];
|
|
7656
|
+
s3 = peg$currPos;
|
|
7657
|
+
s4 = peg$parse_();
|
|
7658
|
+
if (s4 !== peg$FAILED) {
|
|
7659
|
+
if (input.substr(peg$currPos, 2) === peg$c51) {
|
|
7660
|
+
s5 = peg$c51;
|
|
7661
|
+
peg$currPos += 2;
|
|
7662
|
+
} else {
|
|
7663
|
+
s5 = peg$FAILED;
|
|
7664
|
+
if (peg$silentFails === 0) {
|
|
7665
|
+
peg$fail(peg$c52);
|
|
7666
|
+
}
|
|
7667
|
+
}
|
|
7668
|
+
if (s5 !== peg$FAILED) {
|
|
7669
|
+
s6 = peg$parse_();
|
|
7670
|
+
if (s6 !== peg$FAILED) {
|
|
7671
|
+
s7 = peg$parselogicalAndCondition();
|
|
7672
|
+
if (s7 !== peg$FAILED) {
|
|
7673
|
+
s4 = [s4, s5, s6, s7];
|
|
7674
|
+
s3 = s4;
|
|
7675
|
+
} else {
|
|
7676
|
+
peg$currPos = s3;
|
|
7677
|
+
s3 = peg$FAILED;
|
|
7678
|
+
}
|
|
7679
|
+
} else {
|
|
7680
|
+
peg$currPos = s3;
|
|
7681
|
+
s3 = peg$FAILED;
|
|
7682
|
+
}
|
|
7683
|
+
} else {
|
|
7684
|
+
peg$currPos = s3;
|
|
7685
|
+
s3 = peg$FAILED;
|
|
7686
|
+
}
|
|
7687
|
+
} else {
|
|
7688
|
+
peg$currPos = s3;
|
|
7689
|
+
s3 = peg$FAILED;
|
|
7690
|
+
}
|
|
7691
|
+
while (s3 !== peg$FAILED) {
|
|
7692
|
+
s2.push(s3);
|
|
7693
|
+
s3 = peg$currPos;
|
|
7694
|
+
s4 = peg$parse_();
|
|
7695
|
+
if (s4 !== peg$FAILED) {
|
|
7696
|
+
if (input.substr(peg$currPos, 2) === peg$c51) {
|
|
7697
|
+
s5 = peg$c51;
|
|
7698
|
+
peg$currPos += 2;
|
|
7699
|
+
} else {
|
|
7700
|
+
s5 = peg$FAILED;
|
|
7701
|
+
if (peg$silentFails === 0) {
|
|
7702
|
+
peg$fail(peg$c52);
|
|
7703
|
+
}
|
|
7704
|
+
}
|
|
7705
|
+
if (s5 !== peg$FAILED) {
|
|
7706
|
+
s6 = peg$parse_();
|
|
7707
|
+
if (s6 !== peg$FAILED) {
|
|
7708
|
+
s7 = peg$parselogicalAndCondition();
|
|
7709
|
+
if (s7 !== peg$FAILED) {
|
|
7710
|
+
s4 = [s4, s5, s6, s7];
|
|
7711
|
+
s3 = s4;
|
|
7712
|
+
} else {
|
|
7713
|
+
peg$currPos = s3;
|
|
7714
|
+
s3 = peg$FAILED;
|
|
7715
|
+
}
|
|
7716
|
+
} else {
|
|
7717
|
+
peg$currPos = s3;
|
|
7718
|
+
s3 = peg$FAILED;
|
|
7719
|
+
}
|
|
7720
|
+
} else {
|
|
7721
|
+
peg$currPos = s3;
|
|
7722
|
+
s3 = peg$FAILED;
|
|
7723
|
+
}
|
|
7724
|
+
} else {
|
|
7725
|
+
peg$currPos = s3;
|
|
7726
|
+
s3 = peg$FAILED;
|
|
7727
|
+
}
|
|
7728
|
+
}
|
|
7729
|
+
if (s2 !== peg$FAILED) {
|
|
7730
|
+
peg$savedPos = s0;
|
|
7731
|
+
s1 = peg$c53(s1, s2);
|
|
7732
|
+
s0 = s1;
|
|
7733
|
+
} else {
|
|
7734
|
+
peg$currPos = s0;
|
|
7735
|
+
s0 = peg$FAILED;
|
|
7736
|
+
}
|
|
7737
|
+
} else {
|
|
7738
|
+
peg$currPos = s0;
|
|
7739
|
+
s0 = peg$FAILED;
|
|
7740
|
+
}
|
|
7741
|
+
return s0;
|
|
7742
|
+
}
|
|
7743
|
+
function peg$parselogicalAndCondition() {
|
|
7744
|
+
var s0, s1, s2, s3, s4, s5, s6, s7;
|
|
7745
|
+
s0 = peg$currPos;
|
|
7746
|
+
s1 = peg$parseprimaryCondition();
|
|
7747
|
+
if (s1 !== peg$FAILED) {
|
|
7748
|
+
s2 = [];
|
|
7749
|
+
s3 = peg$currPos;
|
|
7750
|
+
s4 = peg$parse_();
|
|
7751
|
+
if (s4 !== peg$FAILED) {
|
|
7752
|
+
if (input.substr(peg$currPos, 2) === peg$c54) {
|
|
7753
|
+
s5 = peg$c54;
|
|
7754
|
+
peg$currPos += 2;
|
|
7755
|
+
} else {
|
|
7756
|
+
s5 = peg$FAILED;
|
|
7757
|
+
if (peg$silentFails === 0) {
|
|
7758
|
+
peg$fail(peg$c55);
|
|
7759
|
+
}
|
|
7760
|
+
}
|
|
7761
|
+
if (s5 !== peg$FAILED) {
|
|
7762
|
+
s6 = peg$parse_();
|
|
7763
|
+
if (s6 !== peg$FAILED) {
|
|
7764
|
+
s7 = peg$parseprimaryCondition();
|
|
7765
|
+
if (s7 !== peg$FAILED) {
|
|
7766
|
+
s4 = [s4, s5, s6, s7];
|
|
7767
|
+
s3 = s4;
|
|
7768
|
+
} else {
|
|
7769
|
+
peg$currPos = s3;
|
|
7770
|
+
s3 = peg$FAILED;
|
|
7771
|
+
}
|
|
7772
|
+
} else {
|
|
7773
|
+
peg$currPos = s3;
|
|
7774
|
+
s3 = peg$FAILED;
|
|
7775
|
+
}
|
|
7776
|
+
} else {
|
|
7777
|
+
peg$currPos = s3;
|
|
7778
|
+
s3 = peg$FAILED;
|
|
7779
|
+
}
|
|
7780
|
+
} else {
|
|
7781
|
+
peg$currPos = s3;
|
|
7782
|
+
s3 = peg$FAILED;
|
|
7783
|
+
}
|
|
7784
|
+
while (s3 !== peg$FAILED) {
|
|
7785
|
+
s2.push(s3);
|
|
7786
|
+
s3 = peg$currPos;
|
|
7787
|
+
s4 = peg$parse_();
|
|
7788
|
+
if (s4 !== peg$FAILED) {
|
|
7789
|
+
if (input.substr(peg$currPos, 2) === peg$c54) {
|
|
7790
|
+
s5 = peg$c54;
|
|
7791
|
+
peg$currPos += 2;
|
|
7792
|
+
} else {
|
|
7793
|
+
s5 = peg$FAILED;
|
|
7794
|
+
if (peg$silentFails === 0) {
|
|
7795
|
+
peg$fail(peg$c55);
|
|
7796
|
+
}
|
|
7797
|
+
}
|
|
7798
|
+
if (s5 !== peg$FAILED) {
|
|
7799
|
+
s6 = peg$parse_();
|
|
7800
|
+
if (s6 !== peg$FAILED) {
|
|
7801
|
+
s7 = peg$parseprimaryCondition();
|
|
7802
|
+
if (s7 !== peg$FAILED) {
|
|
7803
|
+
s4 = [s4, s5, s6, s7];
|
|
7804
|
+
s3 = s4;
|
|
7805
|
+
} else {
|
|
7806
|
+
peg$currPos = s3;
|
|
7807
|
+
s3 = peg$FAILED;
|
|
7808
|
+
}
|
|
7809
|
+
} else {
|
|
7810
|
+
peg$currPos = s3;
|
|
7811
|
+
s3 = peg$FAILED;
|
|
7812
|
+
}
|
|
7813
|
+
} else {
|
|
7814
|
+
peg$currPos = s3;
|
|
7815
|
+
s3 = peg$FAILED;
|
|
7816
|
+
}
|
|
7817
|
+
} else {
|
|
7818
|
+
peg$currPos = s3;
|
|
7819
|
+
s3 = peg$FAILED;
|
|
7820
|
+
}
|
|
7821
|
+
}
|
|
7822
|
+
if (s2 !== peg$FAILED) {
|
|
7823
|
+
peg$savedPos = s0;
|
|
7824
|
+
s1 = peg$c56(s1, s2);
|
|
7825
|
+
s0 = s1;
|
|
7826
|
+
} else {
|
|
7827
|
+
peg$currPos = s0;
|
|
7828
|
+
s0 = peg$FAILED;
|
|
7829
|
+
}
|
|
7830
|
+
} else {
|
|
7831
|
+
peg$currPos = s0;
|
|
7832
|
+
s0 = peg$FAILED;
|
|
7833
|
+
}
|
|
7834
|
+
return s0;
|
|
7835
|
+
}
|
|
7836
|
+
function peg$parseprimaryCondition() {
|
|
7837
|
+
var s0, s1, s2, s3, s4, s5;
|
|
7838
|
+
s0 = peg$currPos;
|
|
7839
|
+
if (input.charCodeAt(peg$currPos) === 40) {
|
|
7840
|
+
s1 = peg$c30;
|
|
7841
|
+
peg$currPos++;
|
|
7842
|
+
} else {
|
|
7843
|
+
s1 = peg$FAILED;
|
|
7844
|
+
if (peg$silentFails === 0) {
|
|
7845
|
+
peg$fail(peg$c31);
|
|
7846
|
+
}
|
|
7847
|
+
}
|
|
7848
|
+
if (s1 !== peg$FAILED) {
|
|
7849
|
+
s2 = peg$parse_();
|
|
7850
|
+
if (s2 !== peg$FAILED) {
|
|
7851
|
+
s3 = peg$parselogicalOrCondition();
|
|
7852
|
+
if (s3 !== peg$FAILED) {
|
|
7853
|
+
s4 = peg$parse_();
|
|
7854
|
+
if (s4 !== peg$FAILED) {
|
|
7855
|
+
if (input.charCodeAt(peg$currPos) === 41) {
|
|
7856
|
+
s5 = peg$c37;
|
|
7857
|
+
peg$currPos++;
|
|
7858
|
+
} else {
|
|
7859
|
+
s5 = peg$FAILED;
|
|
7860
|
+
if (peg$silentFails === 0) {
|
|
7861
|
+
peg$fail(peg$c38);
|
|
7862
|
+
}
|
|
7863
|
+
}
|
|
7864
|
+
if (s5 !== peg$FAILED) {
|
|
7865
|
+
peg$savedPos = s0;
|
|
7866
|
+
s1 = peg$c57(s3);
|
|
7867
|
+
s0 = s1;
|
|
7868
|
+
} else {
|
|
7869
|
+
peg$currPos = s0;
|
|
7870
|
+
s0 = peg$FAILED;
|
|
7871
|
+
}
|
|
7872
|
+
} else {
|
|
7873
|
+
peg$currPos = s0;
|
|
7874
|
+
s0 = peg$FAILED;
|
|
7875
|
+
}
|
|
7876
|
+
} else {
|
|
7877
|
+
peg$currPos = s0;
|
|
7878
|
+
s0 = peg$FAILED;
|
|
7879
|
+
}
|
|
7880
|
+
} else {
|
|
7881
|
+
peg$currPos = s0;
|
|
7882
|
+
s0 = peg$FAILED;
|
|
7883
|
+
}
|
|
7884
|
+
} else {
|
|
7885
|
+
peg$currPos = s0;
|
|
7886
|
+
s0 = peg$FAILED;
|
|
7887
|
+
}
|
|
7624
7888
|
if (s0 === peg$FAILED) {
|
|
7625
|
-
s0 = peg$
|
|
7889
|
+
s0 = peg$parseenumCondition();
|
|
7890
|
+
if (s0 === peg$FAILED) {
|
|
7891
|
+
s0 = peg$parsebooleanCondition();
|
|
7892
|
+
}
|
|
7626
7893
|
}
|
|
7627
7894
|
return s0;
|
|
7628
7895
|
}
|
|
@@ -7637,7 +7904,7 @@ function peg$parse(input, options) {
|
|
|
7637
7904
|
s2 = peg$parseaccessor();
|
|
7638
7905
|
if (s2 !== peg$FAILED) {
|
|
7639
7906
|
peg$savedPos = s0;
|
|
7640
|
-
s1 = peg$
|
|
7907
|
+
s1 = peg$c58(s1, s2);
|
|
7641
7908
|
s0 = s1;
|
|
7642
7909
|
} else {
|
|
7643
7910
|
peg$currPos = s0;
|
|
@@ -7663,7 +7930,7 @@ function peg$parse(input, options) {
|
|
|
7663
7930
|
s5 = peg$parseIdentifier();
|
|
7664
7931
|
if (s5 !== peg$FAILED) {
|
|
7665
7932
|
peg$savedPos = s0;
|
|
7666
|
-
s1 = peg$
|
|
7933
|
+
s1 = peg$c59(s1, s3, s5);
|
|
7667
7934
|
s0 = s1;
|
|
7668
7935
|
} else {
|
|
7669
7936
|
peg$currPos = s0;
|
|
@@ -7699,17 +7966,17 @@ function peg$parse(input, options) {
|
|
|
7699
7966
|
var s0, s1;
|
|
7700
7967
|
s0 = peg$currPos;
|
|
7701
7968
|
if (input.charCodeAt(peg$currPos) === 46) {
|
|
7702
|
-
s1 = peg$
|
|
7969
|
+
s1 = peg$c60;
|
|
7703
7970
|
peg$currPos++;
|
|
7704
7971
|
} else {
|
|
7705
7972
|
s1 = peg$FAILED;
|
|
7706
7973
|
if (peg$silentFails === 0) {
|
|
7707
|
-
peg$fail(peg$
|
|
7974
|
+
peg$fail(peg$c61);
|
|
7708
7975
|
}
|
|
7709
7976
|
}
|
|
7710
7977
|
if (s1 !== peg$FAILED) {
|
|
7711
7978
|
peg$savedPos = s0;
|
|
7712
|
-
s1 = peg$
|
|
7979
|
+
s1 = peg$c62();
|
|
7713
7980
|
}
|
|
7714
7981
|
s0 = s1;
|
|
7715
7982
|
return s0;
|
|
@@ -7724,12 +7991,12 @@ function peg$parse(input, options) {
|
|
|
7724
7991
|
s4 = peg$parse_();
|
|
7725
7992
|
if (s4 !== peg$FAILED) {
|
|
7726
7993
|
if (input.charCodeAt(peg$currPos) === 46) {
|
|
7727
|
-
s5 = peg$
|
|
7994
|
+
s5 = peg$c60;
|
|
7728
7995
|
peg$currPos++;
|
|
7729
7996
|
} else {
|
|
7730
7997
|
s5 = peg$FAILED;
|
|
7731
7998
|
if (peg$silentFails === 0) {
|
|
7732
|
-
peg$fail(peg$
|
|
7999
|
+
peg$fail(peg$c61);
|
|
7733
8000
|
}
|
|
7734
8001
|
}
|
|
7735
8002
|
if (s5 !== peg$FAILED) {
|
|
@@ -7761,12 +8028,12 @@ function peg$parse(input, options) {
|
|
|
7761
8028
|
s4 = peg$parse_();
|
|
7762
8029
|
if (s4 !== peg$FAILED) {
|
|
7763
8030
|
if (input.charCodeAt(peg$currPos) === 46) {
|
|
7764
|
-
s5 = peg$
|
|
8031
|
+
s5 = peg$c60;
|
|
7765
8032
|
peg$currPos++;
|
|
7766
8033
|
} else {
|
|
7767
8034
|
s5 = peg$FAILED;
|
|
7768
8035
|
if (peg$silentFails === 0) {
|
|
7769
|
-
peg$fail(peg$
|
|
8036
|
+
peg$fail(peg$c61);
|
|
7770
8037
|
}
|
|
7771
8038
|
}
|
|
7772
8039
|
if (s5 !== peg$FAILED) {
|
|
@@ -7795,7 +8062,7 @@ function peg$parse(input, options) {
|
|
|
7795
8062
|
}
|
|
7796
8063
|
if (s2 !== peg$FAILED) {
|
|
7797
8064
|
peg$savedPos = s0;
|
|
7798
|
-
s1 = peg$
|
|
8065
|
+
s1 = peg$c63(s1, s2);
|
|
7799
8066
|
s0 = s1;
|
|
7800
8067
|
} else {
|
|
7801
8068
|
peg$currPos = s0;
|
|
@@ -7814,25 +8081,25 @@ function peg$parse(input, options) {
|
|
|
7814
8081
|
s1 = peg$parse_();
|
|
7815
8082
|
if (s1 !== peg$FAILED) {
|
|
7816
8083
|
s2 = [];
|
|
7817
|
-
if (peg$
|
|
8084
|
+
if (peg$c65.test(input.charAt(peg$currPos))) {
|
|
7818
8085
|
s3 = input.charAt(peg$currPos);
|
|
7819
8086
|
peg$currPos++;
|
|
7820
8087
|
} else {
|
|
7821
8088
|
s3 = peg$FAILED;
|
|
7822
8089
|
if (peg$silentFails === 0) {
|
|
7823
|
-
peg$fail(peg$
|
|
8090
|
+
peg$fail(peg$c66);
|
|
7824
8091
|
}
|
|
7825
8092
|
}
|
|
7826
8093
|
if (s3 !== peg$FAILED) {
|
|
7827
8094
|
while (s3 !== peg$FAILED) {
|
|
7828
8095
|
s2.push(s3);
|
|
7829
|
-
if (peg$
|
|
8096
|
+
if (peg$c65.test(input.charAt(peg$currPos))) {
|
|
7830
8097
|
s3 = input.charAt(peg$currPos);
|
|
7831
8098
|
peg$currPos++;
|
|
7832
8099
|
} else {
|
|
7833
8100
|
s3 = peg$FAILED;
|
|
7834
8101
|
if (peg$silentFails === 0) {
|
|
7835
|
-
peg$fail(peg$
|
|
8102
|
+
peg$fail(peg$c66);
|
|
7836
8103
|
}
|
|
7837
8104
|
}
|
|
7838
8105
|
}
|
|
@@ -7855,7 +8122,7 @@ function peg$parse(input, options) {
|
|
|
7855
8122
|
if (s0 === peg$FAILED) {
|
|
7856
8123
|
s1 = peg$FAILED;
|
|
7857
8124
|
if (peg$silentFails === 0) {
|
|
7858
|
-
peg$fail(peg$
|
|
8125
|
+
peg$fail(peg$c64);
|
|
7859
8126
|
}
|
|
7860
8127
|
}
|
|
7861
8128
|
return s0;
|
|
@@ -7864,24 +8131,24 @@ function peg$parse(input, options) {
|
|
|
7864
8131
|
var s0, s1;
|
|
7865
8132
|
peg$silentFails++;
|
|
7866
8133
|
s0 = [];
|
|
7867
|
-
if (peg$
|
|
8134
|
+
if (peg$c68.test(input.charAt(peg$currPos))) {
|
|
7868
8135
|
s1 = input.charAt(peg$currPos);
|
|
7869
8136
|
peg$currPos++;
|
|
7870
8137
|
} else {
|
|
7871
8138
|
s1 = peg$FAILED;
|
|
7872
8139
|
if (peg$silentFails === 0) {
|
|
7873
|
-
peg$fail(peg$
|
|
8140
|
+
peg$fail(peg$c69);
|
|
7874
8141
|
}
|
|
7875
8142
|
}
|
|
7876
8143
|
while (s1 !== peg$FAILED) {
|
|
7877
8144
|
s0.push(s1);
|
|
7878
|
-
if (peg$
|
|
8145
|
+
if (peg$c68.test(input.charAt(peg$currPos))) {
|
|
7879
8146
|
s1 = input.charAt(peg$currPos);
|
|
7880
8147
|
peg$currPos++;
|
|
7881
8148
|
} else {
|
|
7882
8149
|
s1 = peg$FAILED;
|
|
7883
8150
|
if (peg$silentFails === 0) {
|
|
7884
|
-
peg$fail(peg$
|
|
8151
|
+
peg$fail(peg$c69);
|
|
7885
8152
|
}
|
|
7886
8153
|
}
|
|
7887
8154
|
}
|
|
@@ -7889,7 +8156,7 @@ function peg$parse(input, options) {
|
|
|
7889
8156
|
if (s0 === peg$FAILED) {
|
|
7890
8157
|
s1 = peg$FAILED;
|
|
7891
8158
|
if (peg$silentFails === 0) {
|
|
7892
|
-
peg$fail(peg$
|
|
8159
|
+
peg$fail(peg$c67);
|
|
7893
8160
|
}
|
|
7894
8161
|
}
|
|
7895
8162
|
return s0;
|
|
@@ -7898,25 +8165,25 @@ function peg$parse(input, options) {
|
|
|
7898
8165
|
var s0, s1, s2;
|
|
7899
8166
|
s0 = peg$currPos;
|
|
7900
8167
|
s1 = [];
|
|
7901
|
-
if (peg$
|
|
8168
|
+
if (peg$c70.test(input.charAt(peg$currPos))) {
|
|
7902
8169
|
s2 = input.charAt(peg$currPos);
|
|
7903
8170
|
peg$currPos++;
|
|
7904
8171
|
} else {
|
|
7905
8172
|
s2 = peg$FAILED;
|
|
7906
8173
|
if (peg$silentFails === 0) {
|
|
7907
|
-
peg$fail(peg$
|
|
8174
|
+
peg$fail(peg$c71);
|
|
7908
8175
|
}
|
|
7909
8176
|
}
|
|
7910
8177
|
if (s2 !== peg$FAILED) {
|
|
7911
8178
|
while (s2 !== peg$FAILED) {
|
|
7912
8179
|
s1.push(s2);
|
|
7913
|
-
if (peg$
|
|
8180
|
+
if (peg$c70.test(input.charAt(peg$currPos))) {
|
|
7914
8181
|
s2 = input.charAt(peg$currPos);
|
|
7915
8182
|
peg$currPos++;
|
|
7916
8183
|
} else {
|
|
7917
8184
|
s2 = peg$FAILED;
|
|
7918
8185
|
if (peg$silentFails === 0) {
|
|
7919
|
-
peg$fail(peg$
|
|
8186
|
+
peg$fail(peg$c71);
|
|
7920
8187
|
}
|
|
7921
8188
|
}
|
|
7922
8189
|
}
|
|
@@ -7925,7 +8192,7 @@ function peg$parse(input, options) {
|
|
|
7925
8192
|
}
|
|
7926
8193
|
if (s1 !== peg$FAILED) {
|
|
7927
8194
|
peg$savedPos = s0;
|
|
7928
|
-
s1 = peg$
|
|
8195
|
+
s1 = peg$c72();
|
|
7929
8196
|
}
|
|
7930
8197
|
s0 = s1;
|
|
7931
8198
|
return s0;
|
|
@@ -7933,55 +8200,55 @@ function peg$parse(input, options) {
|
|
|
7933
8200
|
function peg$parsebang() {
|
|
7934
8201
|
var s0;
|
|
7935
8202
|
if (input.charCodeAt(peg$currPos) === 33) {
|
|
7936
|
-
s0 = peg$
|
|
8203
|
+
s0 = peg$c73;
|
|
7937
8204
|
peg$currPos++;
|
|
7938
8205
|
} else {
|
|
7939
8206
|
s0 = peg$FAILED;
|
|
7940
8207
|
if (peg$silentFails === 0) {
|
|
7941
|
-
peg$fail(peg$
|
|
8208
|
+
peg$fail(peg$c74);
|
|
7942
8209
|
}
|
|
7943
8210
|
}
|
|
7944
8211
|
return s0;
|
|
7945
8212
|
}
|
|
7946
8213
|
function peg$parseEqualityOperator() {
|
|
7947
8214
|
var s0;
|
|
7948
|
-
if (input.substr(peg$currPos, 3) === peg$
|
|
7949
|
-
s0 = peg$
|
|
8215
|
+
if (input.substr(peg$currPos, 3) === peg$c75) {
|
|
8216
|
+
s0 = peg$c75;
|
|
7950
8217
|
peg$currPos += 3;
|
|
7951
8218
|
} else {
|
|
7952
8219
|
s0 = peg$FAILED;
|
|
7953
8220
|
if (peg$silentFails === 0) {
|
|
7954
|
-
peg$fail(peg$
|
|
8221
|
+
peg$fail(peg$c76);
|
|
7955
8222
|
}
|
|
7956
8223
|
}
|
|
7957
8224
|
if (s0 === peg$FAILED) {
|
|
7958
|
-
if (input.substr(peg$currPos, 3) === peg$
|
|
7959
|
-
s0 = peg$
|
|
8225
|
+
if (input.substr(peg$currPos, 3) === peg$c77) {
|
|
8226
|
+
s0 = peg$c77;
|
|
7960
8227
|
peg$currPos += 3;
|
|
7961
8228
|
} else {
|
|
7962
8229
|
s0 = peg$FAILED;
|
|
7963
8230
|
if (peg$silentFails === 0) {
|
|
7964
|
-
peg$fail(peg$
|
|
8231
|
+
peg$fail(peg$c78);
|
|
7965
8232
|
}
|
|
7966
8233
|
}
|
|
7967
8234
|
if (s0 === peg$FAILED) {
|
|
7968
|
-
if (input.substr(peg$currPos, 2) === peg$
|
|
7969
|
-
s0 = peg$
|
|
8235
|
+
if (input.substr(peg$currPos, 2) === peg$c79) {
|
|
8236
|
+
s0 = peg$c79;
|
|
7970
8237
|
peg$currPos += 2;
|
|
7971
8238
|
} else {
|
|
7972
8239
|
s0 = peg$FAILED;
|
|
7973
8240
|
if (peg$silentFails === 0) {
|
|
7974
|
-
peg$fail(peg$
|
|
8241
|
+
peg$fail(peg$c80);
|
|
7975
8242
|
}
|
|
7976
8243
|
}
|
|
7977
8244
|
if (s0 === peg$FAILED) {
|
|
7978
|
-
if (input.substr(peg$currPos, 2) === peg$
|
|
7979
|
-
s0 = peg$
|
|
8245
|
+
if (input.substr(peg$currPos, 2) === peg$c81) {
|
|
8246
|
+
s0 = peg$c81;
|
|
7980
8247
|
peg$currPos += 2;
|
|
7981
8248
|
} else {
|
|
7982
8249
|
s0 = peg$FAILED;
|
|
7983
8250
|
if (peg$silentFails === 0) {
|
|
7984
|
-
peg$fail(peg$
|
|
8251
|
+
peg$fail(peg$c82);
|
|
7985
8252
|
}
|
|
7986
8253
|
}
|
|
7987
8254
|
}
|
|
@@ -8006,7 +8273,7 @@ function peg$parse(input, options) {
|
|
|
8006
8273
|
s2 = peg$parseIdentifierName();
|
|
8007
8274
|
if (s2 !== peg$FAILED) {
|
|
8008
8275
|
peg$savedPos = s0;
|
|
8009
|
-
s1 = peg$
|
|
8276
|
+
s1 = peg$c83();
|
|
8010
8277
|
s0 = s1;
|
|
8011
8278
|
} else {
|
|
8012
8279
|
peg$currPos = s0;
|
|
@@ -8032,7 +8299,7 @@ function peg$parse(input, options) {
|
|
|
8032
8299
|
}
|
|
8033
8300
|
if (s2 !== peg$FAILED) {
|
|
8034
8301
|
peg$savedPos = s0;
|
|
8035
|
-
s1 = peg$
|
|
8302
|
+
s1 = peg$c85(s1, s2);
|
|
8036
8303
|
s0 = s1;
|
|
8037
8304
|
} else {
|
|
8038
8305
|
peg$currPos = s0;
|
|
@@ -8046,7 +8313,7 @@ function peg$parse(input, options) {
|
|
|
8046
8313
|
if (s0 === peg$FAILED) {
|
|
8047
8314
|
s1 = peg$FAILED;
|
|
8048
8315
|
if (peg$silentFails === 0) {
|
|
8049
|
-
peg$fail(peg$
|
|
8316
|
+
peg$fail(peg$c84);
|
|
8050
8317
|
}
|
|
8051
8318
|
}
|
|
8052
8319
|
return s0;
|
|
@@ -8056,40 +8323,40 @@ function peg$parse(input, options) {
|
|
|
8056
8323
|
s0 = peg$parseUnicodeLetter();
|
|
8057
8324
|
if (s0 === peg$FAILED) {
|
|
8058
8325
|
if (input.charCodeAt(peg$currPos) === 36) {
|
|
8059
|
-
s0 = peg$
|
|
8326
|
+
s0 = peg$c86;
|
|
8060
8327
|
peg$currPos++;
|
|
8061
8328
|
} else {
|
|
8062
8329
|
s0 = peg$FAILED;
|
|
8063
8330
|
if (peg$silentFails === 0) {
|
|
8064
|
-
peg$fail(peg$
|
|
8331
|
+
peg$fail(peg$c87);
|
|
8065
8332
|
}
|
|
8066
8333
|
}
|
|
8067
8334
|
if (s0 === peg$FAILED) {
|
|
8068
8335
|
if (input.charCodeAt(peg$currPos) === 95) {
|
|
8069
|
-
s0 = peg$
|
|
8336
|
+
s0 = peg$c88;
|
|
8070
8337
|
peg$currPos++;
|
|
8071
8338
|
} else {
|
|
8072
8339
|
s0 = peg$FAILED;
|
|
8073
8340
|
if (peg$silentFails === 0) {
|
|
8074
|
-
peg$fail(peg$
|
|
8341
|
+
peg$fail(peg$c89);
|
|
8075
8342
|
}
|
|
8076
8343
|
}
|
|
8077
8344
|
if (s0 === peg$FAILED) {
|
|
8078
8345
|
s0 = peg$currPos;
|
|
8079
8346
|
if (input.charCodeAt(peg$currPos) === 92) {
|
|
8080
|
-
s1 = peg$
|
|
8347
|
+
s1 = peg$c90;
|
|
8081
8348
|
peg$currPos++;
|
|
8082
8349
|
} else {
|
|
8083
8350
|
s1 = peg$FAILED;
|
|
8084
8351
|
if (peg$silentFails === 0) {
|
|
8085
|
-
peg$fail(peg$
|
|
8352
|
+
peg$fail(peg$c91);
|
|
8086
8353
|
}
|
|
8087
8354
|
}
|
|
8088
8355
|
if (s1 !== peg$FAILED) {
|
|
8089
8356
|
s2 = peg$parseUnicodeEscapeSequence();
|
|
8090
8357
|
if (s2 !== peg$FAILED) {
|
|
8091
8358
|
peg$savedPos = s0;
|
|
8092
|
-
s1 = peg$
|
|
8359
|
+
s1 = peg$c92(s2);
|
|
8093
8360
|
s0 = s1;
|
|
8094
8361
|
} else {
|
|
8095
8362
|
peg$currPos = s0;
|
|
@@ -8115,22 +8382,22 @@ function peg$parse(input, options) {
|
|
|
8115
8382
|
s0 = peg$parsePc();
|
|
8116
8383
|
if (s0 === peg$FAILED) {
|
|
8117
8384
|
if (input.charCodeAt(peg$currPos) === 8204) {
|
|
8118
|
-
s0 = peg$
|
|
8385
|
+
s0 = peg$c93;
|
|
8119
8386
|
peg$currPos++;
|
|
8120
8387
|
} else {
|
|
8121
8388
|
s0 = peg$FAILED;
|
|
8122
8389
|
if (peg$silentFails === 0) {
|
|
8123
|
-
peg$fail(peg$
|
|
8390
|
+
peg$fail(peg$c94);
|
|
8124
8391
|
}
|
|
8125
8392
|
}
|
|
8126
8393
|
if (s0 === peg$FAILED) {
|
|
8127
8394
|
if (input.charCodeAt(peg$currPos) === 8205) {
|
|
8128
|
-
s0 = peg$
|
|
8395
|
+
s0 = peg$c95;
|
|
8129
8396
|
peg$currPos++;
|
|
8130
8397
|
} else {
|
|
8131
8398
|
s0 = peg$FAILED;
|
|
8132
8399
|
if (peg$silentFails === 0) {
|
|
8133
|
-
peg$fail(peg$
|
|
8400
|
+
peg$fail(peg$c96);
|
|
8134
8401
|
}
|
|
8135
8402
|
}
|
|
8136
8403
|
}
|
|
@@ -8178,12 +8445,12 @@ function peg$parse(input, options) {
|
|
|
8178
8445
|
var s0, s1, s2, s3, s4, s5, s6, s7;
|
|
8179
8446
|
s0 = peg$currPos;
|
|
8180
8447
|
if (input.charCodeAt(peg$currPos) === 117) {
|
|
8181
|
-
s1 = peg$
|
|
8448
|
+
s1 = peg$c97;
|
|
8182
8449
|
peg$currPos++;
|
|
8183
8450
|
} else {
|
|
8184
8451
|
s1 = peg$FAILED;
|
|
8185
8452
|
if (peg$silentFails === 0) {
|
|
8186
|
-
peg$fail(peg$
|
|
8453
|
+
peg$fail(peg$c98);
|
|
8187
8454
|
}
|
|
8188
8455
|
}
|
|
8189
8456
|
if (s1 !== peg$FAILED) {
|
|
@@ -8222,7 +8489,7 @@ function peg$parse(input, options) {
|
|
|
8222
8489
|
}
|
|
8223
8490
|
if (s2 !== peg$FAILED) {
|
|
8224
8491
|
peg$savedPos = s0;
|
|
8225
|
-
s1 = peg$
|
|
8492
|
+
s1 = peg$c99(s2);
|
|
8226
8493
|
s0 = s1;
|
|
8227
8494
|
} else {
|
|
8228
8495
|
peg$currPos = s0;
|
|
@@ -8351,7 +8618,7 @@ function peg$parse(input, options) {
|
|
|
8351
8618
|
s1 = peg$parseNullToken();
|
|
8352
8619
|
if (s1 !== peg$FAILED) {
|
|
8353
8620
|
peg$savedPos = s0;
|
|
8354
|
-
s1 = peg$
|
|
8621
|
+
s1 = peg$c100();
|
|
8355
8622
|
}
|
|
8356
8623
|
s0 = s1;
|
|
8357
8624
|
return s0;
|
|
@@ -8362,7 +8629,7 @@ function peg$parse(input, options) {
|
|
|
8362
8629
|
s1 = peg$parseTrueToken();
|
|
8363
8630
|
if (s1 !== peg$FAILED) {
|
|
8364
8631
|
peg$savedPos = s0;
|
|
8365
|
-
s1 = peg$
|
|
8632
|
+
s1 = peg$c101();
|
|
8366
8633
|
}
|
|
8367
8634
|
s0 = s1;
|
|
8368
8635
|
if (s0 === peg$FAILED) {
|
|
@@ -8370,7 +8637,7 @@ function peg$parse(input, options) {
|
|
|
8370
8637
|
s1 = peg$parseFalseToken();
|
|
8371
8638
|
if (s1 !== peg$FAILED) {
|
|
8372
8639
|
peg$savedPos = s0;
|
|
8373
|
-
s1 = peg$
|
|
8640
|
+
s1 = peg$c102();
|
|
8374
8641
|
}
|
|
8375
8642
|
s0 = s1;
|
|
8376
8643
|
}
|
|
@@ -8378,143 +8645,143 @@ function peg$parse(input, options) {
|
|
|
8378
8645
|
}
|
|
8379
8646
|
function peg$parseLu() {
|
|
8380
8647
|
var s0;
|
|
8381
|
-
if (peg$
|
|
8648
|
+
if (peg$c103.test(input.charAt(peg$currPos))) {
|
|
8382
8649
|
s0 = input.charAt(peg$currPos);
|
|
8383
8650
|
peg$currPos++;
|
|
8384
8651
|
} else {
|
|
8385
8652
|
s0 = peg$FAILED;
|
|
8386
8653
|
if (peg$silentFails === 0) {
|
|
8387
|
-
peg$fail(peg$
|
|
8654
|
+
peg$fail(peg$c104);
|
|
8388
8655
|
}
|
|
8389
8656
|
}
|
|
8390
8657
|
return s0;
|
|
8391
8658
|
}
|
|
8392
8659
|
function peg$parseLl() {
|
|
8393
8660
|
var s0;
|
|
8394
|
-
if (peg$
|
|
8661
|
+
if (peg$c105.test(input.charAt(peg$currPos))) {
|
|
8395
8662
|
s0 = input.charAt(peg$currPos);
|
|
8396
8663
|
peg$currPos++;
|
|
8397
8664
|
} else {
|
|
8398
8665
|
s0 = peg$FAILED;
|
|
8399
8666
|
if (peg$silentFails === 0) {
|
|
8400
|
-
peg$fail(peg$
|
|
8667
|
+
peg$fail(peg$c106);
|
|
8401
8668
|
}
|
|
8402
8669
|
}
|
|
8403
8670
|
return s0;
|
|
8404
8671
|
}
|
|
8405
8672
|
function peg$parseLt() {
|
|
8406
8673
|
var s0;
|
|
8407
|
-
if (peg$
|
|
8674
|
+
if (peg$c107.test(input.charAt(peg$currPos))) {
|
|
8408
8675
|
s0 = input.charAt(peg$currPos);
|
|
8409
8676
|
peg$currPos++;
|
|
8410
8677
|
} else {
|
|
8411
8678
|
s0 = peg$FAILED;
|
|
8412
8679
|
if (peg$silentFails === 0) {
|
|
8413
|
-
peg$fail(peg$
|
|
8680
|
+
peg$fail(peg$c108);
|
|
8414
8681
|
}
|
|
8415
8682
|
}
|
|
8416
8683
|
return s0;
|
|
8417
8684
|
}
|
|
8418
8685
|
function peg$parseLm() {
|
|
8419
8686
|
var s0;
|
|
8420
|
-
if (peg$
|
|
8687
|
+
if (peg$c109.test(input.charAt(peg$currPos))) {
|
|
8421
8688
|
s0 = input.charAt(peg$currPos);
|
|
8422
8689
|
peg$currPos++;
|
|
8423
8690
|
} else {
|
|
8424
8691
|
s0 = peg$FAILED;
|
|
8425
8692
|
if (peg$silentFails === 0) {
|
|
8426
|
-
peg$fail(peg$
|
|
8693
|
+
peg$fail(peg$c110);
|
|
8427
8694
|
}
|
|
8428
8695
|
}
|
|
8429
8696
|
return s0;
|
|
8430
8697
|
}
|
|
8431
8698
|
function peg$parseLo() {
|
|
8432
8699
|
var s0;
|
|
8433
|
-
if (peg$
|
|
8700
|
+
if (peg$c111.test(input.charAt(peg$currPos))) {
|
|
8434
8701
|
s0 = input.charAt(peg$currPos);
|
|
8435
8702
|
peg$currPos++;
|
|
8436
8703
|
} else {
|
|
8437
8704
|
s0 = peg$FAILED;
|
|
8438
8705
|
if (peg$silentFails === 0) {
|
|
8439
|
-
peg$fail(peg$
|
|
8706
|
+
peg$fail(peg$c112);
|
|
8440
8707
|
}
|
|
8441
8708
|
}
|
|
8442
8709
|
return s0;
|
|
8443
8710
|
}
|
|
8444
8711
|
function peg$parseNl() {
|
|
8445
8712
|
var s0;
|
|
8446
|
-
if (peg$
|
|
8713
|
+
if (peg$c113.test(input.charAt(peg$currPos))) {
|
|
8447
8714
|
s0 = input.charAt(peg$currPos);
|
|
8448
8715
|
peg$currPos++;
|
|
8449
8716
|
} else {
|
|
8450
8717
|
s0 = peg$FAILED;
|
|
8451
8718
|
if (peg$silentFails === 0) {
|
|
8452
|
-
peg$fail(peg$
|
|
8719
|
+
peg$fail(peg$c114);
|
|
8453
8720
|
}
|
|
8454
8721
|
}
|
|
8455
8722
|
return s0;
|
|
8456
8723
|
}
|
|
8457
8724
|
function peg$parseMn() {
|
|
8458
8725
|
var s0;
|
|
8459
|
-
if (peg$
|
|
8726
|
+
if (peg$c115.test(input.charAt(peg$currPos))) {
|
|
8460
8727
|
s0 = input.charAt(peg$currPos);
|
|
8461
8728
|
peg$currPos++;
|
|
8462
8729
|
} else {
|
|
8463
8730
|
s0 = peg$FAILED;
|
|
8464
8731
|
if (peg$silentFails === 0) {
|
|
8465
|
-
peg$fail(peg$
|
|
8732
|
+
peg$fail(peg$c116);
|
|
8466
8733
|
}
|
|
8467
8734
|
}
|
|
8468
8735
|
return s0;
|
|
8469
8736
|
}
|
|
8470
8737
|
function peg$parseMc() {
|
|
8471
8738
|
var s0;
|
|
8472
|
-
if (peg$
|
|
8739
|
+
if (peg$c117.test(input.charAt(peg$currPos))) {
|
|
8473
8740
|
s0 = input.charAt(peg$currPos);
|
|
8474
8741
|
peg$currPos++;
|
|
8475
8742
|
} else {
|
|
8476
8743
|
s0 = peg$FAILED;
|
|
8477
8744
|
if (peg$silentFails === 0) {
|
|
8478
|
-
peg$fail(peg$
|
|
8745
|
+
peg$fail(peg$c118);
|
|
8479
8746
|
}
|
|
8480
8747
|
}
|
|
8481
8748
|
return s0;
|
|
8482
8749
|
}
|
|
8483
8750
|
function peg$parseNd() {
|
|
8484
8751
|
var s0;
|
|
8485
|
-
if (peg$
|
|
8752
|
+
if (peg$c119.test(input.charAt(peg$currPos))) {
|
|
8486
8753
|
s0 = input.charAt(peg$currPos);
|
|
8487
8754
|
peg$currPos++;
|
|
8488
8755
|
} else {
|
|
8489
8756
|
s0 = peg$FAILED;
|
|
8490
8757
|
if (peg$silentFails === 0) {
|
|
8491
|
-
peg$fail(peg$
|
|
8758
|
+
peg$fail(peg$c120);
|
|
8492
8759
|
}
|
|
8493
8760
|
}
|
|
8494
8761
|
return s0;
|
|
8495
8762
|
}
|
|
8496
8763
|
function peg$parsePc() {
|
|
8497
8764
|
var s0;
|
|
8498
|
-
if (peg$
|
|
8765
|
+
if (peg$c121.test(input.charAt(peg$currPos))) {
|
|
8499
8766
|
s0 = input.charAt(peg$currPos);
|
|
8500
8767
|
peg$currPos++;
|
|
8501
8768
|
} else {
|
|
8502
8769
|
s0 = peg$FAILED;
|
|
8503
8770
|
if (peg$silentFails === 0) {
|
|
8504
|
-
peg$fail(peg$
|
|
8771
|
+
peg$fail(peg$c122);
|
|
8505
8772
|
}
|
|
8506
8773
|
}
|
|
8507
8774
|
return s0;
|
|
8508
8775
|
}
|
|
8509
8776
|
function peg$parseHexDigit() {
|
|
8510
8777
|
var s0;
|
|
8511
|
-
if (peg$
|
|
8778
|
+
if (peg$c125.test(input.charAt(peg$currPos))) {
|
|
8512
8779
|
s0 = input.charAt(peg$currPos);
|
|
8513
8780
|
peg$currPos++;
|
|
8514
8781
|
} else {
|
|
8515
8782
|
s0 = peg$FAILED;
|
|
8516
8783
|
if (peg$silentFails === 0) {
|
|
8517
|
-
peg$fail(peg$
|
|
8784
|
+
peg$fail(peg$c126);
|
|
8518
8785
|
}
|
|
8519
8786
|
}
|
|
8520
8787
|
return s0;
|
|
@@ -8522,13 +8789,13 @@ function peg$parse(input, options) {
|
|
|
8522
8789
|
function peg$parseBreakToken() {
|
|
8523
8790
|
var s0, s1, s2, s3;
|
|
8524
8791
|
s0 = peg$currPos;
|
|
8525
|
-
if (input.substr(peg$currPos, 5) === peg$
|
|
8526
|
-
s1 = peg$
|
|
8792
|
+
if (input.substr(peg$currPos, 5) === peg$c127) {
|
|
8793
|
+
s1 = peg$c127;
|
|
8527
8794
|
peg$currPos += 5;
|
|
8528
8795
|
} else {
|
|
8529
8796
|
s1 = peg$FAILED;
|
|
8530
8797
|
if (peg$silentFails === 0) {
|
|
8531
|
-
peg$fail(peg$
|
|
8798
|
+
peg$fail(peg$c128);
|
|
8532
8799
|
}
|
|
8533
8800
|
}
|
|
8534
8801
|
if (s1 !== peg$FAILED) {
|
|
@@ -8558,13 +8825,13 @@ function peg$parse(input, options) {
|
|
|
8558
8825
|
function peg$parseCaseToken() {
|
|
8559
8826
|
var s0, s1, s2, s3;
|
|
8560
8827
|
s0 = peg$currPos;
|
|
8561
|
-
if (input.substr(peg$currPos, 4) === peg$
|
|
8562
|
-
s1 = peg$
|
|
8828
|
+
if (input.substr(peg$currPos, 4) === peg$c129) {
|
|
8829
|
+
s1 = peg$c129;
|
|
8563
8830
|
peg$currPos += 4;
|
|
8564
8831
|
} else {
|
|
8565
8832
|
s1 = peg$FAILED;
|
|
8566
8833
|
if (peg$silentFails === 0) {
|
|
8567
|
-
peg$fail(peg$
|
|
8834
|
+
peg$fail(peg$c130);
|
|
8568
8835
|
}
|
|
8569
8836
|
}
|
|
8570
8837
|
if (s1 !== peg$FAILED) {
|
|
@@ -8594,13 +8861,13 @@ function peg$parse(input, options) {
|
|
|
8594
8861
|
function peg$parseCatchToken() {
|
|
8595
8862
|
var s0, s1, s2, s3;
|
|
8596
8863
|
s0 = peg$currPos;
|
|
8597
|
-
if (input.substr(peg$currPos, 5) === peg$
|
|
8598
|
-
s1 = peg$
|
|
8864
|
+
if (input.substr(peg$currPos, 5) === peg$c131) {
|
|
8865
|
+
s1 = peg$c131;
|
|
8599
8866
|
peg$currPos += 5;
|
|
8600
8867
|
} else {
|
|
8601
8868
|
s1 = peg$FAILED;
|
|
8602
8869
|
if (peg$silentFails === 0) {
|
|
8603
|
-
peg$fail(peg$
|
|
8870
|
+
peg$fail(peg$c132);
|
|
8604
8871
|
}
|
|
8605
8872
|
}
|
|
8606
8873
|
if (s1 !== peg$FAILED) {
|
|
@@ -8630,13 +8897,13 @@ function peg$parse(input, options) {
|
|
|
8630
8897
|
function peg$parseClassToken() {
|
|
8631
8898
|
var s0, s1, s2, s3;
|
|
8632
8899
|
s0 = peg$currPos;
|
|
8633
|
-
if (input.substr(peg$currPos, 5) === peg$
|
|
8634
|
-
s1 = peg$
|
|
8900
|
+
if (input.substr(peg$currPos, 5) === peg$c133) {
|
|
8901
|
+
s1 = peg$c133;
|
|
8635
8902
|
peg$currPos += 5;
|
|
8636
8903
|
} else {
|
|
8637
8904
|
s1 = peg$FAILED;
|
|
8638
8905
|
if (peg$silentFails === 0) {
|
|
8639
|
-
peg$fail(peg$
|
|
8906
|
+
peg$fail(peg$c134);
|
|
8640
8907
|
}
|
|
8641
8908
|
}
|
|
8642
8909
|
if (s1 !== peg$FAILED) {
|
|
@@ -8666,13 +8933,13 @@ function peg$parse(input, options) {
|
|
|
8666
8933
|
function peg$parseConstToken() {
|
|
8667
8934
|
var s0, s1, s2, s3;
|
|
8668
8935
|
s0 = peg$currPos;
|
|
8669
|
-
if (input.substr(peg$currPos, 5) === peg$
|
|
8670
|
-
s1 = peg$
|
|
8936
|
+
if (input.substr(peg$currPos, 5) === peg$c135) {
|
|
8937
|
+
s1 = peg$c135;
|
|
8671
8938
|
peg$currPos += 5;
|
|
8672
8939
|
} else {
|
|
8673
8940
|
s1 = peg$FAILED;
|
|
8674
8941
|
if (peg$silentFails === 0) {
|
|
8675
|
-
peg$fail(peg$
|
|
8942
|
+
peg$fail(peg$c136);
|
|
8676
8943
|
}
|
|
8677
8944
|
}
|
|
8678
8945
|
if (s1 !== peg$FAILED) {
|
|
@@ -8702,13 +8969,13 @@ function peg$parse(input, options) {
|
|
|
8702
8969
|
function peg$parseContinueToken() {
|
|
8703
8970
|
var s0, s1, s2, s3;
|
|
8704
8971
|
s0 = peg$currPos;
|
|
8705
|
-
if (input.substr(peg$currPos, 8) === peg$
|
|
8706
|
-
s1 = peg$
|
|
8972
|
+
if (input.substr(peg$currPos, 8) === peg$c137) {
|
|
8973
|
+
s1 = peg$c137;
|
|
8707
8974
|
peg$currPos += 8;
|
|
8708
8975
|
} else {
|
|
8709
8976
|
s1 = peg$FAILED;
|
|
8710
8977
|
if (peg$silentFails === 0) {
|
|
8711
|
-
peg$fail(peg$
|
|
8978
|
+
peg$fail(peg$c138);
|
|
8712
8979
|
}
|
|
8713
8980
|
}
|
|
8714
8981
|
if (s1 !== peg$FAILED) {
|
|
@@ -8738,13 +9005,13 @@ function peg$parse(input, options) {
|
|
|
8738
9005
|
function peg$parseDebuggerToken() {
|
|
8739
9006
|
var s0, s1, s2, s3;
|
|
8740
9007
|
s0 = peg$currPos;
|
|
8741
|
-
if (input.substr(peg$currPos, 8) === peg$
|
|
8742
|
-
s1 = peg$
|
|
9008
|
+
if (input.substr(peg$currPos, 8) === peg$c139) {
|
|
9009
|
+
s1 = peg$c139;
|
|
8743
9010
|
peg$currPos += 8;
|
|
8744
9011
|
} else {
|
|
8745
9012
|
s1 = peg$FAILED;
|
|
8746
9013
|
if (peg$silentFails === 0) {
|
|
8747
|
-
peg$fail(peg$
|
|
9014
|
+
peg$fail(peg$c140);
|
|
8748
9015
|
}
|
|
8749
9016
|
}
|
|
8750
9017
|
if (s1 !== peg$FAILED) {
|
|
@@ -8774,13 +9041,13 @@ function peg$parse(input, options) {
|
|
|
8774
9041
|
function peg$parseDefaultToken() {
|
|
8775
9042
|
var s0, s1, s2, s3;
|
|
8776
9043
|
s0 = peg$currPos;
|
|
8777
|
-
if (input.substr(peg$currPos, 7) === peg$
|
|
8778
|
-
s1 = peg$
|
|
9044
|
+
if (input.substr(peg$currPos, 7) === peg$c141) {
|
|
9045
|
+
s1 = peg$c141;
|
|
8779
9046
|
peg$currPos += 7;
|
|
8780
9047
|
} else {
|
|
8781
9048
|
s1 = peg$FAILED;
|
|
8782
9049
|
if (peg$silentFails === 0) {
|
|
8783
|
-
peg$fail(peg$
|
|
9050
|
+
peg$fail(peg$c142);
|
|
8784
9051
|
}
|
|
8785
9052
|
}
|
|
8786
9053
|
if (s1 !== peg$FAILED) {
|
|
@@ -8810,13 +9077,13 @@ function peg$parse(input, options) {
|
|
|
8810
9077
|
function peg$parseDeleteToken() {
|
|
8811
9078
|
var s0, s1, s2, s3;
|
|
8812
9079
|
s0 = peg$currPos;
|
|
8813
|
-
if (input.substr(peg$currPos, 6) === peg$
|
|
8814
|
-
s1 = peg$
|
|
9080
|
+
if (input.substr(peg$currPos, 6) === peg$c143) {
|
|
9081
|
+
s1 = peg$c143;
|
|
8815
9082
|
peg$currPos += 6;
|
|
8816
9083
|
} else {
|
|
8817
9084
|
s1 = peg$FAILED;
|
|
8818
9085
|
if (peg$silentFails === 0) {
|
|
8819
|
-
peg$fail(peg$
|
|
9086
|
+
peg$fail(peg$c144);
|
|
8820
9087
|
}
|
|
8821
9088
|
}
|
|
8822
9089
|
if (s1 !== peg$FAILED) {
|
|
@@ -8846,13 +9113,13 @@ function peg$parse(input, options) {
|
|
|
8846
9113
|
function peg$parseDoToken() {
|
|
8847
9114
|
var s0, s1, s2, s3;
|
|
8848
9115
|
s0 = peg$currPos;
|
|
8849
|
-
if (input.substr(peg$currPos, 2) === peg$
|
|
8850
|
-
s1 = peg$
|
|
9116
|
+
if (input.substr(peg$currPos, 2) === peg$c145) {
|
|
9117
|
+
s1 = peg$c145;
|
|
8851
9118
|
peg$currPos += 2;
|
|
8852
9119
|
} else {
|
|
8853
9120
|
s1 = peg$FAILED;
|
|
8854
9121
|
if (peg$silentFails === 0) {
|
|
8855
|
-
peg$fail(peg$
|
|
9122
|
+
peg$fail(peg$c146);
|
|
8856
9123
|
}
|
|
8857
9124
|
}
|
|
8858
9125
|
if (s1 !== peg$FAILED) {
|
|
@@ -8882,13 +9149,13 @@ function peg$parse(input, options) {
|
|
|
8882
9149
|
function peg$parseElseToken() {
|
|
8883
9150
|
var s0, s1, s2, s3;
|
|
8884
9151
|
s0 = peg$currPos;
|
|
8885
|
-
if (input.substr(peg$currPos, 4) === peg$
|
|
8886
|
-
s1 = peg$
|
|
9152
|
+
if (input.substr(peg$currPos, 4) === peg$c147) {
|
|
9153
|
+
s1 = peg$c147;
|
|
8887
9154
|
peg$currPos += 4;
|
|
8888
9155
|
} else {
|
|
8889
9156
|
s1 = peg$FAILED;
|
|
8890
9157
|
if (peg$silentFails === 0) {
|
|
8891
|
-
peg$fail(peg$
|
|
9158
|
+
peg$fail(peg$c148);
|
|
8892
9159
|
}
|
|
8893
9160
|
}
|
|
8894
9161
|
if (s1 !== peg$FAILED) {
|
|
@@ -8954,13 +9221,13 @@ function peg$parse(input, options) {
|
|
|
8954
9221
|
function peg$parseExportToken() {
|
|
8955
9222
|
var s0, s1, s2, s3;
|
|
8956
9223
|
s0 = peg$currPos;
|
|
8957
|
-
if (input.substr(peg$currPos, 6) === peg$
|
|
8958
|
-
s1 = peg$
|
|
9224
|
+
if (input.substr(peg$currPos, 6) === peg$c149) {
|
|
9225
|
+
s1 = peg$c149;
|
|
8959
9226
|
peg$currPos += 6;
|
|
8960
9227
|
} else {
|
|
8961
9228
|
s1 = peg$FAILED;
|
|
8962
9229
|
if (peg$silentFails === 0) {
|
|
8963
|
-
peg$fail(peg$
|
|
9230
|
+
peg$fail(peg$c150);
|
|
8964
9231
|
}
|
|
8965
9232
|
}
|
|
8966
9233
|
if (s1 !== peg$FAILED) {
|
|
@@ -8990,13 +9257,13 @@ function peg$parse(input, options) {
|
|
|
8990
9257
|
function peg$parseExtendsToken() {
|
|
8991
9258
|
var s0, s1, s2, s3;
|
|
8992
9259
|
s0 = peg$currPos;
|
|
8993
|
-
if (input.substr(peg$currPos, 7) === peg$
|
|
8994
|
-
s1 = peg$
|
|
9260
|
+
if (input.substr(peg$currPos, 7) === peg$c151) {
|
|
9261
|
+
s1 = peg$c151;
|
|
8995
9262
|
peg$currPos += 7;
|
|
8996
9263
|
} else {
|
|
8997
9264
|
s1 = peg$FAILED;
|
|
8998
9265
|
if (peg$silentFails === 0) {
|
|
8999
|
-
peg$fail(peg$
|
|
9266
|
+
peg$fail(peg$c152);
|
|
9000
9267
|
}
|
|
9001
9268
|
}
|
|
9002
9269
|
if (s1 !== peg$FAILED) {
|
|
@@ -9026,13 +9293,13 @@ function peg$parse(input, options) {
|
|
|
9026
9293
|
function peg$parseFalseToken() {
|
|
9027
9294
|
var s0, s1, s2, s3;
|
|
9028
9295
|
s0 = peg$currPos;
|
|
9029
|
-
if (input.substr(peg$currPos, 5) === peg$
|
|
9030
|
-
s1 = peg$
|
|
9296
|
+
if (input.substr(peg$currPos, 5) === peg$c153) {
|
|
9297
|
+
s1 = peg$c153;
|
|
9031
9298
|
peg$currPos += 5;
|
|
9032
9299
|
} else {
|
|
9033
9300
|
s1 = peg$FAILED;
|
|
9034
9301
|
if (peg$silentFails === 0) {
|
|
9035
|
-
peg$fail(peg$
|
|
9302
|
+
peg$fail(peg$c154);
|
|
9036
9303
|
}
|
|
9037
9304
|
}
|
|
9038
9305
|
if (s1 !== peg$FAILED) {
|
|
@@ -9062,13 +9329,13 @@ function peg$parse(input, options) {
|
|
|
9062
9329
|
function peg$parseFinallyToken() {
|
|
9063
9330
|
var s0, s1, s2, s3;
|
|
9064
9331
|
s0 = peg$currPos;
|
|
9065
|
-
if (input.substr(peg$currPos, 7) === peg$
|
|
9066
|
-
s1 = peg$
|
|
9332
|
+
if (input.substr(peg$currPos, 7) === peg$c155) {
|
|
9333
|
+
s1 = peg$c155;
|
|
9067
9334
|
peg$currPos += 7;
|
|
9068
9335
|
} else {
|
|
9069
9336
|
s1 = peg$FAILED;
|
|
9070
9337
|
if (peg$silentFails === 0) {
|
|
9071
|
-
peg$fail(peg$
|
|
9338
|
+
peg$fail(peg$c156);
|
|
9072
9339
|
}
|
|
9073
9340
|
}
|
|
9074
9341
|
if (s1 !== peg$FAILED) {
|
|
@@ -9098,13 +9365,13 @@ function peg$parse(input, options) {
|
|
|
9098
9365
|
function peg$parseForToken() {
|
|
9099
9366
|
var s0, s1, s2, s3;
|
|
9100
9367
|
s0 = peg$currPos;
|
|
9101
|
-
if (input.substr(peg$currPos, 3) === peg$
|
|
9102
|
-
s1 = peg$
|
|
9368
|
+
if (input.substr(peg$currPos, 3) === peg$c157) {
|
|
9369
|
+
s1 = peg$c157;
|
|
9103
9370
|
peg$currPos += 3;
|
|
9104
9371
|
} else {
|
|
9105
9372
|
s1 = peg$FAILED;
|
|
9106
9373
|
if (peg$silentFails === 0) {
|
|
9107
|
-
peg$fail(peg$
|
|
9374
|
+
peg$fail(peg$c158);
|
|
9108
9375
|
}
|
|
9109
9376
|
}
|
|
9110
9377
|
if (s1 !== peg$FAILED) {
|
|
@@ -9134,13 +9401,13 @@ function peg$parse(input, options) {
|
|
|
9134
9401
|
function peg$parseFunctionToken() {
|
|
9135
9402
|
var s0, s1, s2, s3;
|
|
9136
9403
|
s0 = peg$currPos;
|
|
9137
|
-
if (input.substr(peg$currPos, 8) === peg$
|
|
9138
|
-
s1 = peg$
|
|
9404
|
+
if (input.substr(peg$currPos, 8) === peg$c159) {
|
|
9405
|
+
s1 = peg$c159;
|
|
9139
9406
|
peg$currPos += 8;
|
|
9140
9407
|
} else {
|
|
9141
9408
|
s1 = peg$FAILED;
|
|
9142
9409
|
if (peg$silentFails === 0) {
|
|
9143
|
-
peg$fail(peg$
|
|
9410
|
+
peg$fail(peg$c160);
|
|
9144
9411
|
}
|
|
9145
9412
|
}
|
|
9146
9413
|
if (s1 !== peg$FAILED) {
|
|
@@ -9170,13 +9437,13 @@ function peg$parse(input, options) {
|
|
|
9170
9437
|
function peg$parseIfToken() {
|
|
9171
9438
|
var s0, s1, s2, s3;
|
|
9172
9439
|
s0 = peg$currPos;
|
|
9173
|
-
if (input.substr(peg$currPos, 2) === peg$
|
|
9174
|
-
s1 = peg$
|
|
9440
|
+
if (input.substr(peg$currPos, 2) === peg$c163) {
|
|
9441
|
+
s1 = peg$c163;
|
|
9175
9442
|
peg$currPos += 2;
|
|
9176
9443
|
} else {
|
|
9177
9444
|
s1 = peg$FAILED;
|
|
9178
9445
|
if (peg$silentFails === 0) {
|
|
9179
|
-
peg$fail(peg$
|
|
9446
|
+
peg$fail(peg$c164);
|
|
9180
9447
|
}
|
|
9181
9448
|
}
|
|
9182
9449
|
if (s1 !== peg$FAILED) {
|
|
@@ -9206,13 +9473,13 @@ function peg$parse(input, options) {
|
|
|
9206
9473
|
function peg$parseImportToken() {
|
|
9207
9474
|
var s0, s1, s2, s3;
|
|
9208
9475
|
s0 = peg$currPos;
|
|
9209
|
-
if (input.substr(peg$currPos, 6) === peg$
|
|
9210
|
-
s1 = peg$
|
|
9476
|
+
if (input.substr(peg$currPos, 6) === peg$c165) {
|
|
9477
|
+
s1 = peg$c165;
|
|
9211
9478
|
peg$currPos += 6;
|
|
9212
9479
|
} else {
|
|
9213
9480
|
s1 = peg$FAILED;
|
|
9214
9481
|
if (peg$silentFails === 0) {
|
|
9215
|
-
peg$fail(peg$
|
|
9482
|
+
peg$fail(peg$c166);
|
|
9216
9483
|
}
|
|
9217
9484
|
}
|
|
9218
9485
|
if (s1 !== peg$FAILED) {
|
|
@@ -9242,13 +9509,13 @@ function peg$parse(input, options) {
|
|
|
9242
9509
|
function peg$parseInstanceofToken() {
|
|
9243
9510
|
var s0, s1, s2, s3;
|
|
9244
9511
|
s0 = peg$currPos;
|
|
9245
|
-
if (input.substr(peg$currPos, 10) === peg$
|
|
9246
|
-
s1 = peg$
|
|
9512
|
+
if (input.substr(peg$currPos, 10) === peg$c167) {
|
|
9513
|
+
s1 = peg$c167;
|
|
9247
9514
|
peg$currPos += 10;
|
|
9248
9515
|
} else {
|
|
9249
9516
|
s1 = peg$FAILED;
|
|
9250
9517
|
if (peg$silentFails === 0) {
|
|
9251
|
-
peg$fail(peg$
|
|
9518
|
+
peg$fail(peg$c168);
|
|
9252
9519
|
}
|
|
9253
9520
|
}
|
|
9254
9521
|
if (s1 !== peg$FAILED) {
|
|
@@ -9278,13 +9545,13 @@ function peg$parse(input, options) {
|
|
|
9278
9545
|
function peg$parseInToken() {
|
|
9279
9546
|
var s0, s1, s2, s3;
|
|
9280
9547
|
s0 = peg$currPos;
|
|
9281
|
-
if (input.substr(peg$currPos, 2) === peg$
|
|
9282
|
-
s1 = peg$
|
|
9548
|
+
if (input.substr(peg$currPos, 2) === peg$c169) {
|
|
9549
|
+
s1 = peg$c169;
|
|
9283
9550
|
peg$currPos += 2;
|
|
9284
9551
|
} else {
|
|
9285
9552
|
s1 = peg$FAILED;
|
|
9286
9553
|
if (peg$silentFails === 0) {
|
|
9287
|
-
peg$fail(peg$
|
|
9554
|
+
peg$fail(peg$c170);
|
|
9288
9555
|
}
|
|
9289
9556
|
}
|
|
9290
9557
|
if (s1 !== peg$FAILED) {
|
|
@@ -9314,13 +9581,13 @@ function peg$parse(input, options) {
|
|
|
9314
9581
|
function peg$parseNewToken() {
|
|
9315
9582
|
var s0, s1, s2, s3;
|
|
9316
9583
|
s0 = peg$currPos;
|
|
9317
|
-
if (input.substr(peg$currPos, 3) === peg$
|
|
9318
|
-
s1 = peg$
|
|
9584
|
+
if (input.substr(peg$currPos, 3) === peg$c171) {
|
|
9585
|
+
s1 = peg$c171;
|
|
9319
9586
|
peg$currPos += 3;
|
|
9320
9587
|
} else {
|
|
9321
9588
|
s1 = peg$FAILED;
|
|
9322
9589
|
if (peg$silentFails === 0) {
|
|
9323
|
-
peg$fail(peg$
|
|
9590
|
+
peg$fail(peg$c172);
|
|
9324
9591
|
}
|
|
9325
9592
|
}
|
|
9326
9593
|
if (s1 !== peg$FAILED) {
|
|
@@ -9350,13 +9617,13 @@ function peg$parse(input, options) {
|
|
|
9350
9617
|
function peg$parseNullToken() {
|
|
9351
9618
|
var s0, s1, s2, s3;
|
|
9352
9619
|
s0 = peg$currPos;
|
|
9353
|
-
if (input.substr(peg$currPos, 4) === peg$
|
|
9354
|
-
s1 = peg$
|
|
9620
|
+
if (input.substr(peg$currPos, 4) === peg$c173) {
|
|
9621
|
+
s1 = peg$c173;
|
|
9355
9622
|
peg$currPos += 4;
|
|
9356
9623
|
} else {
|
|
9357
9624
|
s1 = peg$FAILED;
|
|
9358
9625
|
if (peg$silentFails === 0) {
|
|
9359
|
-
peg$fail(peg$
|
|
9626
|
+
peg$fail(peg$c174);
|
|
9360
9627
|
}
|
|
9361
9628
|
}
|
|
9362
9629
|
if (s1 !== peg$FAILED) {
|
|
@@ -9386,13 +9653,13 @@ function peg$parse(input, options) {
|
|
|
9386
9653
|
function peg$parseReturnToken() {
|
|
9387
9654
|
var s0, s1, s2, s3;
|
|
9388
9655
|
s0 = peg$currPos;
|
|
9389
|
-
if (input.substr(peg$currPos, 6) === peg$
|
|
9390
|
-
s1 = peg$
|
|
9656
|
+
if (input.substr(peg$currPos, 6) === peg$c175) {
|
|
9657
|
+
s1 = peg$c175;
|
|
9391
9658
|
peg$currPos += 6;
|
|
9392
9659
|
} else {
|
|
9393
9660
|
s1 = peg$FAILED;
|
|
9394
9661
|
if (peg$silentFails === 0) {
|
|
9395
|
-
peg$fail(peg$
|
|
9662
|
+
peg$fail(peg$c176);
|
|
9396
9663
|
}
|
|
9397
9664
|
}
|
|
9398
9665
|
if (s1 !== peg$FAILED) {
|
|
@@ -9422,13 +9689,13 @@ function peg$parse(input, options) {
|
|
|
9422
9689
|
function peg$parseSuperToken() {
|
|
9423
9690
|
var s0, s1, s2, s3;
|
|
9424
9691
|
s0 = peg$currPos;
|
|
9425
|
-
if (input.substr(peg$currPos, 5) === peg$
|
|
9426
|
-
s1 = peg$
|
|
9692
|
+
if (input.substr(peg$currPos, 5) === peg$c179) {
|
|
9693
|
+
s1 = peg$c179;
|
|
9427
9694
|
peg$currPos += 5;
|
|
9428
9695
|
} else {
|
|
9429
9696
|
s1 = peg$FAILED;
|
|
9430
9697
|
if (peg$silentFails === 0) {
|
|
9431
|
-
peg$fail(peg$
|
|
9698
|
+
peg$fail(peg$c180);
|
|
9432
9699
|
}
|
|
9433
9700
|
}
|
|
9434
9701
|
if (s1 !== peg$FAILED) {
|
|
@@ -9458,13 +9725,13 @@ function peg$parse(input, options) {
|
|
|
9458
9725
|
function peg$parseSwitchToken() {
|
|
9459
9726
|
var s0, s1, s2, s3;
|
|
9460
9727
|
s0 = peg$currPos;
|
|
9461
|
-
if (input.substr(peg$currPos, 6) === peg$
|
|
9462
|
-
s1 = peg$
|
|
9728
|
+
if (input.substr(peg$currPos, 6) === peg$c181) {
|
|
9729
|
+
s1 = peg$c181;
|
|
9463
9730
|
peg$currPos += 6;
|
|
9464
9731
|
} else {
|
|
9465
9732
|
s1 = peg$FAILED;
|
|
9466
9733
|
if (peg$silentFails === 0) {
|
|
9467
|
-
peg$fail(peg$
|
|
9734
|
+
peg$fail(peg$c182);
|
|
9468
9735
|
}
|
|
9469
9736
|
}
|
|
9470
9737
|
if (s1 !== peg$FAILED) {
|
|
@@ -9494,13 +9761,13 @@ function peg$parse(input, options) {
|
|
|
9494
9761
|
function peg$parseThisToken() {
|
|
9495
9762
|
var s0, s1, s2, s3;
|
|
9496
9763
|
s0 = peg$currPos;
|
|
9497
|
-
if (input.substr(peg$currPos, 4) === peg$
|
|
9498
|
-
s1 = peg$
|
|
9764
|
+
if (input.substr(peg$currPos, 4) === peg$c183) {
|
|
9765
|
+
s1 = peg$c183;
|
|
9499
9766
|
peg$currPos += 4;
|
|
9500
9767
|
} else {
|
|
9501
9768
|
s1 = peg$FAILED;
|
|
9502
9769
|
if (peg$silentFails === 0) {
|
|
9503
|
-
peg$fail(peg$
|
|
9770
|
+
peg$fail(peg$c184);
|
|
9504
9771
|
}
|
|
9505
9772
|
}
|
|
9506
9773
|
if (s1 !== peg$FAILED) {
|
|
@@ -9530,13 +9797,13 @@ function peg$parse(input, options) {
|
|
|
9530
9797
|
function peg$parseThrowToken() {
|
|
9531
9798
|
var s0, s1, s2, s3;
|
|
9532
9799
|
s0 = peg$currPos;
|
|
9533
|
-
if (input.substr(peg$currPos, 5) === peg$
|
|
9534
|
-
s1 = peg$
|
|
9800
|
+
if (input.substr(peg$currPos, 5) === peg$c185) {
|
|
9801
|
+
s1 = peg$c185;
|
|
9535
9802
|
peg$currPos += 5;
|
|
9536
9803
|
} else {
|
|
9537
9804
|
s1 = peg$FAILED;
|
|
9538
9805
|
if (peg$silentFails === 0) {
|
|
9539
|
-
peg$fail(peg$
|
|
9806
|
+
peg$fail(peg$c186);
|
|
9540
9807
|
}
|
|
9541
9808
|
}
|
|
9542
9809
|
if (s1 !== peg$FAILED) {
|
|
@@ -9566,13 +9833,13 @@ function peg$parse(input, options) {
|
|
|
9566
9833
|
function peg$parseTrueToken() {
|
|
9567
9834
|
var s0, s1, s2, s3;
|
|
9568
9835
|
s0 = peg$currPos;
|
|
9569
|
-
if (input.substr(peg$currPos, 4) === peg$
|
|
9570
|
-
s1 = peg$
|
|
9836
|
+
if (input.substr(peg$currPos, 4) === peg$c187) {
|
|
9837
|
+
s1 = peg$c187;
|
|
9571
9838
|
peg$currPos += 4;
|
|
9572
9839
|
} else {
|
|
9573
9840
|
s1 = peg$FAILED;
|
|
9574
9841
|
if (peg$silentFails === 0) {
|
|
9575
|
-
peg$fail(peg$
|
|
9842
|
+
peg$fail(peg$c188);
|
|
9576
9843
|
}
|
|
9577
9844
|
}
|
|
9578
9845
|
if (s1 !== peg$FAILED) {
|
|
@@ -9602,13 +9869,13 @@ function peg$parse(input, options) {
|
|
|
9602
9869
|
function peg$parseTryToken() {
|
|
9603
9870
|
var s0, s1, s2, s3;
|
|
9604
9871
|
s0 = peg$currPos;
|
|
9605
|
-
if (input.substr(peg$currPos, 3) === peg$
|
|
9606
|
-
s1 = peg$
|
|
9872
|
+
if (input.substr(peg$currPos, 3) === peg$c189) {
|
|
9873
|
+
s1 = peg$c189;
|
|
9607
9874
|
peg$currPos += 3;
|
|
9608
9875
|
} else {
|
|
9609
9876
|
s1 = peg$FAILED;
|
|
9610
9877
|
if (peg$silentFails === 0) {
|
|
9611
|
-
peg$fail(peg$
|
|
9878
|
+
peg$fail(peg$c190);
|
|
9612
9879
|
}
|
|
9613
9880
|
}
|
|
9614
9881
|
if (s1 !== peg$FAILED) {
|
|
@@ -9638,13 +9905,13 @@ function peg$parse(input, options) {
|
|
|
9638
9905
|
function peg$parseTypeofToken() {
|
|
9639
9906
|
var s0, s1, s2, s3;
|
|
9640
9907
|
s0 = peg$currPos;
|
|
9641
|
-
if (input.substr(peg$currPos, 6) === peg$
|
|
9642
|
-
s1 = peg$
|
|
9908
|
+
if (input.substr(peg$currPos, 6) === peg$c191) {
|
|
9909
|
+
s1 = peg$c191;
|
|
9643
9910
|
peg$currPos += 6;
|
|
9644
9911
|
} else {
|
|
9645
9912
|
s1 = peg$FAILED;
|
|
9646
9913
|
if (peg$silentFails === 0) {
|
|
9647
|
-
peg$fail(peg$
|
|
9914
|
+
peg$fail(peg$c192);
|
|
9648
9915
|
}
|
|
9649
9916
|
}
|
|
9650
9917
|
if (s1 !== peg$FAILED) {
|
|
@@ -9674,13 +9941,13 @@ function peg$parse(input, options) {
|
|
|
9674
9941
|
function peg$parseVarToken() {
|
|
9675
9942
|
var s0, s1, s2, s3;
|
|
9676
9943
|
s0 = peg$currPos;
|
|
9677
|
-
if (input.substr(peg$currPos, 3) === peg$
|
|
9678
|
-
s1 = peg$
|
|
9944
|
+
if (input.substr(peg$currPos, 3) === peg$c193) {
|
|
9945
|
+
s1 = peg$c193;
|
|
9679
9946
|
peg$currPos += 3;
|
|
9680
9947
|
} else {
|
|
9681
9948
|
s1 = peg$FAILED;
|
|
9682
9949
|
if (peg$silentFails === 0) {
|
|
9683
|
-
peg$fail(peg$
|
|
9950
|
+
peg$fail(peg$c194);
|
|
9684
9951
|
}
|
|
9685
9952
|
}
|
|
9686
9953
|
if (s1 !== peg$FAILED) {
|
|
@@ -9710,13 +9977,13 @@ function peg$parse(input, options) {
|
|
|
9710
9977
|
function peg$parseVoidToken() {
|
|
9711
9978
|
var s0, s1, s2, s3;
|
|
9712
9979
|
s0 = peg$currPos;
|
|
9713
|
-
if (input.substr(peg$currPos, 4) === peg$
|
|
9714
|
-
s1 = peg$
|
|
9980
|
+
if (input.substr(peg$currPos, 4) === peg$c195) {
|
|
9981
|
+
s1 = peg$c195;
|
|
9715
9982
|
peg$currPos += 4;
|
|
9716
9983
|
} else {
|
|
9717
9984
|
s1 = peg$FAILED;
|
|
9718
9985
|
if (peg$silentFails === 0) {
|
|
9719
|
-
peg$fail(peg$
|
|
9986
|
+
peg$fail(peg$c196);
|
|
9720
9987
|
}
|
|
9721
9988
|
}
|
|
9722
9989
|
if (s1 !== peg$FAILED) {
|
|
@@ -9746,13 +10013,13 @@ function peg$parse(input, options) {
|
|
|
9746
10013
|
function peg$parseWhileToken() {
|
|
9747
10014
|
var s0, s1, s2, s3;
|
|
9748
10015
|
s0 = peg$currPos;
|
|
9749
|
-
if (input.substr(peg$currPos, 5) === peg$
|
|
9750
|
-
s1 = peg$
|
|
10016
|
+
if (input.substr(peg$currPos, 5) === peg$c197) {
|
|
10017
|
+
s1 = peg$c197;
|
|
9751
10018
|
peg$currPos += 5;
|
|
9752
10019
|
} else {
|
|
9753
10020
|
s1 = peg$FAILED;
|
|
9754
10021
|
if (peg$silentFails === 0) {
|
|
9755
|
-
peg$fail(peg$
|
|
10022
|
+
peg$fail(peg$c198);
|
|
9756
10023
|
}
|
|
9757
10024
|
}
|
|
9758
10025
|
if (s1 !== peg$FAILED) {
|
|
@@ -9782,13 +10049,13 @@ function peg$parse(input, options) {
|
|
|
9782
10049
|
function peg$parseWithToken() {
|
|
9783
10050
|
var s0, s1, s2, s3;
|
|
9784
10051
|
s0 = peg$currPos;
|
|
9785
|
-
if (input.substr(peg$currPos, 4) === peg$
|
|
9786
|
-
s1 = peg$
|
|
10052
|
+
if (input.substr(peg$currPos, 4) === peg$c199) {
|
|
10053
|
+
s1 = peg$c199;
|
|
9787
10054
|
peg$currPos += 4;
|
|
9788
10055
|
} else {
|
|
9789
10056
|
s1 = peg$FAILED;
|
|
9790
10057
|
if (peg$silentFails === 0) {
|
|
9791
|
-
peg$fail(peg$
|
|
10058
|
+
peg$fail(peg$c200);
|
|
9792
10059
|
}
|
|
9793
10060
|
}
|
|
9794
10061
|
if (s1 !== peg$FAILED) {
|
|
@@ -9880,6 +10147,8 @@ class Variables {
|
|
|
9880
10147
|
curr = curr.props[member];
|
|
9881
10148
|
if (isImportedType(curr))
|
|
9882
10149
|
curr = curr.type;
|
|
10150
|
+
if (isRecursiveType(curr) && curr.resolvedType)
|
|
10151
|
+
curr = curr.resolvedType;
|
|
9883
10152
|
} else {
|
|
9884
10153
|
validations.push(`the data field [${accessor.join(".")}] not found in Jay data`);
|
|
9885
10154
|
curr = JayUnknown;
|
|
@@ -10059,6 +10328,50 @@ function isConditional(node2) {
|
|
|
10059
10328
|
function isForEach(node2) {
|
|
10060
10329
|
return node2.nodeType !== NodeType.TEXT_NODE && node2.hasAttribute("forEach");
|
|
10061
10330
|
}
|
|
10331
|
+
function isRecurse(node2) {
|
|
10332
|
+
return node2.nodeType !== NodeType.TEXT_NODE && node2.rawTagName?.toLowerCase() === "recurse";
|
|
10333
|
+
}
|
|
10334
|
+
function isRecurseWithData(node2) {
|
|
10335
|
+
if (!isRecurse(node2))
|
|
10336
|
+
return false;
|
|
10337
|
+
const accessor = node2.getAttribute("accessor");
|
|
10338
|
+
return accessor != null && accessor !== ".";
|
|
10339
|
+
}
|
|
10340
|
+
function isWithData(node2) {
|
|
10341
|
+
if (node2.nodeType === NodeType.TEXT_NODE)
|
|
10342
|
+
return false;
|
|
10343
|
+
const element = node2;
|
|
10344
|
+
if (!element.rawTagName)
|
|
10345
|
+
return false;
|
|
10346
|
+
return element.rawTagName.toLowerCase() === "with-data";
|
|
10347
|
+
}
|
|
10348
|
+
const AsyncDirectiveTypes = {
|
|
10349
|
+
resolved: {
|
|
10350
|
+
directive: "when-resolved",
|
|
10351
|
+
import: Import.resolved,
|
|
10352
|
+
name: "resolved",
|
|
10353
|
+
isAsync: true
|
|
10354
|
+
},
|
|
10355
|
+
loading: { directive: "when-loading", import: Import.pending, name: "pending", isAsync: true },
|
|
10356
|
+
rejected: {
|
|
10357
|
+
directive: "when-rejected",
|
|
10358
|
+
import: Import.rejected,
|
|
10359
|
+
name: "rejected",
|
|
10360
|
+
isAsync: true
|
|
10361
|
+
},
|
|
10362
|
+
notAsync: { isAsync: false }
|
|
10363
|
+
};
|
|
10364
|
+
function checkAsync(node2) {
|
|
10365
|
+
if (node2.nodeType !== NodeType.TEXT_NODE) {
|
|
10366
|
+
if (node2.hasAttribute(AsyncDirectiveTypes.resolved.directive))
|
|
10367
|
+
return AsyncDirectiveTypes.resolved;
|
|
10368
|
+
else if (node2.hasAttribute(AsyncDirectiveTypes.loading.directive))
|
|
10369
|
+
return AsyncDirectiveTypes.loading;
|
|
10370
|
+
else if (node2.hasAttribute(AsyncDirectiveTypes.rejected.directive))
|
|
10371
|
+
return AsyncDirectiveTypes.rejected;
|
|
10372
|
+
}
|
|
10373
|
+
return AsyncDirectiveTypes.notAsync;
|
|
10374
|
+
}
|
|
10062
10375
|
function ensureSingleChildElement(node2) {
|
|
10063
10376
|
const elements = node2.childNodes.filter((child) => child.nodeType === NodeType.ELEMENT_NODE);
|
|
10064
10377
|
if (elements.length === 1) {
|
|
@@ -10081,7 +10394,8 @@ function renderInterface(aType) {
|
|
|
10081
10394
|
genInterface += Object.keys(aType.props).map((prop) => {
|
|
10082
10395
|
let childType = aType.props[prop];
|
|
10083
10396
|
if (childType instanceof JayImportedType) {
|
|
10084
|
-
|
|
10397
|
+
const optional = childType.isOptional ? "?" : "";
|
|
10398
|
+
return ` ${prop}${optional}: ${childType.name}`;
|
|
10085
10399
|
} else if (isObjectType$1(childType)) {
|
|
10086
10400
|
childInterfaces.push(renderInterface(childType));
|
|
10087
10401
|
return ` ${prop}: ${childType.name}`;
|
|
@@ -10093,17 +10407,42 @@ function renderInterface(aType) {
|
|
|
10093
10407
|
}
|
|
10094
10408
|
if (arrayItemType instanceof JayImportedType) {
|
|
10095
10409
|
return ` ${prop}: Array<${arrayItemType.name}>`;
|
|
10410
|
+
} else if (isRecursiveType(arrayItemType)) {
|
|
10411
|
+
if (!arrayItemType.resolvedType) {
|
|
10412
|
+
throw new Error(
|
|
10413
|
+
`Recursive type not resolved: ${arrayItemType.referencePath}`
|
|
10414
|
+
);
|
|
10415
|
+
}
|
|
10416
|
+
return ` ${prop}: Array<${arrayItemType.resolvedType.name}>`;
|
|
10096
10417
|
} else {
|
|
10097
10418
|
throw new Error("not implemented yet");
|
|
10098
10419
|
}
|
|
10099
|
-
} else if (isAtomicType(childType))
|
|
10420
|
+
} else if (isAtomicType(childType)) {
|
|
10100
10421
|
return ` ${prop}: ${childType.name}`;
|
|
10101
|
-
else if (
|
|
10422
|
+
} else if (isPromiseType(childType)) {
|
|
10423
|
+
let promiseItemType = childType.itemType;
|
|
10424
|
+
if (isAtomicType(promiseItemType))
|
|
10425
|
+
return ` ${prop}: Promise<${promiseItemType.name}>`;
|
|
10426
|
+
else if (isObjectType$1(promiseItemType)) {
|
|
10427
|
+
childInterfaces.push(renderInterface(promiseItemType));
|
|
10428
|
+
return ` ${prop}: Promise<${promiseItemType.name}>`;
|
|
10429
|
+
} else if (isArrayType$1(promiseItemType) && isObjectType$1(promiseItemType.itemType)) {
|
|
10430
|
+
childInterfaces.push(renderInterface(promiseItemType.itemType));
|
|
10431
|
+
return ` ${prop}: Promise<Array<${promiseItemType.itemType.name}>>`;
|
|
10432
|
+
}
|
|
10433
|
+
} else if (isEnumType(childType)) {
|
|
10102
10434
|
let genEnum = `export enum ${childType.name} {
|
|
10103
10435
|
${childType.values.map((_) => " " + _).join(",\n")}
|
|
10104
10436
|
}`;
|
|
10105
10437
|
childInterfaces.push(genEnum);
|
|
10106
10438
|
return ` ${prop}: ${childType.name}`;
|
|
10439
|
+
} else if (isRecursiveType(childType)) {
|
|
10440
|
+
if (!childType.resolvedType) {
|
|
10441
|
+
throw new Error(
|
|
10442
|
+
`Recursive type not resolved: ${childType.referencePath}`
|
|
10443
|
+
);
|
|
10444
|
+
}
|
|
10445
|
+
return ` ${prop}: ${childType.resolvedType.name} | null`;
|
|
10107
10446
|
} else
|
|
10108
10447
|
throw new Error(`unknown type ${childType.name}, ${childType.kind}`);
|
|
10109
10448
|
}).join(",\n");
|
|
@@ -10403,7 +10742,7 @@ function markAutoOnImportedRefs(deDuplicated, headlessImports) {
|
|
|
10403
10742
|
deDuplicated?.imported?.repeatedRefsTypeName
|
|
10404
10743
|
);
|
|
10405
10744
|
}
|
|
10406
|
-
function optimizeRefs({ rendered, imports, validations, refs }, headlessImports = []) {
|
|
10745
|
+
function optimizeRefs({ rendered, imports, validations, refs, recursiveRegions }, headlessImports = []) {
|
|
10407
10746
|
const deDuplicateRefsTree = (refs2) => {
|
|
10408
10747
|
const mergedRefsMap = refs2.refs.reduce((refsMap, ref) => {
|
|
10409
10748
|
if (refsMap[ref.ref] === ref.ref) {
|
|
@@ -10455,7 +10794,7 @@ function optimizeRefs({ rendered, imports, validations, refs }, headlessImports
|
|
|
10455
10794
|
{ ...markedAutoOnImported.children, ...importedRefs },
|
|
10456
10795
|
markedAutoOnImported.repeated
|
|
10457
10796
|
);
|
|
10458
|
-
return new RenderFragment(rendered, imports, validations, combined);
|
|
10797
|
+
return new RenderFragment(rendered, imports, validations, combined, recursiveRegions);
|
|
10459
10798
|
}
|
|
10460
10799
|
var ReferenceManagerTarget = /* @__PURE__ */ ((ReferenceManagerTarget2) => {
|
|
10461
10800
|
ReferenceManagerTarget2[ReferenceManagerTarget2["element"] = 0] = "element";
|
|
@@ -10711,7 +11050,7 @@ function renderAttributes$1(element, { variables }) {
|
|
|
10711
11050
|
Object.keys(attributes2).forEach((attrName) => {
|
|
10712
11051
|
let attrCanonical = attrName.toLowerCase();
|
|
10713
11052
|
let attrKey = attrCanonical.match(attributesRequiresQuotes$1) ? `"${attrCanonical}"` : attrCanonical;
|
|
10714
|
-
if (attrCanonical === "if" || attrCanonical === "foreach" || attrCanonical === "trackby" || attrCanonical === "ref")
|
|
11053
|
+
if (attrCanonical === "if" || attrCanonical === "foreach" || attrCanonical === "trackby" || attrCanonical === "ref" || attrCanonical === AsyncDirectiveTypes.loading.directive || attrCanonical === AsyncDirectiveTypes.resolved.directive || attrCanonical === AsyncDirectiveTypes.rejected.directive)
|
|
10715
11054
|
return;
|
|
10716
11055
|
if (attrCanonical === "style")
|
|
10717
11056
|
renderedAttributes.push(
|
|
@@ -10831,7 +11170,8 @@ function renderNode(node2, context) {
|
|
|
10831
11170
|
`${currIndent.firstLine}${tagFunc.elementFunction}('${tagFunc.tag}', ${attributes2.rendered}, [${children.rendered}${currIndent.lastLine}]${refWithPrefixComma})`,
|
|
10832
11171
|
children.imports.plus(Import.dynamicElement).plus(attributes2.imports).plus(ref.imports).plus(tagFunc.import),
|
|
10833
11172
|
[...attributes2.validations, ...children.validations, ...ref.validations],
|
|
10834
|
-
mergeRefsTrees(attributes2.refs, children.refs, ref.refs)
|
|
11173
|
+
mergeRefsTrees(attributes2.refs, children.refs, ref.refs),
|
|
11174
|
+
[...attributes2.recursiveRegions, ...children.recursiveRegions, ...ref.recursiveRegions]
|
|
10835
11175
|
);
|
|
10836
11176
|
}
|
|
10837
11177
|
function e2(tagName, attributes2, children, ref, currIndent = indent) {
|
|
@@ -10841,31 +11181,49 @@ function renderNode(node2, context) {
|
|
|
10841
11181
|
`${currIndent.firstLine}${tagFunc.elementFunction}('${tagFunc.tag}', ${attributes2.rendered}, [${children.rendered}${currIndent.lastLine}]${refWithPrefixComma})`,
|
|
10842
11182
|
children.imports.plus(Import.element).plus(attributes2.imports).plus(ref.imports).plus(tagFunc.import),
|
|
10843
11183
|
[...attributes2.validations, ...children.validations, ...ref.validations],
|
|
10844
|
-
mergeRefsTrees(attributes2.refs, children.refs, ref.refs)
|
|
11184
|
+
mergeRefsTrees(attributes2.refs, children.refs, ref.refs),
|
|
11185
|
+
[...attributes2.recursiveRegions, ...children.recursiveRegions, ...ref.recursiveRegions]
|
|
10845
11186
|
);
|
|
10846
11187
|
}
|
|
10847
11188
|
function renderHtmlElement(htmlElement, newContext) {
|
|
10848
11189
|
if (importedSymbols.has(htmlElement.rawTagName))
|
|
10849
11190
|
return renderNestedComponent(htmlElement, newContext);
|
|
11191
|
+
let contextForChildren = newContext;
|
|
11192
|
+
let currentRegion = null;
|
|
11193
|
+
if (htmlElement.hasAttribute("ref")) {
|
|
11194
|
+
const refName = htmlElement.getAttribute("ref");
|
|
11195
|
+
currentRegion = {
|
|
11196
|
+
refName,
|
|
11197
|
+
hasRecurse: false,
|
|
11198
|
+
isInsideGuard: newContext.isInsideGuard
|
|
11199
|
+
};
|
|
11200
|
+
contextForChildren = {
|
|
11201
|
+
...newContext,
|
|
11202
|
+
recursiveRegions: [...newContext.recursiveRegions, currentRegion]
|
|
11203
|
+
};
|
|
11204
|
+
}
|
|
10850
11205
|
let childNodes = node2.childNodes.length > 1 ? node2.childNodes.filter(
|
|
10851
11206
|
(_) => _.nodeType !== NodeType.TEXT_NODE || _.innerText.trim() !== ""
|
|
10852
11207
|
) : node2.childNodes;
|
|
10853
|
-
let childIndent =
|
|
11208
|
+
let childIndent = contextForChildren.indent.child();
|
|
10854
11209
|
if (childNodes.length === 1 && childNodes[0].nodeType === NodeType.TEXT_NODE)
|
|
10855
11210
|
childIndent = childIndent.noFirstLineBreak();
|
|
10856
|
-
let needDynamicElement = childNodes.map(
|
|
10857
|
-
|
|
11211
|
+
let needDynamicElement = childNodes.map(
|
|
11212
|
+
(_) => isConditional(_) || isForEach(_) || isRecurseWithData(_) || isWithData(_) || checkAsync(_).isAsync
|
|
11213
|
+
).reduce((prev, current) => prev || current, false);
|
|
11214
|
+
let childRenders = childNodes.length === 0 ? RenderFragment.empty() : childNodes.map((_) => renderNode(_, contextForChildren)).reduce(
|
|
10858
11215
|
(prev, current) => RenderFragment.merge(prev, current, ",\n"),
|
|
10859
11216
|
RenderFragment.empty()
|
|
10860
11217
|
).map(
|
|
10861
11218
|
(children) => childIndent.firstLineBreak ? `
|
|
10862
11219
|
${children}
|
|
10863
|
-
${
|
|
11220
|
+
${contextForChildren.indent.firstLine}` : children
|
|
10864
11221
|
);
|
|
10865
|
-
let attributes2 = renderAttributes$1(htmlElement,
|
|
10866
|
-
let renderedRef = renderElementRef$1(htmlElement,
|
|
11222
|
+
let attributes2 = renderAttributes$1(htmlElement, contextForChildren);
|
|
11223
|
+
let renderedRef = renderElementRef$1(htmlElement, contextForChildren);
|
|
11224
|
+
let result;
|
|
10867
11225
|
if (needDynamicElement)
|
|
10868
|
-
|
|
11226
|
+
result = de2(
|
|
10869
11227
|
htmlElement.rawTagName,
|
|
10870
11228
|
attributes2,
|
|
10871
11229
|
childRenders,
|
|
@@ -10873,13 +11231,30 @@ ${newContext.indent.firstLine}` : children
|
|
|
10873
11231
|
newContext.indent
|
|
10874
11232
|
);
|
|
10875
11233
|
else
|
|
10876
|
-
|
|
11234
|
+
result = e2(
|
|
10877
11235
|
htmlElement.rawTagName,
|
|
10878
11236
|
attributes2,
|
|
10879
11237
|
childRenders,
|
|
10880
11238
|
renderedRef,
|
|
10881
11239
|
newContext.indent
|
|
10882
11240
|
);
|
|
11241
|
+
if (currentRegion && currentRegion.hasRecurse) {
|
|
11242
|
+
const functionName = `renderRecursiveRegion_${currentRegion.refName}`;
|
|
11243
|
+
const recursiveRegion = {
|
|
11244
|
+
refName: currentRegion.refName,
|
|
11245
|
+
renderedContent: result.rendered,
|
|
11246
|
+
viewStateType: contextForChildren.variables.currentType.name
|
|
11247
|
+
};
|
|
11248
|
+
const functionCall = `${newContext.indent.firstLine}${functionName}()`;
|
|
11249
|
+
result = new RenderFragment(
|
|
11250
|
+
functionCall,
|
|
11251
|
+
result.imports.plus(Import.baseJayElement),
|
|
11252
|
+
result.validations,
|
|
11253
|
+
result.refs,
|
|
11254
|
+
[...result.recursiveRegions, recursiveRegion]
|
|
11255
|
+
);
|
|
11256
|
+
}
|
|
11257
|
+
return result;
|
|
10883
11258
|
}
|
|
10884
11259
|
function c(renderedCondition, childElement) {
|
|
10885
11260
|
return new RenderFragment(
|
|
@@ -10888,7 +11263,8 @@ ${newContext.indent.firstLine}` : children
|
|
|
10888
11263
|
${indent.firstLine})`,
|
|
10889
11264
|
Imports.merge(childElement.imports, renderedCondition.imports).plus(Import.conditional),
|
|
10890
11265
|
[...renderedCondition.validations, ...childElement.validations],
|
|
10891
|
-
mergeRefsTrees(renderedCondition.refs, childElement.refs)
|
|
11266
|
+
mergeRefsTrees(renderedCondition.refs, childElement.refs),
|
|
11267
|
+
[...renderedCondition.recursiveRegions, ...childElement.recursiveRegions]
|
|
10892
11268
|
);
|
|
10893
11269
|
}
|
|
10894
11270
|
function renderForEach(renderedForEach, collectionVariables, trackBy, childElement) {
|
|
@@ -10897,7 +11273,17 @@ ${indent.firstLine})`,
|
|
|
10897
11273
|
${indent.curr}return ${childElement.rendered}}, '${trackBy}')`,
|
|
10898
11274
|
childElement.imports.plus(Import.forEach),
|
|
10899
11275
|
[...renderedForEach.validations, ...childElement.validations],
|
|
10900
|
-
childElement.refs
|
|
11276
|
+
childElement.refs,
|
|
11277
|
+
[...renderedForEach.recursiveRegions, ...childElement.recursiveRegions]
|
|
11278
|
+
);
|
|
11279
|
+
}
|
|
11280
|
+
function renderAsync(asyncType, getPromiseFragment, childElement, resolvedGenericTypes) {
|
|
11281
|
+
return new RenderFragment(
|
|
11282
|
+
`${indent.firstLine}${asyncType.name}${resolvedGenericTypes}(${getPromiseFragment.rendered}, () => ${childElement.rendered.trim()})`,
|
|
11283
|
+
childElement.imports.plus(asyncType.import),
|
|
11284
|
+
[...getPromiseFragment.validations, ...childElement.validations],
|
|
11285
|
+
childElement.refs,
|
|
11286
|
+
[...getPromiseFragment.recursiveRegions, ...childElement.recursiveRegions]
|
|
10901
11287
|
);
|
|
10902
11288
|
}
|
|
10903
11289
|
function renderNestedComponent(htmlElement, newContext) {
|
|
@@ -10927,11 +11313,90 @@ ${indent.curr}return ${childElement.rendered}}, '${trackBy}')`,
|
|
|
10927
11313
|
return renderTextNode(variables, text2, indent);
|
|
10928
11314
|
case NodeType.ELEMENT_NODE:
|
|
10929
11315
|
let htmlElement = node2;
|
|
10930
|
-
if (
|
|
11316
|
+
if (isWithData(htmlElement)) {
|
|
11317
|
+
const accessor = htmlElement.getAttribute("accessor");
|
|
11318
|
+
if (!accessor) {
|
|
11319
|
+
return new RenderFragment("", Imports.none(), [
|
|
11320
|
+
'<with-data> element must have an "accessor" attribute'
|
|
11321
|
+
]);
|
|
11322
|
+
}
|
|
11323
|
+
const accessorExpr = parseAccessor(accessor, variables);
|
|
11324
|
+
let depth = 1;
|
|
11325
|
+
let parent = variables;
|
|
11326
|
+
const maxDepth = 100;
|
|
11327
|
+
while (parent && parent.parent && depth < maxDepth) {
|
|
11328
|
+
depth++;
|
|
11329
|
+
parent = parent.parent;
|
|
11330
|
+
}
|
|
11331
|
+
const newVariables = new Variables(accessorExpr.resolvedType, variables, depth);
|
|
11332
|
+
const childNodes = htmlElement.childNodes.filter(
|
|
11333
|
+
(child) => child.nodeType !== NodeType.TEXT_NODE || child.innerText.trim() !== ""
|
|
11334
|
+
);
|
|
11335
|
+
if (childNodes.length !== 1) {
|
|
11336
|
+
return new RenderFragment("", Imports.none(), [
|
|
11337
|
+
`<with-data> element must have exactly one child element, but found ${childNodes.length}`
|
|
11338
|
+
]);
|
|
11339
|
+
}
|
|
11340
|
+
const childElement = renderNode(childNodes[0], {
|
|
11341
|
+
...context,
|
|
11342
|
+
variables: newVariables,
|
|
11343
|
+
indent
|
|
11344
|
+
});
|
|
11345
|
+
const accessorFunction = `(${variables.currentVar}: ${variables.currentType.name}) => ${accessorExpr.render().rendered}`;
|
|
11346
|
+
const nestedChildElement = nestRefs(accessorExpr.terms, childElement);
|
|
11347
|
+
return new RenderFragment(
|
|
11348
|
+
`${indent.firstLine}withData(${accessorFunction}, () => ${nestedChildElement.rendered})`,
|
|
11349
|
+
nestedChildElement.imports.plus(Import.withData).plus(accessorExpr.render().imports),
|
|
11350
|
+
[...accessorExpr.validations, ...nestedChildElement.validations],
|
|
11351
|
+
nestedChildElement.refs,
|
|
11352
|
+
nestedChildElement.recursiveRegions
|
|
11353
|
+
);
|
|
11354
|
+
} else if (isRecurse(htmlElement)) {
|
|
11355
|
+
const refAttr = htmlElement.getAttribute("ref");
|
|
11356
|
+
const accessorAttr = htmlElement.getAttribute("accessor");
|
|
11357
|
+
if (!refAttr) {
|
|
11358
|
+
return new RenderFragment("", Imports.none(), [
|
|
11359
|
+
'<recurse> element must have a "ref" attribute'
|
|
11360
|
+
]);
|
|
11361
|
+
}
|
|
11362
|
+
const region = context.recursiveRegions.find((r) => r.refName === refAttr);
|
|
11363
|
+
if (!region) {
|
|
11364
|
+
return new RenderFragment("", Imports.none(), [
|
|
11365
|
+
`<recurse ref="${refAttr}"> references unknown ref - no element with ref="${refAttr}" found as ancestor`
|
|
11366
|
+
]);
|
|
11367
|
+
}
|
|
11368
|
+
if ((!accessorAttr || accessorAttr === ".") && !context.isInsideGuard) {
|
|
11369
|
+
return new RenderFragment("", Imports.none(), [
|
|
11370
|
+
`<recurse ref="${refAttr}"> without accessor must be inside a forEach loop or conditional (if="...") to provide context and prevent infinite recursion. Suggestions: 1) Wrap in a forEach loop if iterating over an array (e.g., <li forEach="children" trackBy="id"><recurse ref="${refAttr}"/></li>), 2) Add an accessor attribute if accessing a nested property (e.g., <recurse ref="${refAttr}" accessor="child"/>), or 3) Wrap in a conditional to guard the recursion (e.g., <div if="hasChild"><recurse ref="${refAttr}" accessor="child"/></div>).`
|
|
11371
|
+
]);
|
|
11372
|
+
}
|
|
11373
|
+
region.hasRecurse = true;
|
|
11374
|
+
const functionName = `renderRecursiveRegion_${refAttr}`;
|
|
11375
|
+
if (accessorAttr && accessorAttr !== ".") {
|
|
11376
|
+
const accessor = parseAccessor(accessorAttr, variables);
|
|
11377
|
+
const accessorCode = accessor.render();
|
|
11378
|
+
const accessorFunction = `(${variables.currentVar}) => ${accessorCode.rendered}`;
|
|
11379
|
+
return new RenderFragment(
|
|
11380
|
+
`${indent.firstLine}withData(${accessorFunction}, () => ${functionName}())`,
|
|
11381
|
+
Imports.for(Import.withData).plus(accessorCode.imports),
|
|
11382
|
+
[...accessor.validations, ...accessorCode.validations],
|
|
11383
|
+
mkRefsTree([], {})
|
|
11384
|
+
);
|
|
11385
|
+
} else {
|
|
11386
|
+
return new RenderFragment(
|
|
11387
|
+
`${indent.firstLine}${functionName}()`,
|
|
11388
|
+
Imports.none(),
|
|
11389
|
+
[],
|
|
11390
|
+
mkRefsTree([], {})
|
|
11391
|
+
);
|
|
11392
|
+
}
|
|
11393
|
+
} else if (isConditional(htmlElement)) {
|
|
10931
11394
|
let condition = htmlElement.getAttribute("if");
|
|
10932
11395
|
let childElement = renderHtmlElement(htmlElement, {
|
|
10933
11396
|
...context,
|
|
10934
|
-
indent: indent.child()
|
|
11397
|
+
indent: indent.child(),
|
|
11398
|
+
isInsideGuard: true
|
|
11399
|
+
// Mark that we're inside a guard
|
|
10935
11400
|
});
|
|
10936
11401
|
let renderedCondition = parseCondition(condition, variables);
|
|
10937
11402
|
return c(renderedCondition, childElement);
|
|
@@ -10956,13 +11421,66 @@ ${indent.curr}return ${childElement.rendered}}, '${trackBy}')`,
|
|
|
10956
11421
|
...context,
|
|
10957
11422
|
variables: forEachVariables,
|
|
10958
11423
|
indent: indent.child().noFirstLineBreak().withLastLineBreak(),
|
|
10959
|
-
dynamicRef: true
|
|
11424
|
+
dynamicRef: true,
|
|
11425
|
+
isInsideGuard: true
|
|
11426
|
+
// Mark that we're inside a guard
|
|
10960
11427
|
};
|
|
10961
11428
|
let childElement = renderHtmlElement(htmlElement, newContext);
|
|
10962
11429
|
return nestRefs(
|
|
10963
11430
|
forEachAccessPath,
|
|
10964
11431
|
renderForEach(forEachFragment, forEachVariables, trackBy, childElement)
|
|
10965
11432
|
);
|
|
11433
|
+
} else if (checkAsync(htmlElement).isAsync) {
|
|
11434
|
+
const asyncDirective = checkAsync(htmlElement);
|
|
11435
|
+
const asyncProperty = htmlElement.getAttribute(asyncDirective.directive);
|
|
11436
|
+
const asyncAccessor = parseAccessor(asyncProperty, variables);
|
|
11437
|
+
const asyncAccessPath = asyncAccessor.terms;
|
|
11438
|
+
if (asyncAccessor.resolvedType === JayUnknown)
|
|
11439
|
+
return new RenderFragment("", Imports.none(), [
|
|
11440
|
+
`async directive - failed to resolve type for ${asyncDirective}=${asyncProperty}`
|
|
11441
|
+
]);
|
|
11442
|
+
if (!isPromiseType(asyncAccessor.resolvedType))
|
|
11443
|
+
return new RenderFragment("", Imports.none(), [
|
|
11444
|
+
`async directive - resolved type for ${asyncDirective}=${asyncProperty} is not a promise, found ${asyncAccessor.resolvedType.name}`
|
|
11445
|
+
]);
|
|
11446
|
+
const getPromiseFragment = asyncAccessor.render().map((_) => `vs => ${_}`);
|
|
11447
|
+
if (asyncDirective === AsyncDirectiveTypes.resolved) {
|
|
11448
|
+
const promiseResolvedType = asyncAccessor.resolvedType.itemType;
|
|
11449
|
+
const childVariables = new Variables(promiseResolvedType, variables, 1);
|
|
11450
|
+
let newContext = {
|
|
11451
|
+
...context,
|
|
11452
|
+
variables: childVariables,
|
|
11453
|
+
indent: indent.child().noFirstLineBreak().withLastLineBreak()
|
|
11454
|
+
};
|
|
11455
|
+
let childElement = renderHtmlElement(htmlElement, newContext);
|
|
11456
|
+
return nestRefs(
|
|
11457
|
+
asyncAccessPath,
|
|
11458
|
+
renderAsync(
|
|
11459
|
+
asyncDirective,
|
|
11460
|
+
getPromiseFragment,
|
|
11461
|
+
childElement,
|
|
11462
|
+
`<${variables.currentType.name}, ${childVariables.currentType.name}>`
|
|
11463
|
+
)
|
|
11464
|
+
);
|
|
11465
|
+
} else if (asyncDirective === AsyncDirectiveTypes.loading) {
|
|
11466
|
+
let childElement = renderHtmlElement(htmlElement, context);
|
|
11467
|
+
return nestRefs(
|
|
11468
|
+
asyncAccessPath,
|
|
11469
|
+
renderAsync(asyncDirective, getPromiseFragment, childElement, "")
|
|
11470
|
+
);
|
|
11471
|
+
} else if (asyncDirective === AsyncDirectiveTypes.rejected) {
|
|
11472
|
+
const childVariables = new Variables(JayErrorType, variables, 1);
|
|
11473
|
+
let newContext = {
|
|
11474
|
+
...context,
|
|
11475
|
+
variables: childVariables,
|
|
11476
|
+
indent: indent.child().noFirstLineBreak().withLastLineBreak()
|
|
11477
|
+
};
|
|
11478
|
+
let childElement = renderHtmlElement(htmlElement, newContext);
|
|
11479
|
+
return nestRefs(
|
|
11480
|
+
asyncAccessPath,
|
|
11481
|
+
renderAsync(asyncDirective, getPromiseFragment, childElement, "")
|
|
11482
|
+
);
|
|
11483
|
+
}
|
|
10966
11484
|
} else {
|
|
10967
11485
|
return renderHtmlElement(htmlElement, context);
|
|
10968
11486
|
}
|
|
@@ -10999,6 +11517,18 @@ function generateCssImport(jayFile) {
|
|
|
10999
11517
|
}
|
|
11000
11518
|
return `import './${jayFile.filename}.css';`;
|
|
11001
11519
|
}
|
|
11520
|
+
function generateRecursiveFunctions(recursiveRegions) {
|
|
11521
|
+
if (recursiveRegions.length === 0) {
|
|
11522
|
+
return "";
|
|
11523
|
+
}
|
|
11524
|
+
return recursiveRegions.map((region) => {
|
|
11525
|
+
const functionName = `renderRecursiveRegion_${region.refName}`;
|
|
11526
|
+
const returnType = `BaseJayElement<${region.viewStateType}>`;
|
|
11527
|
+
return ` function ${functionName}(): ${returnType} {
|
|
11528
|
+
return ${region.renderedContent};
|
|
11529
|
+
}`;
|
|
11530
|
+
}).join("\n\n");
|
|
11531
|
+
}
|
|
11002
11532
|
function renderFunctionImplementation$1(types2, rootBodyElement, importStatements, baseElementName, namespaces, headlessImports, importerMode, headLinks = []) {
|
|
11003
11533
|
const variables = new Variables(types2);
|
|
11004
11534
|
const { importedSymbols, importedSandboxedSymbols } = processImportedComponents(importStatements);
|
|
@@ -11006,17 +11536,34 @@ function renderFunctionImplementation$1(types2, rootBodyElement, importStatement
|
|
|
11006
11536
|
const rootElement = ensureSingleChildElement(rootBodyElement);
|
|
11007
11537
|
let renderedRoot;
|
|
11008
11538
|
if (rootElement.val) {
|
|
11539
|
+
const needsWrapper = isWithData(rootElement.val) || isForEach(rootElement.val) || isConditional(rootElement.val) || isRecurse(rootElement.val) || checkAsync(rootElement.val).isAsync;
|
|
11540
|
+
const indent = needsWrapper ? new Indent(" ") : new Indent(" ");
|
|
11009
11541
|
renderedRoot = renderNode(rootElement.val, {
|
|
11010
11542
|
variables,
|
|
11011
11543
|
importedSymbols,
|
|
11012
|
-
indent
|
|
11544
|
+
indent,
|
|
11013
11545
|
dynamicRef: false,
|
|
11014
11546
|
importedSandboxedSymbols,
|
|
11015
11547
|
refNameGenerator: new RefNameGenerator(),
|
|
11016
11548
|
importerMode,
|
|
11017
11549
|
namespaces,
|
|
11018
|
-
importedRefNameToRef
|
|
11550
|
+
importedRefNameToRef,
|
|
11551
|
+
recursiveRegions: [],
|
|
11552
|
+
// Initialize empty recursive regions stack
|
|
11553
|
+
isInsideGuard: false
|
|
11554
|
+
// Not inside any guard initially
|
|
11019
11555
|
});
|
|
11556
|
+
if (needsWrapper) {
|
|
11557
|
+
renderedRoot = new RenderFragment(
|
|
11558
|
+
`de('div', {}, [
|
|
11559
|
+
${renderedRoot.rendered}
|
|
11560
|
+
])`,
|
|
11561
|
+
renderedRoot.imports.plus(Import.dynamicElement),
|
|
11562
|
+
renderedRoot.validations,
|
|
11563
|
+
renderedRoot.refs,
|
|
11564
|
+
renderedRoot.recursiveRegions
|
|
11565
|
+
);
|
|
11566
|
+
}
|
|
11020
11567
|
renderedRoot = optimizeRefs(renderedRoot, headlessImports);
|
|
11021
11568
|
} else
|
|
11022
11569
|
renderedRoot = new RenderFragment("", Imports.none(), rootElement.validations);
|
|
@@ -11051,9 +11598,14 @@ ${Indent.forceIndent(code, 4)},
|
|
|
11051
11598
|
);
|
|
11052
11599
|
const headLinksInjection = headLinks.length > 0 ? ` injectHeadLinks(${renderHeadLinksArray(headLinks)});
|
|
11053
11600
|
` : "";
|
|
11601
|
+
const recursiveFunctions = generateRecursiveFunctions(renderedRoot.recursiveRegions);
|
|
11602
|
+
const recursiveFunctionsSection = recursiveFunctions ? `
|
|
11603
|
+
${recursiveFunctions}
|
|
11604
|
+
|
|
11605
|
+
` : "";
|
|
11054
11606
|
const body = `export function render(options?: RenderElementOptions): ${preRenderType} {
|
|
11055
11607
|
${renderedRefsManager}
|
|
11056
|
-
${headLinksInjection}const render = (viewState: ${viewStateType}) => ConstructContext.withRootContext(
|
|
11608
|
+
${headLinksInjection}${recursiveFunctionsSection} const render = (viewState: ${viewStateType}) => ConstructContext.withRootContext(
|
|
11057
11609
|
viewState, refManager,
|
|
11058
11610
|
() => ${renderedRoot.rendered.trim()}
|
|
11059
11611
|
) as ${elementType};
|
|
@@ -11169,7 +11721,11 @@ function renderBridge(types2, rootBodyElement, importStatements, elementType, pr
|
|
|
11169
11721
|
refNameGenerator: new RefNameGenerator(),
|
|
11170
11722
|
importerMode: RuntimeMode.WorkerSandbox,
|
|
11171
11723
|
namespaces: [],
|
|
11172
|
-
importedRefNameToRef
|
|
11724
|
+
importedRefNameToRef,
|
|
11725
|
+
recursiveRegions: [],
|
|
11726
|
+
// Initialize empty recursive regions stack
|
|
11727
|
+
isInsideGuard: false
|
|
11728
|
+
// Not inside any guard initially
|
|
11173
11729
|
});
|
|
11174
11730
|
renderedBridge = optimizeRefs(renderedBridge, headlessImports);
|
|
11175
11731
|
const { renderedRefsManager, refsManagerImport } = renderReferenceManager(
|
|
@@ -11202,7 +11758,11 @@ function renderSandboxRoot(types2, rootBodyElement, importStatements, headlessIm
|
|
|
11202
11758
|
refNameGenerator: new RefNameGenerator(),
|
|
11203
11759
|
importerMode: RuntimeMode.WorkerSandbox,
|
|
11204
11760
|
namespaces: [],
|
|
11205
|
-
importedRefNameToRef
|
|
11761
|
+
importedRefNameToRef,
|
|
11762
|
+
recursiveRegions: [],
|
|
11763
|
+
// Initialize empty recursive regions stack
|
|
11764
|
+
isInsideGuard: false
|
|
11765
|
+
// Not inside any guard initially
|
|
11206
11766
|
});
|
|
11207
11767
|
let refsPart = renderedBridge.rendered.length > 0 ? `
|
|
11208
11768
|
${renderedBridge.rendered}
|
|
@@ -14927,7 +15487,7 @@ var ContractTagType = /* @__PURE__ */ ((ContractTagType2) => {
|
|
|
14927
15487
|
return ContractTagType2;
|
|
14928
15488
|
})(ContractTagType || {});
|
|
14929
15489
|
async function traverseTags(tags, typeName, context) {
|
|
14930
|
-
const { isRepeated } = context;
|
|
15490
|
+
const { isRepeated, isAsync } = context;
|
|
14931
15491
|
const objectTypeMembers = {};
|
|
14932
15492
|
let importLinks = [];
|
|
14933
15493
|
const refs = [];
|
|
@@ -14940,7 +15500,8 @@ async function traverseTags(tags, typeName, context) {
|
|
|
14940
15500
|
const subContractTypes = await traverseSubContractTag(subTag, {
|
|
14941
15501
|
...context,
|
|
14942
15502
|
viewStateType: objectType,
|
|
14943
|
-
isRepeated: isRepeated || subTag.repeated
|
|
15503
|
+
isRepeated: isRepeated || subTag.repeated,
|
|
15504
|
+
isAsync: subTag.async
|
|
14944
15505
|
});
|
|
14945
15506
|
if (subContractTypes.val) {
|
|
14946
15507
|
const result = subContractTypes.val;
|
|
@@ -14965,14 +15526,15 @@ async function traverseTags(tags, typeName, context) {
|
|
|
14965
15526
|
result.type && (objectTypeMembers[camelCase(subTag.tag)] = result.type);
|
|
14966
15527
|
}
|
|
14967
15528
|
}
|
|
14968
|
-
const
|
|
15529
|
+
const maybeArray = isRepeated ? new JayArrayType(objectType) : objectType;
|
|
15530
|
+
const type2 = isAsync ? new JayPromiseType(maybeArray) : maybeArray;
|
|
14969
15531
|
return new WithValidations(
|
|
14970
15532
|
{ type: type2, refs: mkRefsTree(refs, childRefs, context.isRepeated), importLinks, enumsToImport },
|
|
14971
15533
|
validations
|
|
14972
15534
|
);
|
|
14973
15535
|
}
|
|
14974
15536
|
async function traverseLinkedSubContract(tag, context) {
|
|
14975
|
-
const { importResolver, isRepeated } = context;
|
|
15537
|
+
const { importResolver, isRepeated, isAsync } = context;
|
|
14976
15538
|
const linkWithExtension = tag.link.endsWith(JAY_CONTRACT_EXTENSION) ? tag.link : tag.link + JAY_CONTRACT_EXTENSION;
|
|
14977
15539
|
const subContractPath = importResolver.resolveLink(
|
|
14978
15540
|
path.dirname(context.contractFilePath),
|
|
@@ -14997,7 +15559,8 @@ async function traverseLinkedSubContract(tag, context) {
|
|
|
14997
15559
|
refs: subContractRefsTree,
|
|
14998
15560
|
enumsToImport
|
|
14999
15561
|
} = subContractTypes.val;
|
|
15000
|
-
const
|
|
15562
|
+
const maybeArrayType = isArrayType$1(subContractType) ? new JayArrayType(new JayImportedType(viewState, subContractType.itemType)) : new JayImportedType(viewState, subContractType);
|
|
15563
|
+
const type2 = isAsync ? new JayPromiseType(maybeArrayType) : maybeArrayType;
|
|
15001
15564
|
const importLinks = [
|
|
15002
15565
|
{
|
|
15003
15566
|
module: subContractFile,
|
|
@@ -15025,11 +15588,34 @@ async function traverseLinkedSubContract(tag, context) {
|
|
|
15025
15588
|
return new WithValidations(void 0, subContract.validations);
|
|
15026
15589
|
}
|
|
15027
15590
|
}
|
|
15591
|
+
function isRecursiveLink(link) {
|
|
15592
|
+
return link.startsWith("$/");
|
|
15593
|
+
}
|
|
15594
|
+
function traverseRecursiveSubContract(tag, context) {
|
|
15595
|
+
const { isRepeated, isAsync } = context;
|
|
15596
|
+
const referencePath = tag.link;
|
|
15597
|
+
const recursiveType = new JayRecursiveType(referencePath);
|
|
15598
|
+
const maybeArrayType = isRepeated ? new JayArrayType(recursiveType) : recursiveType;
|
|
15599
|
+
const type2 = isAsync ? new JayPromiseType(maybeArrayType) : maybeArrayType;
|
|
15600
|
+
return new WithValidations({
|
|
15601
|
+
type: type2,
|
|
15602
|
+
refs: mkRefsTree([], {}, isRepeated),
|
|
15603
|
+
importLinks: [],
|
|
15604
|
+
enumsToImport: []
|
|
15605
|
+
});
|
|
15606
|
+
}
|
|
15028
15607
|
async function traverseSubContractTag(tag, context) {
|
|
15029
15608
|
if (tag.link) {
|
|
15609
|
+
if (isRecursiveLink(tag.link)) {
|
|
15610
|
+
return traverseRecursiveSubContract(tag, context);
|
|
15611
|
+
}
|
|
15030
15612
|
return await traverseLinkedSubContract(tag, context);
|
|
15031
15613
|
}
|
|
15032
|
-
return await traverseTags(
|
|
15614
|
+
return await traverseTags(
|
|
15615
|
+
tag.tags,
|
|
15616
|
+
toInterfaceName([context.viewStateType.name, tag.tag]),
|
|
15617
|
+
context
|
|
15618
|
+
);
|
|
15033
15619
|
}
|
|
15034
15620
|
async function traverseTag(tag, context) {
|
|
15035
15621
|
const { viewStateType, isRepeated } = context;
|
|
@@ -15047,18 +15633,72 @@ async function traverseTag(tag, context) {
|
|
|
15047
15633
|
new JayHTMLType(elementType)
|
|
15048
15634
|
);
|
|
15049
15635
|
return { ref, ...tag.dataType ? { type: tag.dataType } : {} };
|
|
15050
|
-
} else if (tag.type.includes(ContractTagType.variant) && tag.dataType
|
|
15636
|
+
} else if (tag.type.includes(ContractTagType.variant) && isEnumType(tag.dataType)) {
|
|
15051
15637
|
return { type: tag.dataType };
|
|
15052
15638
|
} else {
|
|
15053
15639
|
return { type: tag.dataType || JayUnknown };
|
|
15054
15640
|
}
|
|
15055
15641
|
}
|
|
15056
|
-
|
|
15057
|
-
|
|
15642
|
+
function resolveRecursiveReferences$1(type2, rootType) {
|
|
15643
|
+
if (!type2)
|
|
15644
|
+
return;
|
|
15645
|
+
if (isRecursiveType(type2)) {
|
|
15646
|
+
if (type2.referencePath === "$/") {
|
|
15647
|
+
type2.resolvedType = rootType;
|
|
15648
|
+
} else if (type2.referencePath.startsWith("$/")) {
|
|
15649
|
+
const path2 = type2.referencePath.substring(2);
|
|
15650
|
+
const pathParts = path2.split("/");
|
|
15651
|
+
let currentType = rootType;
|
|
15652
|
+
for (const part of pathParts) {
|
|
15653
|
+
if (isObjectType$1(currentType)) {
|
|
15654
|
+
const camelCasePart = camelCase(part);
|
|
15655
|
+
currentType = currentType.props[camelCasePart];
|
|
15656
|
+
if (!currentType) {
|
|
15657
|
+
break;
|
|
15658
|
+
}
|
|
15659
|
+
} else {
|
|
15660
|
+
break;
|
|
15661
|
+
}
|
|
15662
|
+
}
|
|
15663
|
+
type2.resolvedType = currentType || rootType;
|
|
15664
|
+
}
|
|
15665
|
+
} else if (isArrayType$1(type2)) {
|
|
15666
|
+
resolveRecursiveReferences$1(type2.itemType, rootType);
|
|
15667
|
+
} else if (isObjectType$1(type2) && type2.props) {
|
|
15668
|
+
for (const memberType of Object.values(type2.props)) {
|
|
15669
|
+
resolveRecursiveReferences$1(memberType, rootType);
|
|
15670
|
+
}
|
|
15671
|
+
} else if (isPromiseType(type2)) {
|
|
15672
|
+
resolveRecursiveReferences$1(type2.itemType, rootType);
|
|
15673
|
+
}
|
|
15674
|
+
}
|
|
15675
|
+
function getRootObjectType(type2) {
|
|
15676
|
+
if (!type2)
|
|
15677
|
+
return void 0;
|
|
15678
|
+
if (isArrayType$1(type2)) {
|
|
15679
|
+
return getRootObjectType(type2.itemType);
|
|
15680
|
+
}
|
|
15681
|
+
if (isPromiseType(type2)) {
|
|
15682
|
+
return getRootObjectType(type2.itemType);
|
|
15683
|
+
}
|
|
15684
|
+
return type2;
|
|
15685
|
+
}
|
|
15686
|
+
async function contractToImportsViewStateAndRefs(contract, contractFilePath, jayImportResolver, isRepeated = false, isAsync = false) {
|
|
15687
|
+
const result = await traverseTags(contract.tags, pascalCase(contract.name + "ViewState"), {
|
|
15058
15688
|
viewStateType: void 0,
|
|
15059
15689
|
isRepeated,
|
|
15060
15690
|
contractFilePath,
|
|
15061
|
-
importResolver: jayImportResolver
|
|
15691
|
+
importResolver: jayImportResolver,
|
|
15692
|
+
isAsync
|
|
15693
|
+
});
|
|
15694
|
+
return result.map((r) => {
|
|
15695
|
+
if (r.type) {
|
|
15696
|
+
const rootType = getRootObjectType(r.type);
|
|
15697
|
+
if (rootType) {
|
|
15698
|
+
resolveRecursiveReferences$1(r.type, rootType);
|
|
15699
|
+
}
|
|
15700
|
+
}
|
|
15701
|
+
return r;
|
|
15062
15702
|
});
|
|
15063
15703
|
}
|
|
15064
15704
|
function refsToRepeated(refsTreeNode) {
|
|
@@ -15161,7 +15801,8 @@ function parseType(type2, tagName) {
|
|
|
15161
15801
|
return new WithValidations([], [`Tag [${tagName}] has an unknown tag type [${type2}]`]);
|
|
15162
15802
|
}
|
|
15163
15803
|
function parseTag(tag) {
|
|
15164
|
-
const types2 = parseType(tag.type || "data", tag.tag);
|
|
15804
|
+
const types2 = parseType(tag.type || (tag.tags ? "sub-contract" : "data"), tag.tag);
|
|
15805
|
+
const typesAsString = types2.val.map((_) => ContractTagType[_]).join(", ");
|
|
15165
15806
|
const validations = types2.validations;
|
|
15166
15807
|
if (types2.val.includes(ContractTagType.subContract) && types2.val.length > 1) {
|
|
15167
15808
|
validations.push(`Tag [${tag.tag}] cannot be both sub-contract and other types`);
|
|
@@ -15188,25 +15829,31 @@ function parseTag(tag) {
|
|
|
15188
15829
|
if (tag.elementType) {
|
|
15189
15830
|
validations.push(`Tag [${tag.tag}] of type [sub-contract] cannot have an elementType`);
|
|
15190
15831
|
}
|
|
15832
|
+
} else {
|
|
15833
|
+
if (tag.tags)
|
|
15834
|
+
validations.push(`Tag [${tag.tag}] of type [${typesAsString}] cannot have tags`);
|
|
15835
|
+
if (tag.link)
|
|
15836
|
+
validations.push(`Tag [${tag.tag}] of type [${typesAsString}] cannot have link`);
|
|
15191
15837
|
}
|
|
15192
|
-
const parsedDataType = parseDataType(tag.tag, dataType);
|
|
15193
15838
|
const description = parseDescription(tag.description);
|
|
15194
15839
|
const elementType = parseElementType(tag.elementType);
|
|
15195
15840
|
const required = tag.required;
|
|
15196
|
-
if (
|
|
15197
|
-
return new WithValidations(
|
|
15198
|
-
|
|
15199
|
-
|
|
15200
|
-
|
|
15201
|
-
|
|
15202
|
-
|
|
15203
|
-
|
|
15204
|
-
|
|
15205
|
-
|
|
15206
|
-
|
|
15207
|
-
|
|
15208
|
-
|
|
15209
|
-
|
|
15841
|
+
if (validations.length > 0)
|
|
15842
|
+
return new WithValidations(void 0, validations);
|
|
15843
|
+
if (types2.val.includes(ContractTagType.subContract)) {
|
|
15844
|
+
if (tag.link) {
|
|
15845
|
+
return new WithValidations(
|
|
15846
|
+
{
|
|
15847
|
+
tag: tag.tag,
|
|
15848
|
+
type: [ContractTagType.subContract],
|
|
15849
|
+
...required && { required },
|
|
15850
|
+
...description && { description },
|
|
15851
|
+
...tag.repeated && { repeated: tag.repeated },
|
|
15852
|
+
link: tag.link
|
|
15853
|
+
},
|
|
15854
|
+
validations
|
|
15855
|
+
);
|
|
15856
|
+
}
|
|
15210
15857
|
const subTagResults = tag.tags.map((subTag) => parseTag(subTag));
|
|
15211
15858
|
const subTagValidations = subTagResults.flatMap((tr) => tr.validations);
|
|
15212
15859
|
const parsedSubTags = subTagResults.map((tr) => tr.val).filter((tag2) => !!tag2);
|
|
@@ -15227,20 +15874,24 @@ function parseTag(tag) {
|
|
|
15227
15874
|
...required && { required },
|
|
15228
15875
|
...description && { description },
|
|
15229
15876
|
tags: parsedSubTags,
|
|
15230
|
-
...tag.repeated && { repeated: tag.repeated }
|
|
15877
|
+
...tag.repeated && { repeated: tag.repeated },
|
|
15878
|
+
...tag.async && { async: tag.async }
|
|
15231
15879
|
},
|
|
15232
15880
|
[...validations, ...subTagValidations, ...duplicateTagValidations]
|
|
15233
15881
|
);
|
|
15882
|
+
} else {
|
|
15883
|
+
const parsedDataType = tag.async === true ? new JayPromiseType(parseDataType(tag.tag, dataType)) : parseDataType(tag.tag, dataType);
|
|
15884
|
+
const contractTag = {
|
|
15885
|
+
tag: tag.tag,
|
|
15886
|
+
type: types2.val,
|
|
15887
|
+
...required && { required },
|
|
15888
|
+
...parsedDataType && { dataType: parsedDataType },
|
|
15889
|
+
...description && { description },
|
|
15890
|
+
...elementType && { elementType },
|
|
15891
|
+
...tag.async && { async: tag.async }
|
|
15892
|
+
};
|
|
15893
|
+
return new WithValidations(contractTag, validations);
|
|
15234
15894
|
}
|
|
15235
|
-
const contractTag = {
|
|
15236
|
-
tag: tag.tag,
|
|
15237
|
-
type: types2.val,
|
|
15238
|
-
...required && { required },
|
|
15239
|
-
...parsedDataType && { dataType: parsedDataType },
|
|
15240
|
-
...description && { description },
|
|
15241
|
-
...elementType && { elementType }
|
|
15242
|
-
};
|
|
15243
|
-
return new WithValidations(contractTag, validations);
|
|
15244
15895
|
}
|
|
15245
15896
|
function parseContract(contractYaml, fileName) {
|
|
15246
15897
|
try {
|
|
@@ -15289,24 +15940,99 @@ function resolveImportedType(imports, type2) {
|
|
|
15289
15940
|
} else
|
|
15290
15941
|
return JayUnknown;
|
|
15291
15942
|
}
|
|
15292
|
-
function
|
|
15943
|
+
function isRecursiveReference(typeString) {
|
|
15944
|
+
return typeof typeString === "string" && typeString.startsWith("$/");
|
|
15945
|
+
}
|
|
15946
|
+
function parseArrayRecursiveReference(typeString) {
|
|
15947
|
+
if (typeof typeString !== "string")
|
|
15948
|
+
return null;
|
|
15949
|
+
const match = typeString.match(/^array<(\$\/.*)>$/);
|
|
15950
|
+
if (match && match[1]) {
|
|
15951
|
+
return match[1];
|
|
15952
|
+
}
|
|
15953
|
+
return null;
|
|
15954
|
+
}
|
|
15955
|
+
function validateRecursivePath(referencePath, rootData, currentPath) {
|
|
15956
|
+
const parts = referencePath.split("/").filter((p) => p);
|
|
15957
|
+
if (parts.length === 0 || parts[0] !== "$") {
|
|
15958
|
+
return `Recursive reference must start with "$/" (got: ${referencePath}). Use "$/data" or "$/data/path" format.`;
|
|
15959
|
+
}
|
|
15960
|
+
const pathParts = parts.slice(1);
|
|
15961
|
+
if (pathParts.length === 0) {
|
|
15962
|
+
return `Recursive reference path is incomplete (got: ${referencePath}). Use "$/data" or "$/data/path" format.`;
|
|
15963
|
+
}
|
|
15964
|
+
if (pathParts[0] !== "data") {
|
|
15965
|
+
return `Recursive reference path must start with "$/data" (got: ${referencePath}). The reference should point to your data structure.`;
|
|
15966
|
+
}
|
|
15967
|
+
if (pathParts.length === 1) {
|
|
15968
|
+
return void 0;
|
|
15969
|
+
}
|
|
15970
|
+
let currentData = rootData;
|
|
15971
|
+
const traversedPath = ["data"];
|
|
15972
|
+
for (let i = 1; i < pathParts.length; i++) {
|
|
15973
|
+
const part = pathParts[i];
|
|
15974
|
+
if (Array.isArray(currentData)) {
|
|
15975
|
+
if (currentData.length === 0) {
|
|
15976
|
+
return `Cannot navigate through empty array at path "$/` + traversedPath.join("/") + `"`;
|
|
15977
|
+
}
|
|
15978
|
+
currentData = currentData[0];
|
|
15979
|
+
}
|
|
15980
|
+
if (!currentData || typeof currentData !== "object" || !(part in currentData)) {
|
|
15981
|
+
const availableKeys = currentData && typeof currentData === "object" ? Object.keys(currentData) : [];
|
|
15982
|
+
return `Property "${part}" not found at path "$/` + traversedPath.join("/") + `"` + (availableKeys.length > 0 ? `. Available properties: ${availableKeys.join(", ")}` : "");
|
|
15983
|
+
}
|
|
15984
|
+
currentData = currentData[part];
|
|
15985
|
+
traversedPath.push(part);
|
|
15986
|
+
}
|
|
15987
|
+
return void 0;
|
|
15988
|
+
}
|
|
15989
|
+
function resolveType(data, validations, path2, imports, rootData) {
|
|
15293
15990
|
let types2 = {};
|
|
15294
|
-
for (let
|
|
15295
|
-
|
|
15296
|
-
|
|
15297
|
-
|
|
15298
|
-
|
|
15299
|
-
|
|
15991
|
+
for (let propKey in data) {
|
|
15992
|
+
const isAsyncProp = propKey.startsWith("async ");
|
|
15993
|
+
const prop = isAsyncProp ? propKey.substring(6) : propKey;
|
|
15994
|
+
const checkAsync2 = (type2) => isAsyncProp ? new JayPromiseType(type2) : type2;
|
|
15995
|
+
const resolvedPrimitive = resolvePrimitiveType(data[propKey]);
|
|
15996
|
+
if (resolvedPrimitive !== JayUnknown) {
|
|
15997
|
+
types2[prop] = checkAsync2(resolvedPrimitive);
|
|
15998
|
+
} else if (isArrayType(data[propKey])) {
|
|
15999
|
+
types2[prop] = checkAsync2(
|
|
16000
|
+
new JayArrayType(
|
|
16001
|
+
resolveType(data[propKey][0], validations, [...path2, prop], imports, rootData)
|
|
16002
|
+
)
|
|
16003
|
+
);
|
|
16004
|
+
} else if (isObjectType(data[propKey])) {
|
|
16005
|
+
types2[prop] = checkAsync2(
|
|
16006
|
+
resolveType(data[propKey], validations, [...path2, prop], imports, rootData)
|
|
15300
16007
|
);
|
|
15301
|
-
else if (
|
|
15302
|
-
types2[prop] =
|
|
15303
|
-
} else if (
|
|
15304
|
-
types2[prop] =
|
|
15305
|
-
|
|
15306
|
-
types2[prop] = new JayEnumType(
|
|
15307
|
-
toInterfaceName([...path2, prop]),
|
|
15308
|
-
parseEnumValues(data[prop])
|
|
16008
|
+
} else if (resolveImportedType(imports, data[propKey]) !== JayUnknown) {
|
|
16009
|
+
types2[prop] = checkAsync2(resolveImportedType(imports, data[prop]));
|
|
16010
|
+
} else if (parseIsEnum(data[propKey])) {
|
|
16011
|
+
types2[prop] = checkAsync2(
|
|
16012
|
+
new JayEnumType(toInterfaceName([...path2, prop]), parseEnumValues(data[prop]))
|
|
15309
16013
|
);
|
|
16014
|
+
} else if (isRecursiveReference(data[propKey])) {
|
|
16015
|
+
const referencePath = data[propKey];
|
|
16016
|
+
const validationError = validateRecursivePath(referencePath, rootData || data);
|
|
16017
|
+
if (validationError) {
|
|
16018
|
+
let [, ...pathTail] = path2;
|
|
16019
|
+
validations.push(
|
|
16020
|
+
`invalid recursive reference [${referencePath}] found at [${["data", ...pathTail, prop].join(".")}] - ${validationError}`
|
|
16021
|
+
);
|
|
16022
|
+
} else {
|
|
16023
|
+
types2[prop] = checkAsync2(new JayRecursiveType(referencePath));
|
|
16024
|
+
}
|
|
16025
|
+
} else if (parseArrayRecursiveReference(data[propKey])) {
|
|
16026
|
+
const referencePath = parseArrayRecursiveReference(data[propKey]);
|
|
16027
|
+
const validationError = validateRecursivePath(referencePath, rootData || data);
|
|
16028
|
+
if (validationError) {
|
|
16029
|
+
let [, ...pathTail] = path2;
|
|
16030
|
+
validations.push(
|
|
16031
|
+
`invalid recursive reference [${referencePath}] found at [${["data", ...pathTail, prop].join(".")}] - ${validationError}`
|
|
16032
|
+
);
|
|
16033
|
+
} else {
|
|
16034
|
+
types2[prop] = checkAsync2(new JayArrayType(new JayRecursiveType(referencePath)));
|
|
16035
|
+
}
|
|
15310
16036
|
} else {
|
|
15311
16037
|
let [, ...pathTail] = path2;
|
|
15312
16038
|
validations.push(
|
|
@@ -15316,21 +16042,74 @@ function resolveType(data, validations, path2, imports) {
|
|
|
15316
16042
|
}
|
|
15317
16043
|
return new JayObjectType(toInterfaceName(path2), types2);
|
|
15318
16044
|
}
|
|
16045
|
+
function resolveRecursiveReferences(type2, rootType, validations) {
|
|
16046
|
+
if (type2 instanceof JayRecursiveType) {
|
|
16047
|
+
const parts = type2.referencePath.split("/").filter((p) => p);
|
|
16048
|
+
if (parts.length >= 2 && parts[0] === "$" && parts[1] === "data") {
|
|
16049
|
+
let resolvedType = rootType;
|
|
16050
|
+
const traversedPath = ["$", "data"];
|
|
16051
|
+
for (let i = 2; i < parts.length; i++) {
|
|
16052
|
+
const pathSegment = parts[i];
|
|
16053
|
+
if (resolvedType instanceof JayObjectType && pathSegment in resolvedType.props) {
|
|
16054
|
+
resolvedType = resolvedType.props[pathSegment];
|
|
16055
|
+
traversedPath.push(pathSegment);
|
|
16056
|
+
} else if (resolvedType instanceof JayArrayType) {
|
|
16057
|
+
if (resolvedType.itemType instanceof JayObjectType && pathSegment in resolvedType.itemType.props) {
|
|
16058
|
+
resolvedType = resolvedType.itemType.props[pathSegment];
|
|
16059
|
+
traversedPath.push(pathSegment);
|
|
16060
|
+
} else {
|
|
16061
|
+
const availableProps = resolvedType.itemType instanceof JayObjectType ? Object.keys(resolvedType.itemType.props) : [];
|
|
16062
|
+
validations.push(
|
|
16063
|
+
`Recursive reference "${type2.referencePath}" failed: property "${pathSegment}" not found at path "${traversedPath.join("/")}"` + (availableProps.length > 0 ? `. Available properties: ${availableProps.join(", ")}` : ". The array item type has no properties.")
|
|
16064
|
+
);
|
|
16065
|
+
return;
|
|
16066
|
+
}
|
|
16067
|
+
} else {
|
|
16068
|
+
const availableProps = resolvedType instanceof JayObjectType ? Object.keys(resolvedType.props) : [];
|
|
16069
|
+
validations.push(
|
|
16070
|
+
`Recursive reference "${type2.referencePath}" failed: property "${pathSegment}" not found at path "${traversedPath.join("/")}"` + (availableProps.length > 0 ? `. Available properties: ${availableProps.join(", ")}` : ". The current type has no properties.")
|
|
16071
|
+
);
|
|
16072
|
+
return;
|
|
16073
|
+
}
|
|
16074
|
+
}
|
|
16075
|
+
type2.resolvedType = resolvedType;
|
|
16076
|
+
} else if (parts.length < 2 || parts[0] !== "$" || parts[1] !== "data") {
|
|
16077
|
+
validations.push(
|
|
16078
|
+
`Invalid recursive reference "${type2.referencePath}". Recursive references must start with "$/data" (e.g., "$/data" or "$/data/tree")`
|
|
16079
|
+
);
|
|
16080
|
+
}
|
|
16081
|
+
} else if (type2 instanceof JayArrayType) {
|
|
16082
|
+
resolveRecursiveReferences(type2.itemType, rootType, validations);
|
|
16083
|
+
} else if (type2 instanceof JayObjectType) {
|
|
16084
|
+
for (const propKey in type2.props) {
|
|
16085
|
+
resolveRecursiveReferences(type2.props[propKey], rootType, validations);
|
|
16086
|
+
}
|
|
16087
|
+
} else if (type2 instanceof JayPromiseType) {
|
|
16088
|
+
resolveRecursiveReferences(type2.itemType, rootType, validations);
|
|
16089
|
+
}
|
|
16090
|
+
}
|
|
15319
16091
|
function parseTypes(jayYaml, validations, baseElementName, imports, headlessImports) {
|
|
15320
16092
|
if (typeof jayYaml.data === "object") {
|
|
15321
16093
|
const resolvedType = resolveType(
|
|
15322
16094
|
jayYaml.data,
|
|
15323
16095
|
validations,
|
|
15324
16096
|
[baseElementName + "ViewState"],
|
|
15325
|
-
imports
|
|
16097
|
+
imports,
|
|
16098
|
+
jayYaml.data
|
|
16099
|
+
// Pass root data for recursive reference validation
|
|
15326
16100
|
);
|
|
15327
16101
|
const headlessImportedTypes = Object.fromEntries(
|
|
15328
|
-
headlessImports.map((_) => [
|
|
16102
|
+
headlessImports.map((_) => [
|
|
16103
|
+
_.key,
|
|
16104
|
+
new JayImportedType(_.rootType.name, _.rootType, true)
|
|
16105
|
+
])
|
|
15329
16106
|
);
|
|
15330
|
-
|
|
16107
|
+
const finalType = new JayObjectType(resolvedType.name, {
|
|
15331
16108
|
...headlessImportedTypes,
|
|
15332
16109
|
...resolvedType.props
|
|
15333
16110
|
});
|
|
16111
|
+
resolveRecursiveReferences(finalType, finalType, validations);
|
|
16112
|
+
return finalType;
|
|
15334
16113
|
} else if (typeof jayYaml.data === "string")
|
|
15335
16114
|
return resolveImportedType(imports, jayYaml.data);
|
|
15336
16115
|
}
|