1 module es6.grammargenerator; 2 // Note: ID_Continue should also include the following chars but dmd complains: 3 // ("\u0001" [\uda00-\uda36]) / ("\u0001" [\uda3b-\uda6c]) / ("\u0001\uda75") / ("\u0001\uda84") / ("\u0001" [\uda9b-\uda9f]) / ("\u0001" [\udaa1-\udaaf]) / 4 5 // Note: PostfixExpression and PostfixExpressionYield are wrong, there should be no LineTerminators between LeftHandSideExpression/LeftHandSideExpressionYield and the ++/-- 6 // Note: Identifier cannot be one of ReservedWord, but need to do AFTER parsing in semantic analyses 7 // Note: The following rules have been simplified, originally they were: 8 // ID_Start <- [\u0041-\u005a] / [\u0061-\u007a] / "\u00aa" / "\u00b5" / "\u00ba" / [\u00c0-\u00d6] / [\u00d8-\u00f6] / [\u00f8-\u02c1] / [\u02c6-\u02d1] / [\u02e0-\u02e4] / "\u02ec" / "\u02ee" / [\u0370-\u0374] / [\u0376-\u0377] / [\u037a-\u037d] / "\u037f" / "\u0386" / [\u0388-\u038a] / "\u038c" / [\u038e-\u03a1] / [\u03a3-\u03f5] / [\u03f7-\u0481] / [\u048a-\u052f] / [\u0531-\u0556] / "\u0559" / [\u0561-\u0587] / [\u05d0-\u05ea] / [\u05f0-\u05f2] / [\u0620-\u064a] / [\u066e-\u066f] / [\u0671-\u06d3] / "\u06d5" / [\u06e5-\u06e6] / [\u06ee-\u06ef] / [\u06fa-\u06fc] / "\u06ff" / "\u0710" / [\u0712-\u072f] / [\u074d-\u07a5] / "\u07b1" / [\u07ca-\u07ea] / [\u07f4-\u07f5] / "\u07fa" / [\u0800-\u0815] / "\u081a" / "\u0824" / "\u0828" / [\u0840-\u0858] / [\u08a0-\u08b4] / [\u0904-\u0939] / "\u093d" / "\u0950" / [\u0958-\u0961] / [\u0971-\u0980] / [\u0985-\u098c] / [\u098f-\u0990] / [\u0993-\u09a8] / [\u09aa-\u09b0] / "\u09b2" / [\u09b6-\u09b9] / "\u09bd" / "\u09ce" / [\u09dc-\u09dd] / [\u09df-\u09e1] / [\u09f0-\u09f1] / [\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] / [\u0c85-\u0c8c] / [\u0c8e-\u0c90] / [\u0c92-\u0ca8] / [\u0caa-\u0cb3] / [\u0cb5-\u0cb9] / "\u0cbd" / "\u0cde" / [\u0ce0-\u0ce1] / [\u0cf1-\u0cf2] / [\u0d05-\u0d0c] / [\u0d0e-\u0d10] / [\u0d12-\u0d3a] / "\u0d3d" / "\u0d4e" / [\u0d5f-\u0d61] / [\u0d7a-\u0d7f] / [\u0d85-\u0d96] / [\u0d9a-\u0db1] / [\u0db3-\u0dbb] / "\u0dbd" / [\u0dc0-\u0dc6] / [\u0e01-\u0e30] / [\u0e32-\u0e33] / [\u0e40-\u0e46] / [\u0e81-\u0e82] / "\u0e84" / [\u0e87-\u0e88] / "\u0e8a" / "\u0e8d" / [\u0e94-\u0e97] / [\u0e99-\u0e9f] / [\u0ea1-\u0ea3] / "\u0ea5" / "\u0ea7" / [\u0eaa-\u0eab] / [\u0ead-\u0eb0] / [\u0eb2-\u0eb3] / "\u0ebd" / [\u0ec0-\u0ec4] / "\u0ec6" / [\u0edc-\u0edf] / "\u0f00" / [\u0f40-\u0f47] / [\u0f49-\u0f6c] / [\u0f88-\u0f8c] / [\u1000-\u102a] / "\u103f" / [\u1050-\u1055] / [\u105a-\u105d] / "\u1061" / [\u1065-\u1066] / [\u106e-\u1070] / [\u1075-\u1081] / "\u108e" / [\u10a0-\u10c5] / "\u10c7" / "\u10cd" / [\u10d0-\u10fa] / [\u10fc-\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] / [\u13a0-\u13f5] / [\u13f8-\u13fd] / [\u1401-\u166c] / [\u166f-\u167f] / [\u1681-\u169a] / [\u16a0-\u16ea] / [\u16ee-\u16f8] / [\u1700-\u170c] / [\u170e-\u1711] / [\u1720-\u1731] / [\u1740-\u1751] / [\u1760-\u176c] / [\u176e-\u1770] / [\u1780-\u17b3] / "\u17d7" / "\u17dc" / [\u1820-\u1877] / [\u1880-\u18a8] / "\u18aa" / [\u18b0-\u18f5] / [\u1900-\u191e] / [\u1950-\u196d] / [\u1970-\u1974] / [\u1980-\u19ab] / [\u19b0-\u19c9] / [\u1a00-\u1a16] / [\u1a20-\u1a54] / "\u1aa7" / [\u1b05-\u1b33] / [\u1b45-\u1b4b] / [\u1b83-\u1ba0] / [\u1bae-\u1baf] / [\u1bba-\u1be5] / [\u1c00-\u1c23] / [\u1c4d-\u1c4f] / [\u1c5a-\u1c7d] / [\u1ce9-\u1cec] / [\u1cee-\u1cf1] / [\u1cf5-\u1cf6] / [\u1d00-\u1dbf] / [\u1e00-\u1f15] / [\u1f18-\u1f1d] / [\u1f20-\u1f45] / [\u1f48-\u1f4d] / [\u1f50-\u1f57] / "\u1f59" / "\u1f5b" / "\u1f5d" / [\u1f5f-\u1f7d] / [\u1f80-\u1fb4] / [\u1fb6-\u1fbc] / "\u1fbe" / [\u1fc2-\u1fc4] / [\u1fc6-\u1fcc] / [\u1fd0-\u1fd3] / [\u1fd6-\u1fdb] / [\u1fe0-\u1fec] / [\u1ff2-\u1ff4] / [\u1ff6-\u1ffc] / "\u2071" / "\u207f" / [\u2090-\u209c] / "\u2102" / "\u2107" / [\u210a-\u2113] / "\u2115" / [\u2118-\u211d] / "\u2124" / "\u2126" / "\u2128" / [\u212a-\u2139] / [\u213c-\u213f] / [\u2145-\u2149] / "\u214e" / [\u2160-\u2188] / [\u2c00-\u2c2e] / [\u2c30-\u2c5e] / [\u2c60-\u2ce4] / [\u2ceb-\u2cee] / [\u2cf2-\u2cf3] / [\u2d00-\u2d25] / "\u2d27" / "\u2d2d" / [\u2d30-\u2d67] / "\u2d6f" / [\u2d80-\u2d96] / [\u2da0-\u2da6] / [\u2da8-\u2dae] / [\u2db0-\u2db6] / [\u2db8-\u2dbe] / [\u2dc0-\u2dc6] / [\u2dc8-\u2dce] / [\u2dd0-\u2dd6] / [\u2dd8-\u2dde] / [\u3005-\u3007] / [\u3021-\u3029] / [\u3031-\u3035] / [\u3038-\u303c] / [\u3041-\u3096] / [\u309b-\u309f] / [\u30a1-\u30fa] / [\u30fc-\u30ff] / [\u3105-\u312d] / [\u3131-\u318e] / [\u31a0-\u31ba] / [\u31f0-\u31ff] / [\u3400-\u4db5] / [\u4e00-\u9fd5] / [\ua000-\ua48c] / [\ua4d0-\ua4fd] / [\ua500-\ua60c] / [\ua610-\ua61f] / [\ua62a-\ua62b] / [\ua640-\ua66e] / [\ua67f-\ua69d] / [\ua6a0-\ua6ef] / [\ua717-\ua71f] / [\ua722-\ua788] / [\ua78b-\ua7ad] / [\ua7b0-\ua7b7] / [\ua7f7-\ua801] / [\ua803-\ua805] / [\ua807-\ua80a] / [\ua80c-\ua822] / [\ua840-\ua873] / [\ua882-\ua8b3] / [\ua8f2-\ua8f7] / "\ua8fb" / "\ua8fd" / [\ua90a-\ua925] / [\ua930-\ua946] / [\ua960-\ua97c] / [\ua984-\ua9b2] / "\ua9cf" / [\ua9e0-\ua9e4] / [\ua9e6-\ua9ef] / [\ua9fa-\ua9fe] / [\uaa00-\uaa28] / [\uaa40-\uaa42] / [\uaa44-\uaa4b] / [\uaa60-\uaa76] / "\uaa7a" / [\uaa7e-\uaaaf] / "\uaab1" / [\uaab5-\uaab6] / [\uaab9-\uaabd] / "\uaac0" / "\uaac2" / [\uaadb-\uaadd] / [\uaae0-\uaaea] / [\uaaf2-\uaaf4] / [\uab01-\uab06] / [\uab09-\uab0e] / [\uab11-\uab16] / [\uab20-\uab26] / [\uab28-\uab2e] / [\uab30-\uab5a] / [\uab5c-\uab65] / [\uab70-\uabe2] / [\uac00-\ud7a3] / [\ud7b0-\ud7c6] / [\ud7cb-\ud7fb] / [\uf900-\ufa6d] / [\ufa70-\ufad9] / [\ufb00-\ufb06] / [\ufb13-\ufb17] / "\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] / [\uff21-\uff3a] / [\uff41-\uff5a] / [\uff66-\uffbe] / [\uffc2-\uffc7] / [\uffca-\uffcf] / [\uffd2-\uffd7] / [\uffda-\uffdc] / ("\u0001" [\u0000-\u000b]) / ("\u0001" [\u000d-\u0026]) / ("\u0001" [\u0028-\u003a]) / ("\u0001" [\u003c-\u003d]) / ("\u0001" [\u003f-\u004d]) / ("\u0001" [\u0050-\u005d]) / ("\u0001" [\u0080-\u00fa]) / ("\u0001" [\u0140-\u0174]) / ("\u0001" [\u0280-\u029c]) / ("\u0001" [\u02a0-\u02d0]) / ("\u0001" [\u0300-\u031f]) / ("\u0001" [\u0330-\u034a]) / ("\u0001" [\u0350-\u0375]) / ("\u0001" [\u0380-\u039d]) / ("\u0001" [\u03a0-\u03c3]) / ("\u0001" [\u03c8-\u03cf]) / ("\u0001" [\u03d1-\u03d5]) / ("\u0001" [\u0400-\u049d]) / ("\u0001" [\u0500-\u0527]) / ("\u0001" [\u0530-\u0563]) / ("\u0001" [\u0600-\u0736]) / ("\u0001" [\u0740-\u0755]) / ("\u0001" [\u0760-\u0767]) / ("\u0001" [\u0800-\u0805]) / ("\u0001\u0808") / ("\u0001" [\u080a-\u0835]) / ("\u0001" [\u0837-\u0838]) / ("\u0001\u083c") / ("\u0001" [\u083f-\u0855]) / ("\u0001" [\u0860-\u0876]) / ("\u0001" [\u0880-\u089e]) / ("\u0001" [\u08e0-\u08f2]) / ("\u0001" [\u08f4-\u08f5]) / ("\u0001" [\u0900-\u0915]) / ("\u0001" [\u0920-\u0939]) / ("\u0001" [\u0980-\u09b7]) / ("\u0001" [\u09be-\u09bf]) / ("\u0001\u0a00") / ("\u0001" [\u0a10-\u0a13]) / ("\u0001" [\u0a15-\u0a17]) / ("\u0001" [\u0a19-\u0a33]) / ("\u0001" [\u0a60-\u0a7c]) / ("\u0001" [\u0a80-\u0a9c]) / ("\u0001" [\u0ac0-\u0ac7]) / ("\u0001" [\u0ac9-\u0ae4]) / ("\u0001" [\u0b00-\u0b35]) / ("\u0001" [\u0b40-\u0b55]) / ("\u0001" [\u0b60-\u0b72]) / ("\u0001" [\u0b80-\u0b91]) / ("\u0001" [\u0c00-\u0c48]) / ("\u0001" [\u0c80-\u0cb2]) / ("\u0001" [\u0cc0-\u0cf2]) / ("\u0001" [\u1003-\u1037]) / ("\u0001" [\u1083-\u10af]) / ("\u0001" [\u10d0-\u10e8]) / ("\u0001" [\u1103-\u1126]) / ("\u0001" [\u1150-\u1172]) / ("\u0001\u1176") / ("\u0001" [\u1183-\u11b2]) / ("\u0001" [\u11c1-\u11c4]) / ("\u0001\u11da") / ("\u0001\u11dc") / ("\u0001" [\u1200-\u1211]) / ("\u0001" [\u1213-\u122b]) / ("\u0001" [\u1280-\u1286]) / ("\u0001\u1288") / ("\u0001" [\u128a-\u128d]) / ("\u0001" [\u128f-\u129d]) / ("\u0001" [\u129f-\u12a8]) / ("\u0001" [\u12b0-\u12de]) / ("\u0001" [\u1305-\u130c]) / ("\u0001" [\u130f-\u1310]) / ("\u0001" [\u1313-\u1328]) / ("\u0001" [\u132a-\u1330]) / ("\u0001" [\u1332-\u1333]) / ("\u0001" [\u1335-\u1339]) / ("\u0001\u133d") / ("\u0001\u1350") / ("\u0001" [\u135d-\u1361]) / ("\u0001" [\u1480-\u14af]) / ("\u0001" [\u14c4-\u14c5]) / ("\u0001\u14c7") / ("\u0001" [\u1580-\u15ae]) / ("\u0001" [\u15d8-\u15db]) / ("\u0001" [\u1600-\u162f]) / ("\u0001\u1644") / ("\u0001" [\u1680-\u16aa]) / ("\u0001" [\u1700-\u1719]) / ("\u0001" [\u18a0-\u18df]) / ("\u0001\u18ff") / ("\u0001" [\u1ac0-\u1af8]) / ("\u0001" [\u2000-\u2399]) / ("\u0001" [\u2400-\u246e]) / ("\u0001" [\u2480-\u2543]) / ("\u0001" [\u3000-\u342e]) / ("\u0001" [\u4400-\u4646]) / ("\u0001" [\u6800-\u6a38]) / ("\u0001" [\u6a40-\u6a5e]) / ("\u0001" [\u6ad0-\u6aed]) / ("\u0001" [\u6b00-\u6b2f]) / ("\u0001" [\u6b40-\u6b43]) / ("\u0001" [\u6b63-\u6b77]) / ("\u0001" [\u6b7d-\u6b8f]) / ("\u0001" [\u6f00-\u6f44]) / ("\u0001\u6f50") / ("\u0001" [\u6f93-\u6f9f]) / ("\u0001" [\ub000-\ub001]) / ("\u0001" [\ubc00-\ubc6a]) / ("\u0001" [\ubc70-\ubc7c]) / ("\u0001" [\ubc80-\ubc88]) / ("\u0001" [\ubc90-\ubc99]) / ("\u0001" [\ud400-\ud454]) / ("\u0001" [\ud456-\ud49c]) / ("\u0001" [\ud49e-\ud49f]) / ("\u0001\ud4a2") / ("\u0001" [\ud4a5-\ud4a6]) / ("\u0001" [\ud4a9-\ud4ac]) / ("\u0001" [\ud4ae-\ud4b9]) / ("\u0001\ud4bb") / ("\u0001" [\ud4bd-\ud4c3]) / ("\u0001" [\ud4c5-\ud505]) / ("\u0001" [\ud507-\ud50a]) / ("\u0001" [\ud50d-\ud514]) / ("\u0001" [\ud516-\ud51c]) / ("\u0001" [\ud51e-\ud539]) / ("\u0001" [\ud53b-\ud53e]) / ("\u0001" [\ud540-\ud544]) / ("\u0001\ud546") / ("\u0001" [\ud54a-\ud550]) / ("\u0001" [\ud552-\ud6a5]) / ("\u0001" [\ud6a8-\ud6c0]) / ("\u0001" [\ud6c2-\ud6da]) / ("\u0001" [\ud6dc-\ud6fa]) / ("\u0001" [\ud6fc-\ud714]) / ("\u0001" [\ud716-\ud734]) / ("\u0001" [\ud736-\ud74e]) / ("\u0001" [\ud750-\ud76e]) / ("\u0001" [\ud770-\ud788]) / ("\u0001" [\ud78a-\ud7a8]) / ("\u0001" [\ud7aa-\ud7c2]) / ("\u0001" [\ud7c4-\ud7cb]) / ("\u0001" [\ue800-\ue8c4]) / ("\u0001" [\uee00-\uee03]) / ("\u0001" [\uee05-\uee1f]) / ("\u0001" [\uee21-\uee22]) / ("\u0001\uee24") / ("\u0001\uee27") / ("\u0001" [\uee29-\uee32]) / ("\u0001" [\uee34-\uee37]) / ("\u0001\uee39") / ("\u0001\uee3b") / ("\u0001\uee42") / ("\u0001\uee47") / ("\u0001\uee49") / ("\u0001\uee4b") / ("\u0001" [\uee4d-\uee4f]) / ("\u0001" [\uee51-\uee52]) / ("\u0001\uee54") / ("\u0001\uee57") / ("\u0001\uee59") / ("\u0001\uee5b") / ("\u0001\uee5d") / ("\u0001\uee5f") / ("\u0001" [\uee61-\uee62]) / ("\u0001\uee64") / ("\u0001" [\uee67-\uee6a]) / ("\u0001" [\uee6c-\uee72]) / ("\u0001" [\uee74-\uee77]) / ("\u0001" [\uee79-\uee7c]) / ("\u0001\uee7e") / ("\u0001" [\uee80-\uee89]) / ("\u0001" [\uee8b-\uee9b]) / ("\u0001" [\ueea1-\ueea3]) / ("\u0001" [\ueea5-\ueea9]) / ("\u0001" [\ueeab-\ueebb]) / ("\u0002" [\u0000-\ua6d6]) / ("\u0002" [\ua700-\ub734]) / ("\u0002" [\ub740-\ub81d]) / ("\u0002" [\ub820-\ucea1]) / ("\u0002" [\uf800-\ufa1d]) 9 // ID_Continue <- [\u0030-\u0039] / [\u0041-\u005a] / "\u005f" / [\u0061-\u007a] / "\u00aa" / "\u00b5" / "\u00b7" / "\u00ba" / [\u00c0-\u00d6] / [\u00d8-\u00f6] / [\u00f8-\u02c1] / [\u02c6-\u02d1] / [\u02e0-\u02e4] / "\u02ec" / "\u02ee" / [\u0300-\u0374] / [\u0376-\u0377] / [\u037a-\u037d] / "\u037f" / [\u0386-\u038a] / "\u038c" / [\u038e-\u03a1] / [\u03a3-\u03f5] / [\u03f7-\u0481] / [\u0483-\u0487] / [\u048a-\u052f] / [\u0531-\u0556] / "\u0559" / [\u0561-\u0587] / [\u0591-\u05bd] / "\u05bf" / [\u05c1-\u05c2] / [\u05c4-\u05c5] / "\u05c7" / [\u05d0-\u05ea] / [\u05f0-\u05f2] / [\u0610-\u061a] / [\u0620-\u0669] / [\u066e-\u06d3] / [\u06d5-\u06dc] / [\u06df-\u06e8] / [\u06ea-\u06fc] / "\u06ff" / [\u0710-\u074a] / [\u074d-\u07b1] / [\u07c0-\u07f5] / "\u07fa" / [\u0800-\u082d] / [\u0840-\u085b] / [\u08a0-\u08b4] / [\u08e3-\u0963] / [\u0966-\u096f] / [\u0971-\u0983] / [\u0985-\u098c] / [\u098f-\u0990] / [\u0993-\u09a8] / [\u09aa-\u09b0] / "\u09b2" / [\u09b6-\u09b9] / [\u09bc-\u09c4] / [\u09c7-\u09c8] / [\u09cb-\u09ce] / "\u09d7" / [\u09dc-\u09dd] / [\u09df-\u09e3] / [\u09e6-\u09f1] / [\u0a01-\u0a03] / [\u0a05-\u0a0a] / [\u0a0f-\u0a10] / [\u0a13-\u0a28] / [\u0a2a-\u0a30] / [\u0a32-\u0a33] / [\u0a35-\u0a36] / [\u0a38-\u0a39] / "\u0a3c" / [\u0a3e-\u0a42] / [\u0a47-\u0a48] / [\u0a4b-\u0a4d] / "\u0a51" / [\u0a59-\u0a5c] / "\u0a5e" / [\u0a66-\u0a75] / [\u0a81-\u0a83] / [\u0a85-\u0a8d] / [\u0a8f-\u0a91] / [\u0a93-\u0aa8] / [\u0aaa-\u0ab0] / [\u0ab2-\u0ab3] / [\u0ab5-\u0ab9] / [\u0abc-\u0ac5] / [\u0ac7-\u0ac9] / [\u0acb-\u0acd] / "\u0ad0" / [\u0ae0-\u0ae3] / [\u0ae6-\u0aef] / "\u0af9" / [\u0b01-\u0b03] / [\u0b05-\u0b0c] / [\u0b0f-\u0b10] / [\u0b13-\u0b28] / [\u0b2a-\u0b30] / [\u0b32-\u0b33] / [\u0b35-\u0b39] / [\u0b3c-\u0b44] / [\u0b47-\u0b48] / [\u0b4b-\u0b4d] / [\u0b56-\u0b57] / [\u0b5c-\u0b5d] / [\u0b5f-\u0b63] / [\u0b66-\u0b6f] / "\u0b71" / [\u0b82-\u0b83] / [\u0b85-\u0b8a] / [\u0b8e-\u0b90] / [\u0b92-\u0b95] / [\u0b99-\u0b9a] / "\u0b9c" / [\u0b9e-\u0b9f] / [\u0ba3-\u0ba4] / [\u0ba8-\u0baa] / [\u0bae-\u0bb9] / [\u0bbe-\u0bc2] / [\u0bc6-\u0bc8] / [\u0bca-\u0bcd] / "\u0bd0" / "\u0bd7" / [\u0be6-\u0bef] / [\u0c00-\u0c03] / [\u0c05-\u0c0c] / [\u0c0e-\u0c10] / [\u0c12-\u0c28] / [\u0c2a-\u0c39] / [\u0c3d-\u0c44] / [\u0c46-\u0c48] / [\u0c4a-\u0c4d] / [\u0c55-\u0c56] / [\u0c58-\u0c5a] / [\u0c60-\u0c63] / [\u0c66-\u0c6f] / [\u0c81-\u0c83] / [\u0c85-\u0c8c] / [\u0c8e-\u0c90] / [\u0c92-\u0ca8] / [\u0caa-\u0cb3] / [\u0cb5-\u0cb9] / [\u0cbc-\u0cc4] / [\u0cc6-\u0cc8] / [\u0cca-\u0ccd] / [\u0cd5-\u0cd6] / "\u0cde" / [\u0ce0-\u0ce3] / [\u0ce6-\u0cef] / [\u0cf1-\u0cf2] / [\u0d01-\u0d03] / [\u0d05-\u0d0c] / [\u0d0e-\u0d10] / [\u0d12-\u0d3a] / [\u0d3d-\u0d44] / [\u0d46-\u0d48] / [\u0d4a-\u0d4e] / "\u0d57" / [\u0d5f-\u0d63] / [\u0d66-\u0d6f] / [\u0d7a-\u0d7f] / [\u0d82-\u0d83] / [\u0d85-\u0d96] / [\u0d9a-\u0db1] / [\u0db3-\u0dbb] / "\u0dbd" / [\u0dc0-\u0dc6] / "\u0dca" / [\u0dcf-\u0dd4] / "\u0dd6" / [\u0dd8-\u0ddf] / [\u0de6-\u0def] / [\u0df2-\u0df3] / [\u0e01-\u0e3a] / [\u0e40-\u0e4e] / [\u0e50-\u0e59] / [\u0e81-\u0e82] / "\u0e84" / [\u0e87-\u0e88] / "\u0e8a" / "\u0e8d" / [\u0e94-\u0e97] / [\u0e99-\u0e9f] / [\u0ea1-\u0ea3] / "\u0ea5" / "\u0ea7" / [\u0eaa-\u0eab] / [\u0ead-\u0eb9] / [\u0ebb-\u0ebd] / [\u0ec0-\u0ec4] / "\u0ec6" / [\u0ec8-\u0ecd] / [\u0ed0-\u0ed9] / [\u0edc-\u0edf] / "\u0f00" / [\u0f18-\u0f19] / [\u0f20-\u0f29] / "\u0f35" / "\u0f37" / "\u0f39" / [\u0f3e-\u0f47] / [\u0f49-\u0f6c] / [\u0f71-\u0f84] / [\u0f86-\u0f97] / [\u0f99-\u0fbc] / "\u0fc6" / [\u1000-\u1049] / [\u1050-\u109d] / [\u10a0-\u10c5] / "\u10c7" / "\u10cd" / [\u10d0-\u10fa] / [\u10fc-\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] / [\u135d-\u135f] / [\u1369-\u1371] / [\u1380-\u138f] / [\u13a0-\u13f5] / [\u13f8-\u13fd] / [\u1401-\u166c] / [\u166f-\u167f] / [\u1681-\u169a] / [\u16a0-\u16ea] / [\u16ee-\u16f8] / [\u1700-\u170c] / [\u170e-\u1714] / [\u1720-\u1734] / [\u1740-\u1753] / [\u1760-\u176c] / [\u176e-\u1770] / [\u1772-\u1773] / [\u1780-\u17d3] / "\u17d7" / [\u17dc-\u17dd] / [\u17e0-\u17e9] / [\u180b-\u180d] / [\u1810-\u1819] / [\u1820-\u1877] / [\u1880-\u18aa] / [\u18b0-\u18f5] / [\u1900-\u191e] / [\u1920-\u192b] / [\u1930-\u193b] / [\u1946-\u196d] / [\u1970-\u1974] / [\u1980-\u19ab] / [\u19b0-\u19c9] / [\u19d0-\u19da] / [\u1a00-\u1a1b] / [\u1a20-\u1a5e] / [\u1a60-\u1a7c] / [\u1a7f-\u1a89] / [\u1a90-\u1a99] / "\u1aa7" / [\u1ab0-\u1abd] / [\u1b00-\u1b4b] / [\u1b50-\u1b59] / [\u1b6b-\u1b73] / [\u1b80-\u1bf3] / [\u1c00-\u1c37] / [\u1c40-\u1c49] / [\u1c4d-\u1c7d] / [\u1cd0-\u1cd2] / [\u1cd4-\u1cf6] / [\u1cf8-\u1cf9] / [\u1d00-\u1df5] / [\u1dfc-\u1f15] / [\u1f18-\u1f1d] / [\u1f20-\u1f45] / [\u1f48-\u1f4d] / [\u1f50-\u1f57] / "\u1f59" / "\u1f5b" / "\u1f5d" / [\u1f5f-\u1f7d] / [\u1f80-\u1fb4] / [\u1fb6-\u1fbc] / "\u1fbe" / [\u1fc2-\u1fc4] / [\u1fc6-\u1fcc] / [\u1fd0-\u1fd3] / [\u1fd6-\u1fdb] / [\u1fe0-\u1fec] / [\u1ff2-\u1ff4] / [\u1ff6-\u1ffc] / [\u203f-\u2040] / "\u2054" / "\u2071" / "\u207f" / [\u2090-\u209c] / [\u20d0-\u20dc] / "\u20e1" / [\u20e5-\u20f0] / "\u2102" / "\u2107" / [\u210a-\u2113] / "\u2115" / [\u2118-\u211d] / "\u2124" / "\u2126" / "\u2128" / [\u212a-\u2139] / [\u213c-\u213f] / [\u2145-\u2149] / "\u214e" / [\u2160-\u2188] / [\u2c00-\u2c2e] / [\u2c30-\u2c5e] / [\u2c60-\u2ce4] / [\u2ceb-\u2cf3] / [\u2d00-\u2d25] / "\u2d27" / "\u2d2d" / [\u2d30-\u2d67] / "\u2d6f" / [\u2d7f-\u2d96] / [\u2da0-\u2da6] / [\u2da8-\u2dae] / [\u2db0-\u2db6] / [\u2db8-\u2dbe] / [\u2dc0-\u2dc6] / [\u2dc8-\u2dce] / [\u2dd0-\u2dd6] / [\u2dd8-\u2dde] / [\u2de0-\u2dff] / [\u3005-\u3007] / [\u3021-\u302f] / [\u3031-\u3035] / [\u3038-\u303c] / [\u3041-\u3096] / [\u3099-\u309f] / [\u30a1-\u30fa] / [\u30fc-\u30ff] / [\u3105-\u312d] / [\u3131-\u318e] / [\u31a0-\u31ba] / [\u31f0-\u31ff] / [\u3400-\u4db5] / [\u4e00-\u9fd5] / [\ua000-\ua48c] / [\ua4d0-\ua4fd] / [\ua500-\ua60c] / [\ua610-\ua62b] / [\ua640-\ua66f] / [\ua674-\ua67d] / [\ua67f-\ua6f1] / [\ua717-\ua71f] / [\ua722-\ua788] / [\ua78b-\ua7ad] / [\ua7b0-\ua7b7] / [\ua7f7-\ua827] / [\ua840-\ua873] / [\ua880-\ua8c4] / [\ua8d0-\ua8d9] / [\ua8e0-\ua8f7] / "\ua8fb" / "\ua8fd" / [\ua900-\ua92d] / [\ua930-\ua953] / [\ua960-\ua97c] / [\ua980-\ua9c0] / [\ua9cf-\ua9d9] / [\ua9e0-\ua9fe] / [\uaa00-\uaa36] / [\uaa40-\uaa4d] / [\uaa50-\uaa59] / [\uaa60-\uaa76] / [\uaa7a-\uaac2] / [\uaadb-\uaadd] / [\uaae0-\uaaef] / [\uaaf2-\uaaf6] / [\uab01-\uab06] / [\uab09-\uab0e] / [\uab11-\uab16] / [\uab20-\uab26] / [\uab28-\uab2e] / [\uab30-\uab5a] / [\uab5c-\uab65] / [\uab70-\uabea] / [\uabec-\uabed] / [\uabf0-\uabf9] / [\uac00-\ud7a3] / [\ud7b0-\ud7c6] / [\ud7cb-\ud7fb] / [\uf900-\ufa6d] / [\ufa70-\ufad9] / [\ufb00-\ufb06] / [\ufb13-\ufb17] / [\ufb1d-\ufb28] / [\ufb2a-\ufb36] / [\ufb38-\ufb3c] / "\ufb3e" / [\ufb40-\ufb41] / [\ufb43-\ufb44] / [\ufb46-\ufbb1] / [\ufbd3-\ufd3d] / [\ufd50-\ufd8f] / [\ufd92-\ufdc7] / [\ufdf0-\ufdfb] / [\ufe00-\ufe0f] / [\ufe20-\ufe2f] / [\ufe33-\ufe34] / [\ufe4d-\ufe4f] / [\ufe70-\ufe74] / [\ufe76-\ufefc] / [\uff10-\uff19] / [\uff21-\uff3a] / "\uff3f" / [\uff41-\uff5a] / [\uff66-\uffbe] / [\uffc2-\uffc7] / [\uffca-\uffcf] / [\uffd2-\uffd7] / [\uffda-\uffdc] / ("\u0001" [\u0000-\u000b]) / ("\u0001" [\u000d-\u0026]) / ("\u0001" [\u0028-\u003a]) / ("\u0001" [\u003c-\u003d]) / ("\u0001" [\u003f-\u004d]) / ("\u0001" [\u0050-\u005d]) / ("\u0001" [\u0080-\u00fa]) / ("\u0001" [\u0140-\u0174]) / ("\u0001\u01fd") / ("\u0001" [\u0280-\u029c]) / ("\u0001" [\u02a0-\u02d0]) / ("\u0001\u02e0") / ("\u0001" [\u0300-\u031f]) / ("\u0001" [\u0330-\u034a]) / ("\u0001" [\u0350-\u037a]) / ("\u0001" [\u0380-\u039d]) / ("\u0001" [\u03a0-\u03c3]) / ("\u0001" [\u03c8-\u03cf]) / ("\u0001" [\u03d1-\u03d5]) / ("\u0001" [\u0400-\u049d]) / ("\u0001" [\u04a0-\u04a9]) / ("\u0001" [\u0500-\u0527]) / ("\u0001" [\u0530-\u0563]) / ("\u0001" [\u0600-\u0736]) / ("\u0001" [\u0740-\u0755]) / ("\u0001" [\u0760-\u0767]) / ("\u0001" [\u0800-\u0805]) / ("\u0001\u0808") / ("\u0001" [\u080a-\u0835]) / ("\u0001" [\u0837-\u0838]) / ("\u0001\u083c") / ("\u0001" [\u083f-\u0855]) / ("\u0001" [\u0860-\u0876]) / ("\u0001" [\u0880-\u089e]) / ("\u0001" [\u08e0-\u08f2]) / ("\u0001" [\u08f4-\u08f5]) / ("\u0001" [\u0900-\u0915]) / ("\u0001" [\u0920-\u0939]) / ("\u0001" [\u0980-\u09b7]) / ("\u0001" [\u09be-\u09bf]) / ("\u0001" [\u0a00-\u0a03]) / ("\u0001" [\u0a05-\u0a06]) / ("\u0001" [\u0a0c-\u0a13]) / ("\u0001" [\u0a15-\u0a17]) / ("\u0001" [\u0a19-\u0a33]) / ("\u0001" [\u0a38-\u0a3a]) / ("\u0001\u0a3f") / ("\u0001" [\u0a60-\u0a7c]) / ("\u0001" [\u0a80-\u0a9c]) / ("\u0001" [\u0ac0-\u0ac7]) / ("\u0001" [\u0ac9-\u0ae6]) / ("\u0001" [\u0b00-\u0b35]) / ("\u0001" [\u0b40-\u0b55]) / ("\u0001" [\u0b60-\u0b72]) / ("\u0001" [\u0b80-\u0b91]) / ("\u0001" [\u0c00-\u0c48]) / ("\u0001" [\u0c80-\u0cb2]) / ("\u0001" [\u0cc0-\u0cf2]) / ("\u0001" [\u1000-\u1046]) / ("\u0001" [\u1066-\u106f]) / ("\u0001" [\u107f-\u10ba]) / ("\u0001" [\u10d0-\u10e8]) / ("\u0001" [\u10f0-\u10f9]) / ("\u0001" [\u1100-\u1134]) / ("\u0001" [\u1136-\u113f]) / ("\u0001" [\u1150-\u1173]) / ("\u0001\u1176") / ("\u0001" [\u1180-\u11c4]) / ("\u0001" [\u11ca-\u11cc]) / ("\u0001" [\u11d0-\u11da]) / ("\u0001\u11dc") / ("\u0001" [\u1200-\u1211]) / ("\u0001" [\u1213-\u1237]) / ("\u0001" [\u1280-\u1286]) / ("\u0001\u1288") / ("\u0001" [\u128a-\u128d]) / ("\u0001" [\u128f-\u129d]) / ("\u0001" [\u129f-\u12a8]) / ("\u0001" [\u12b0-\u12ea]) / ("\u0001" [\u12f0-\u12f9]) / ("\u0001" [\u1300-\u1303]) / ("\u0001" [\u1305-\u130c]) / ("\u0001" [\u130f-\u1310]) / ("\u0001" [\u1313-\u1328]) / ("\u0001" [\u132a-\u1330]) / ("\u0001" [\u1332-\u1333]) / ("\u0001" [\u1335-\u1339]) / ("\u0001" [\u133c-\u1344]) / ("\u0001" [\u1347-\u1348]) / ("\u0001" [\u134b-\u134d]) / ("\u0001\u1350") / ("\u0001\u1357") / ("\u0001" [\u135d-\u1363]) / ("\u0001" [\u1366-\u136c]) / ("\u0001" [\u1370-\u1374]) / ("\u0001" [\u1480-\u14c5]) / ("\u0001\u14c7") / ("\u0001" [\u14d0-\u14d9]) / ("\u0001" [\u1580-\u15b5]) / ("\u0001" [\u15b8-\u15c0]) / ("\u0001" [\u15d8-\u15dd]) / ("\u0001" [\u1600-\u1640]) / ("\u0001\u1644") / ("\u0001" [\u1650-\u1659]) / ("\u0001" [\u1680-\u16b7]) / ("\u0001" [\u16c0-\u16c9]) / ("\u0001" [\u1700-\u1719]) / ("\u0001" [\u171d-\u172b]) / ("\u0001" [\u1730-\u1739]) / ("\u0001" [\u18a0-\u18e9]) / ("\u0001\u18ff") / ("\u0001" [\u1ac0-\u1af8]) / ("\u0001" [\u2000-\u2399]) / ("\u0001" [\u2400-\u246e]) / ("\u0001" [\u2480-\u2543]) / ("\u0001" [\u3000-\u342e]) / ("\u0001" [\u4400-\u4646]) / ("\u0001" [\u6800-\u6a38]) / ("\u0001" [\u6a40-\u6a5e]) / ("\u0001" [\u6a60-\u6a69]) / ("\u0001" [\u6ad0-\u6aed]) / ("\u0001" [\u6af0-\u6af4]) / ("\u0001" [\u6b00-\u6b36]) / ("\u0001" [\u6b40-\u6b43]) / ("\u0001" [\u6b50-\u6b59]) / ("\u0001" [\u6b63-\u6b77]) / ("\u0001" [\u6b7d-\u6b8f]) / ("\u0001" [\u6f00-\u6f44]) / ("\u0001" [\u6f50-\u6f7e]) / ("\u0001" [\u6f8f-\u6f9f]) / ("\u0001" [\ub000-\ub001]) / ("\u0001" [\ubc00-\ubc6a]) / ("\u0001" [\ubc70-\ubc7c]) / ("\u0001" [\ubc80-\ubc88]) / ("\u0001" [\ubc90-\ubc99]) / ("\u0001" [\ubc9d-\ubc9e]) / ("\u0001" [\ud165-\ud169]) / ("\u0001" [\ud16d-\ud172]) / ("\u0001" [\ud17b-\ud182]) / ("\u0001" [\ud185-\ud18b]) / ("\u0001" [\ud1aa-\ud1ad]) / ("\u0001" [\ud242-\ud244]) / ("\u0001" [\ud400-\ud454]) / ("\u0001" [\ud456-\ud49c]) / ("\u0001" [\ud49e-\ud49f]) / ("\u0001\ud4a2") / ("\u0001" [\ud4a5-\ud4a6]) / ("\u0001" [\ud4a9-\ud4ac]) / ("\u0001" [\ud4ae-\ud4b9]) / ("\u0001\ud4bb") / ("\u0001" [\ud4bd-\ud4c3]) / ("\u0001" [\ud4c5-\ud505]) / ("\u0001" [\ud507-\ud50a]) / ("\u0001" [\ud50d-\ud514]) / ("\u0001" [\ud516-\ud51c]) / ("\u0001" [\ud51e-\ud539]) / ("\u0001" [\ud53b-\ud53e]) / ("\u0001" [\ud540-\ud544]) / ("\u0001\ud546") / ("\u0001" [\ud54a-\ud550]) / ("\u0001" [\ud552-\ud6a5]) / ("\u0001" [\ud6a8-\ud6c0]) / ("\u0001" [\ud6c2-\ud6da]) / ("\u0001" [\ud6dc-\ud6fa]) / ("\u0001" [\ud6fc-\ud714]) / ("\u0001" [\ud716-\ud734]) / ("\u0001" [\ud736-\ud74e]) / ("\u0001" [\ud750-\ud76e]) / ("\u0001" [\ud770-\ud788]) / ("\u0001" [\ud78a-\ud7a8]) / ("\u0001" [\ud7aa-\ud7c2]) / ("\u0001" [\ud7c4-\ud7cb]) / ("\u0001" [\ud7ce-\ud7ff]) / ("\u0001" [\ue800-\ue8c4]) / ("\u0001" [\ue8d0-\ue8d6]) / ("\u0001" [\uee00-\uee03]) / ("\u0001" [\uee05-\uee1f]) / ("\u0001" [\uee21-\uee22]) / ("\u0001\uee24") / ("\u0001\uee27") / ("\u0001" [\uee29-\uee32]) / ("\u0001" [\uee34-\uee37]) / ("\u0001\uee39") / ("\u0001\uee3b") / ("\u0001\uee42") / ("\u0001\uee47") / ("\u0001\uee49") / ("\u0001\uee4b") / ("\u0001" [\uee4d-\uee4f]) / ("\u0001" [\uee51-\uee52]) / ("\u0001\uee54") / ("\u0001\uee57") / ("\u0001\uee59") / ("\u0001\uee5b") / ("\u0001\uee5d") / ("\u0001\uee5f") / ("\u0001" [\uee61-\uee62]) / ("\u0001\uee64") / ("\u0001" [\uee67-\uee6a]) / ("\u0001" [\uee6c-\uee72]) / ("\u0001" [\uee74-\uee77]) / ("\u0001" [\uee79-\uee7c]) / ("\u0001\uee7e") / ("\u0001" [\uee80-\uee89]) / ("\u0001" [\uee8b-\uee9b]) / ("\u0001" [\ueea1-\ueea3]) / ("\u0001" [\ueea5-\ueea9]) / ("\u0001" [\ueeab-\ueebb]) / ("\u0002" [\u0000-\ua6d6]) / ("\u0002" [\ua700-\ub734]) / ("\u0002" [\ub740-\ub81d]) / ("\u0002" [\ub820-\ucea1]) / ("\u0002" [\uf800-\ufa1d]) / ("\u000e" [\u0100-\u01ef]) 10 11 version(GenerateGrammar): 12 13 void main() 14 { 15 import pegged.grammar; 16 asModule("es6.grammar", "source/es6/grammar",` 17 ES6: 18 Module < ModuleBody eoi 19 ModuleBody < ModuleItemList 20 ModuleItemList < (ImportDeclaration / ExportDeclaration / StatementListItem)+ 21 ImportDeclaration < "import" ((ImportClause FromClause) / ModuleSpecifier) ";" 22 ImportClause < NameSpaceImport / NamedImports / (ImportedDefaultBinding "," NameSpaceImport) / (ImportedDefaultBinding "," NamedImports) / ImportedDefaultBinding 23 ImportedDefaultBinding < ImportedBinding 24 NameSpaceImport < "*" "as" ImportedBinding 25 NamedImports < CurlyBrackets((ImportsList (",")?)?) 26 FromClause < "from" ModuleSpecifier 27 ImportsList < ImportSpecifier ("," ImportSpecifier)* 28 ImportSpecifier < (IdentifierName "as" ImportedBinding) / ImportedBinding 29 ModuleSpecifier < StringLiteral 30 ImportedBinding < BindingIdentifier 31 ExportDeclaration < / ("export" "*" FromClause ";") 32 / ("export" ExportClause FromClause ";") 33 / ("export" ExportClause ";") 34 / ("export" "default" HoistableDeclarationDefault) 35 / ("export" "default" ClassDeclarationDefault) 36 / ("export" "default" !("function" / "class") AssignmentExpressionIn ";") 37 / ("export" VariableStatement) 38 / ("export" Declaration) 39 40 ExportClause < CurlyBrackets((ExportsList (",")?)?) 41 ExportsList < ExportSpecifier ("," ExportSpecifier)* 42 ExportSpecifier < IdentifierName ("as" IdentifierName)? 43 SourceCharacter <- [\u0000-\uFFFC] 44 InputElementDiv <- WhiteSpace / LineTerminator / Comment / CommonToken / DivPunctuator / RightBracePunctuator 45 InputElementRegExp <- WhiteSpace / LineTerminator / Comment / CommonToken / RightBracePunctuator / RegularExpressionLiteral 46 InputElementRegExpOrTemplateTail <- WhiteSpace / LineTerminator / Comment / CommonToken / RegularExpressionLiteral / TemplateSubstitutionTail 47 InputElementTemplateTail <- WhiteSpace / LineTerminator / Comment / CommonToken / DivPunctuator / TemplateSubstitutionTail 48 49 WhiteSpace <- "\u0009" / "\u000B" / "\u000C" / "\u0020" / "\u00A0" / "\uFEFF" / [\u02B0-\u02FF] 50 LineTerminator <- "\u000A" / "\u000D" / "\u2028" / "\u2029" 51 LineTerminatorSequence <- "\u000A" / ("\u000D" !"\u000A") / "\u2028" / "\u2029" / ("\u000D\u000A") 52 Spacing <~ (:WhiteSpace / :LineTerminatorSequence / Comment)* 53 Spaces <~ (:WhiteSpace / Comment)* 54 55 Comment <~ MultiLineComment / SingleLineComment 56 MultiLineComment <~ :"/*" (!"*/" SourceCharacter)* :"*/" 57 SingleLineComment <- :"//" SingleLineCommentChars? eol 58 SingleLineCommentChars <- SingleLineCommentChar+ 59 SingleLineCommentChar <- !LineTerminator SourceCharacter 60 61 CommonToken <- IdentifierName / Punctuator / NumericLiteral / StringLiteral / Template 62 IdentifierName <~ IdentifierStart IdentifierPart* 63 IdentifierStart <~ UnicodeIDStart / "$" / "_" / ("\\" UnicodeEscapeSequence) 64 IdentifierPart <~ UnicodeIDContinue / "$" / "_" / ("\\" UnicodeEscapeSequence) / "\u200C" / "\u200D" 65 UnicodeIDStart <~ ID_Start / Other_ID_Start 66 67 ID_Start <- [\u0041-\u005a] / [\u0061-\u007a] / "\u00aa" / "\u00b5" / "\u00ba" / [\u00c0-\u00d6] / [\u00d8-\u00f6] 68 Other_ID_Start <- "\u2118" / "\u212e" / [\u309b-\u309c] 69 UnicodeIDContinue <- ID_Continue / Other_ID_Continue / Other_ID_Start 70 ID_Continue <- [\u0030-\u0039] / [\u0041-\u005a] / "\u005f" / [\u0061-\u007a] / "\u00aa" / "\u00b5" / "\u00b7" / "\u00ba" / [\u00c0-\u00d6] / [\u00d8-\u00f6] 71 Other_ID_Continue <- "\u00b7" / "\u0387" / [\u1369-\u1371] / "\u19da" 72 73 ReservedWord <- Keyword / FutureReservedWord / NullLiteral / BooleanLiteral 74 Keyword <- "break" / "do" / "in" / "typeof" / "case" / "else" / "instanceof" / "var" / "catch" / "export" / "new" / "void" / "class" / "extends" / "return" / "while" / "const" / "finally" / "super" / "with" / "continue" / "for" / "switch" / "yield" / "debugger" / "function" / "this" / "default" / "if" / "throw" / "delete" / "import" / "try" 75 FutureReservedWord <- "enum" / "await" 76 Punctuator <- "{" / "}" / "(" / ")" / "[" / "]" / "." / ";" / "," / "<=" / ">=" / "<" / ">" / "===" / "!==" / "==" / "!=" / "++" / "--" / "*=" / "*" / "%=" / "%" / "+=" / "+" / "-=" / "-" / "<<=" / "<<" / ">>>=" / ">>>" / ">>=" / ">>" / "&&" / "||" / "^=" / "^" / "!" / "~" / "&=" / "&" / "|=" / "|" / "?" / ":" / "=>" / "=" 77 DivPunctuator <- "/=" / "/" 78 RightBracePunctuator <- "}" 79 NullLiteral <- "null" 80 BooleanLiteral <- "true" / "false" 81 NumericLiteral <- HexIntegerLiteral / DecimalLiteral / BinaryIntegerLiteral / OctalIntegerLiteral 82 DecimalLiteral <~ (DecimalIntegerLiteral ("." DecimalDigits?)? ExponentPart?) / ("." DecimalDigits ExponentPart?) 83 DecimalIntegerLiteral <- "0" / (NonZeroDigit DecimalDigits?) 84 DecimalDigits <~ DecimalDigit+ 85 DecimalDigit <- [0-9] 86 NonZeroDigit <- [1-9] 87 ExponentPart <- ExponentIndicator SignedInteger 88 ExponentIndicator <- "e" / "E" 89 SignedInteger <- ("+" / "-")? DecimalDigits 90 BinaryIntegerLiteral <~ ("0b" / "0B") BinaryDigits 91 BinaryDigits <~ BinaryDigit+ 92 BinaryDigit <- "0" / "1" 93 OctalIntegerLiteral <~ ("0o" / "0O") OctalDigits 94 OctalDigits <- OctalDigit+ 95 OctalDigit <- [0-7] 96 HexIntegerLiteral <~ ("0x" / "0X") HexDigits 97 HexDigits <- HexDigit+ 98 HexDigit <- [0-9a-fA-F] 99 100 StringLiteral <~ ("\"" DoubleStringCharacters? "\"") / ("'" SingleStringCharacters? "'") 101 DoubleStringCharacters <- DoubleStringCharacter+ 102 SingleStringCharacters <- SingleStringCharacter+ 103 DoubleStringCharacter <- (!("\"" / "\\" / LineTerminator) SourceCharacter) / ("\\" EscapeSequence) / LineContinuation 104 SingleStringCharacter <- (!("\'" / "\\" / LineTerminator) SourceCharacter) / ("\\" EscapeSequence) / LineContinuation 105 LineContinuation <- "\\" LineTerminatorSequence 106 EscapeSequence <- (CharacterEscapeSequence / ("0" !DecimalDigit)) / HexEscapeSequence / UnicodeEscapeSequence 107 CharacterEscapeSequence <- SingleEscapeCharacter / NonEscapeCharacter 108 SingleEscapeCharacter <- "'" / "\"" / "\\" / "b" / "f" / "n" / "r" / "t" / "v" 109 NonEscapeCharacter <- !(EscapeCharacter / LineTerminator) SourceCharacter 110 EscapeCharacter <- SingleEscapeCharacter / DecimalDigit / "x" / "u" 111 HexEscapeSequence <- "x" HexDigit HexDigit 112 UnicodeEscapeSequence <- ("u" Hex4Digits) / "u{" HexDigits "}" 113 Hex4Digits <- HexDigit HexDigit HexDigit HexDigit 114 115 RegularExpressionLiteral <- "/" RegularExpressionBody "/" RegularExpressionFlags 116 RegularExpressionBody <- RegularExpressionFirstChar RegularExpressionChars 117 RegularExpressionChars <- RegularExpressionChar* 118 119 RegularExpressionFirstChar <- (!("*" / "\\" / "/" / "[") RegularExpressionNonTerminator) / RegularExpressionBackslashSequence / RegularExpressionClass 120 RegularExpressionChar <- (!("\\" / "/" / "[") RegularExpressionNonTerminator) / RegularExpressionBackslashSequence / RegularExpressionClass 121 RegularExpressionBackslashSequence <- "\\" RegularExpressionNonTerminator 122 RegularExpressionNonTerminator <- !LineTerminator SourceCharacter 123 RegularExpressionClass <- :"[" RegularExpressionClassChars :"]" 124 RegularExpressionClassChars <- RegularExpressionClassChar* 125 RegularExpressionClassChar <- (!("]" / "\\") RegularExpressionNonTerminator) / RegularExpressionBackslashSequence 126 RegularExpressionFlags <- IdentifierPart* 127 128 Template <- NoSubstitutionTemplate / TemplateHead 129 NoSubstitutionTemplate <- :"\u0060" TemplateCharacters? :"\u0060" 130 TemplateHead <- :"\u0060" TemplateCharacters? :"${" 131 TemplateSubstitutionTail <- TemplateMiddle / TemplateTail 132 TemplateMiddle <- :"}" TemplateCharacters? :"${" 133 TemplateTail <- :"}" TemplateCharacters? :"\u0060" 134 TemplateCharacters <- TemplateCharacter+ 135 TemplateCharacter <- ("$" !"{") / ("\\" EscapeSequence) / LineContinuation / LineTerminatorSequence / (!("\u0060" / "\\" / "$" / LineTerminator) SourceCharacter) 136 137 IdentifierReference < Identifier / "yield" 138 IdentifierReferenceYield < Identifier 139 BindingIdentifier < Identifier / "yield" 140 BindingIdentifierYield < Identifier 141 LabelIdentifier < Identifier / "yield" 142 LabelIdentifierYield < Identifier 143 Identifier <- !(ReservedWord (WhiteSpace / LineTerminatorSequence / Comment / ";" / ":")) IdentifierName 144 ThisKeyword <- ("this" !IdentifierPart) 145 146 PrimaryExpression < ThisKeyword / Literal / ArrayLiteral / ObjectLiteral / GeneratorExpression / ClassExpression / FunctionExpression / RegularExpressionLiteral / TemplateLiteral / CoverParenthesizedExpressionAndArrowParameterList / IdentifierReference 147 PrimaryExpressionYield < ThisKeyword / Literal / ArrayLiteralYield / ObjectLiteralYield / GeneratorExpression / ClassExpressionYield / FunctionExpression / RegularExpressionLiteral / TemplateLiteralYield / CoverParenthesizedExpressionAndArrowParameterListYield / IdentifierReferenceYield 148 CoverParenthesizedExpressionAndArrowParameterList < Parentheses(ExpressionIn "," "..." BindingIdentifier) / Parentheses("..." BindingIdentifier) / Parentheses(ExpressionIn?) 149 CoverParenthesizedExpressionAndArrowParameterListYield < Parentheses(ExpressionInYield "," "..." BindingIdentifierYield) / Parentheses("..." BindingIdentifierYield) / Parentheses(ExpressionInYield?) 150 151 ParenthesizedExpression < Parentheses(ExpressionIn) 152 ParenthesizedExpressionYield < Parentheses(ExpressionInYield) 153 Literal <- ((NullLiteral / BooleanLiteral / NumericLiteral) !(IdentifierStart / IdentifierPart)) / StringLiteral 154 ArrayLiteral < SquareBrackets(ElementList? Elision?) 155 ArrayLiteralYield < SquareBrackets(ElementListYield? Elision?) 156 ElementList < Elision? (AssignmentExpressionIn / SpreadElement) (:"," Elision? (AssignmentExpressionIn / SpreadElement))* 157 ElementListYield < Elision? (AssignmentExpressionInYield / SpreadElementYield) (:"," Elision? (AssignmentExpressionInYield / SpreadElementYield))* 158 Elision < ","+ 159 SpreadElement < :"..." AssignmentExpressionIn 160 SpreadElementYield < :"..." AssignmentExpressionInYield 161 ObjectLiteral < CurlyBrackets((PropertyDefinitionList :","?)?) 162 ObjectLiteralYield < CurlyBrackets((PropertyDefinitionListYield :","?)?) 163 PropertyDefinitionList < PropertyDefinition ("," PropertyDefinition)* 164 PropertyDefinitionListYield < PropertyDefinitionYield ("," PropertyDefinitionYield)* 165 PropertyDefinition < MethodDefinition / CoverInitializedName / (PropertyName ":" AssignmentExpressionIn) / IdentifierReference 166 PropertyDefinitionYield < MethodDefinitionYield / CoverInitializedNameYield / (PropertyNameYield ":" AssignmentExpressionInYield) / IdentifierReferenceYield 167 PropertyName < ComputedPropertyName / LiteralPropertyName 168 PropertyNameYield < ComputedPropertyNameYield / LiteralPropertyName 169 LiteralPropertyName < NumericLiteral / StringLiteral / IdentifierName 170 ComputedPropertyName < SquareBrackets(AssignmentExpressionIn) 171 ComputedPropertyNameYield < SquareBrackets(AssignmentExpressionInYield) 172 CoverInitializedName < IdentifierReference InitializerIn 173 CoverInitializedNameYield < IdentifierReferenceYield InitializerInYield 174 Initializer < :"=" AssignmentExpression 175 InitializerIn < :"=" AssignmentExpressionIn 176 InitializerYield < :"=" AssignmentExpressionYield 177 InitializerInYield < :"=" AssignmentExpressionInYield 178 TemplateLiteral < NoSubstitutionTemplate / (TemplateHead ExpressionIn TemplateSpans) 179 TemplateLiteralYield < NoSubstitutionTemplate / (TemplateHead ExpressionInYield TemplateSpansYield) 180 TemplateSpans < TemplateMiddleList? TemplateTail 181 TemplateSpansYield < TemplateMiddleListYield? TemplateTail 182 TemplateMiddleList < TemplateMiddleList? TemplateMiddle ExpressionIn 183 TemplateMiddleListYield < TemplateMiddleListYield? TemplateMiddle ExpressionInYield 184 FieldAccessor < "." IdentifierName 185 MemberExpression < ((SuperProperty / MetaProperty / PrimaryExpression) / (NewKeyword ((SuperProperty / MetaProperty / PrimaryExpression) (SquareBrackets(ExpressionIn) / (FieldAccessor) / TemplateLiteral)*) Arguments)) (SquareBrackets(ExpressionIn) / (FieldAccessor) / TemplateLiteral)* 186 MemberExpressionYield < ((SuperPropertyYield / MetaProperty / PrimaryExpressionYield) / (NewKeyword ((SuperPropertyYield / MetaProperty / PrimaryExpressionYield) (SquareBrackets(ExpressionInYield) / (FieldAccessor) / TemplateLiteralYield)*) ArgumentsYield)) (SquareBrackets(ExpressionInYield) / (FieldAccessor) / TemplateLiteralYield)* 187 SuperProperty < (:"super" SquareBrackets(ExpressionIn)) / (:"super" FieldAccessor) 188 SuperPropertyYield < (:"super" SquareBrackets(ExpressionInYield)) / (:"super" FieldAccessor) 189 MetaProperty < NewTarget 190 NewKeyword <- "new" !(IdentifierStart / IdentifierPart) 191 NewTarget < :"new" "." :"target" 192 NewExpression < MemberExpression / ((NewKeyword WhiteSpace?)* MemberExpression) 193 NewExpressionYield < MemberExpressionYield / ((NewKeyword WhiteSpace?)* MemberExpressionYield) 194 CallExpression < (SuperCall / (MemberExpression Arguments)) (SquareBrackets(ExpressionIn) / (FieldAccessor) / TemplateLiteral / Arguments)* 195 CallExpressionYield < (SuperCallYield / (MemberExpressionYield ArgumentsYield)) (SquareBrackets(ExpressionInYield) / (FieldAccessor) / TemplateLiteralYield / ArgumentsYield)* 196 SuperCall < :"super" Arguments 197 SuperCallYield < :"super" ArgumentsYield 198 Arguments < Parentheses(ArgumentList?) 199 ArgumentsYield < Parentheses(ArgumentListYield?) 200 ArgumentList < "..."? AssignmentExpressionIn ("," ArgumentList)* 201 ArgumentListYield < "..."? AssignmentExpressionInYield ("," ArgumentListYield)* 202 LeftHandSideExpression < CallExpression / NewExpression 203 LeftHandSideExpressionYield < CallExpressionYield / NewExpressionYield 204 PostfixExpression < LeftHandSideExpression (Spaces (PostfixOperator))? 205 PostfixExpressionYield < LeftHandSideExpressionYield (Spaces (PostfixOperator))? 206 PostfixOperator < "++" / "--" 207 PrefixExpression <- ((("delete" / "void" / "typeof") !(IdentifierStart / IdentifierPart)) / "++" / "--" / "+" / "-" / "~" / "!") 208 UnaryExpression < PrefixExpression* PostfixExpression 209 UnaryExpressionYield < PrefixExpression* PostfixExpressionYield 210 RightHandSideExpression < BinaryExpression / UnaryExpression 211 RightHandSideExpressionIn < BinaryExpressionIn / UnaryExpression 212 RightHandSideExpressionYield < BinaryExpressionYield / UnaryExpressionYield 213 RightHandSideExpressionInYield < BinaryExpressionInYield / UnaryExpressionYield 214 BinaryExpression < UnaryExpression (ExpressionOperator UnaryExpression)+ 215 BinaryExpressionIn < UnaryExpression (ExpressionOperatorIn UnaryExpression)+ 216 BinaryExpressionYield < UnaryExpressionYield (ExpressionOperator UnaryExpressionYield)+ 217 BinaryExpressionInYield < UnaryExpressionYield (ExpressionOperatorIn UnaryExpressionYield)+ 218 ExpressionOperator < LogicalOperator / BitwiseOperator / EqualityOperator / ShiftOperator / RelationalOperator / AdditiveOperator / MultiplicativeOperator 219 ExpressionOperatorIn < LogicalOperator / BitwiseOperator / EqualityOperator / ShiftOperator / RelationalOperatorIn / AdditiveOperator / MultiplicativeOperator 220 LogicalOperator < "||" / "&&" 221 BitwiseOperator < "|" / "^" / "&" 222 EqualityOperator < "===" / "!==" / "==" / "!=" 223 RelationalOperator < "<=" / ">=" / "<" / ">" / "instanceof" 224 RelationalOperatorIn < "<=" / ">=" / "<" / ">" / "instanceof" / "in" 225 ShiftOperator < "<<" / ">>>" / ">>" 226 AdditiveOperator <- "+" / "-" 227 MultiplicativeOperator < "*" / "/" / "%" 228 ConditionalExpression < RightHandSideExpression ("?" AssignmentExpressionIn ":" AssignmentExpression)? 229 ConditionalExpressionIn < RightHandSideExpressionIn ("?" AssignmentExpressionIn ":" AssignmentExpressionIn)? 230 ConditionalExpressionYield < RightHandSideExpressionYield ("?" AssignmentExpressionInYield ":" AssignmentExpressionYield)? 231 ConditionalExpressionInYield < RightHandSideExpressionInYield ("?" AssignmentExpressionInYield ":" AssignmentExpressionInYield)? 232 AssignmentExpression < ((JSXElement / ArrowFunction / ConditionalExpression) !AssignmentOperator) / ((LeftHandSideExpression AssignmentOperator)* (JSXElement / ArrowFunction / ConditionalExpression)) 233 AssignmentExpressionIn < ((JSXElement / ArrowFunctionIn / ConditionalExpressionIn) !AssignmentOperator) / ((LeftHandSideExpression AssignmentOperator)* (JSXElement / ArrowFunctionIn / ConditionalExpressionIn)) 234 AssignmentExpressionYield < (YieldExpression / ArrowFunctionYield / ConditionalExpressionYield) / ((LeftHandSideExpressionYield AssignmentOperator)* (YieldExpression / ArrowFunctionYield / ConditionalExpressionYield)) 235 AssignmentExpressionInYield < (YieldExpressionIn / ArrowFunctionInYield / ConditionalExpressionInYield) / ((LeftHandSideExpressionYield AssignmentOperator)* (YieldExpressionIn / ArrowFunctionInYield / ConditionalExpressionInYield)) 236 AssignmentOperator < (!"==" "=") / "*=" / "/=" / "%=" / "+=" / "-=" / "<<=" / ">>=" / ">>>=" / "&=" / "^=" / "|=" 237 Comma < "," 238 Expression < AssignmentExpression (Comma AssignmentExpression)* 239 ExpressionIn < AssignmentExpressionIn (Comma AssignmentExpressionIn)* 240 ExpressionYield < AssignmentExpressionYield (Comma AssignmentExpressionYield)* 241 ExpressionInYield < AssignmentExpressionInYield (Comma AssignmentExpressionInYield)* 242 243 Statement < (BlockStatement / VariableStatement / EmptyStatement / IfStatement / BreakableStatement / ContinueStatement / BreakStatement / WithStatement / LabelledStatement / ThrowStatement / TryStatement / DebuggerStatement / ExpressionStatement) :";"? 244 StatementYield < (BlockStatementYield / VariableStatementYield / EmptyStatement / IfStatementYield / BreakableStatementYield / ContinueStatementYield / BreakStatementYield / WithStatementYield / LabelledStatementYield / ThrowStatementYield / TryStatementYield / DebuggerStatement / ExpressionStatementYield) :";"? 245 StatementReturn < (BlockStatementReturn / VariableStatement / EmptyStatement / IfStatementReturn / BreakableStatementReturn / ContinueStatement / BreakStatement / ReturnStatement / WithStatementReturn / LabelledStatementReturn / ThrowStatement / TryStatementReturn / DebuggerStatement / ExpressionStatement) :";"? 246 StatementYieldReturn < (BlockStatementYieldReturn / VariableStatementYield / EmptyStatement / IfStatementYieldReturn / BreakableStatementYieldReturn / ContinueStatementYield / BreakStatementYield / ReturnStatementYield / WithStatementYieldReturn / LabelledStatementYieldReturn / ThrowStatementYield / TryStatementYieldReturn / DebuggerStatement / ExpressionStatementYield) :";"? 247 248 Declaration < HoistableDeclaration / ClassDeclaration / LexicalDeclarationIn 249 DeclarationYield < HoistableDeclarationYield / ClassDeclarationYield / LexicalDeclarationInYield 250 HoistableDeclaration < GeneratorDeclaration / FunctionDeclaration 251 HoistableDeclarationYield < GeneratorDeclarationYield / FunctionDeclarationYield 252 HoistableDeclarationDefault < GeneratorDeclarationDefault / FunctionDeclarationDefault 253 HoistableDeclarationYieldDefault < GeneratorDeclarationYieldDefault / FunctionDeclarationYieldDefault 254 255 BreakableStatement < IterationStatement / SwitchStatement 256 BreakableStatementYield < IterationStatementYield / SwitchStatementYield 257 BreakableStatementReturn < IterationStatementReturn / SwitchStatementReturn 258 BreakableStatementYieldReturn < IterationStatementYieldReturn / SwitchStatementYieldReturn 259 260 BlockStatement < %Block 261 BlockStatementYield < %BlockYield 262 BlockStatementReturn < %BlockReturn 263 BlockStatementYieldReturn < %BlockYieldReturn 264 265 Block < CurlyBrackets(StatementList) 266 BlockYield < CurlyBrackets(StatementListYield) 267 BlockReturn < CurlyBrackets(StatementListReturn) 268 BlockYieldReturn < CurlyBrackets(StatementListYieldReturn) 269 270 StatementList < StatementListItem* 271 StatementListYield < StatementListItemYield* 272 StatementListReturn < StatementListItemReturn* 273 StatementListYieldReturn < StatementListItemYieldReturn* 274 275 StatementListItem < Declaration / Statement 276 StatementListItemYield < DeclarationYield / StatementYield 277 StatementListItemReturn < Declaration / StatementReturn 278 StatementListItemYieldReturn < DeclarationYield / StatementYieldReturn 279 280 LexicalDeclaration < LetOrConst BindingList :";" 281 LexicalDeclarationIn < LetOrConst BindingListIn :";" 282 LexicalDeclarationYield < LetOrConst BindingListYield :";" 283 LexicalDeclarationInYield < LetOrConst BindingListInYield :";" 284 LetOrConst < ("let" / "const") 285 286 BindingList < LexicalBinding (:"," LexicalBinding)* 287 BindingListIn < LexicalBindingIn (:"," LexicalBindingIn)* 288 BindingListYield < LexicalBindingYield (:"," LexicalBindingYield)* 289 BindingListInYield < LexicalBindingInYield (:"," LexicalBindingInYield)* 290 291 LexicalBinding < (BindingPatternYield Initializer) / (BindingIdentifier Initializer?) 292 LexicalBindingIn < (BindingPatternYield InitializerIn) / (BindingIdentifier InitializerIn?) 293 LexicalBindingYield < (BindingPatternYield InitializerYield) / (BindingIdentifierYield InitializerYield?) 294 LexicalBindingInYield < (BindingPatternYield InitializerInYield) / (BindingIdentifierYield InitializerInYield?) 295 296 VariableStatement < :"var" VariableDeclarationListIn 297 VariableStatementYield < :"var" VariableDeclarationListInYield 298 299 VariableDeclarationList < VariableDeclaration (:"," VariableDeclaration)* 300 VariableDeclarationListIn < VariableDeclarationIn (:"," VariableDeclarationIn)* 301 VariableDeclarationListYield < VariableDeclarationYield (:"," VariableDeclarationYield)* 302 VariableDeclarationListInYield < VariableDeclarationInYield (:"," VariableDeclarationInYield)* 303 304 VariableDeclaration < (BindingPattern Initializer) / (BindingIdentifier Initializer?) 305 VariableDeclarationIn < (BindingPattern InitializerIn) / (BindingIdentifier InitializerIn?) 306 VariableDeclarationYield < (BindingPatternYield InitializerYield) / (BindingIdentifierYield InitializerYield?) 307 VariableDeclarationInYield < (BindingPatternYield InitializerInYield) / (BindingIdentifierYield InitializerInYield?) 308 309 BindingPattern < ObjectBindingPattern / ArrayBindingPattern 310 BindingPatternYield < ObjectBindingPatternYield / ArrayBindingPatternYield 311 ObjectBindingPattern < CurlyBrackets((BindingPropertyList (:",")?)?) 312 ObjectBindingPatternYield < CurlyBrackets((BindingPropertyListYield (:",")?)?) 313 314 ArrayBindingPattern < SquareBrackets(Elision? BindingRestElement?) / SquareBrackets(BindingElementList (:"," Elision? BindingRestElement?)?) / SquareBrackets(BindingElementList) 315 ArrayBindingPatternYield < SquareBrackets(Elision? BindingRestElementYield?) / SquareBrackets(BindingElementListYield (:"," Elision? BindingRestElementYield?)?) / SquareBrackets(BindingElementListYield) 316 BindingPropertyList < BindingProperty (:"," BindingProperty)* 317 BindingPropertyListYield < BindingPropertyYield (:"," BindingPropertyYield)* 318 BindingElementList < BindingElisionElement (:"," BindingElisionElement)* 319 BindingElementListYield < BindingElisionElementYield (:"," BindingElisionElementYield)* 320 BindingElisionElement < Elision? BindingElement 321 BindingElisionElementYield < Elision? BindingElementYield 322 BindingProperty < (PropertyName ":" BindingElement) / SingleNameBinding 323 BindingPropertyYield < (PropertyNameYield ":" BindingElementYield) / SingleNameBindingYield 324 BindingElement < (BindingPattern InitializerIn?) / SingleNameBinding 325 BindingElementYield < (BindingPatternYield InitializerInYield?) / SingleNameBindingYield 326 SingleNameBinding < BindingIdentifier InitializerIn? 327 SingleNameBindingYield < BindingIdentifierYield InitializerInYield? 328 BindingRestElement < :"..." BindingIdentifier 329 BindingRestElementYield < :"..." BindingIdentifierYield 330 331 EmptyStatement < ";" 332 333 ExpressionStatement < !("{" / (("function" / "class" / ("let" "[")) !(IdentifierStart / IdentifierPart))) ExpressionIn 334 ExpressionStatementYield < !("{" / (("function" / "class" / ("let" "[")) !(IdentifierStart / IdentifierPart))) ExpressionInYield 335 ElseKeyword < "else" 336 IfStatement < :"if" Parentheses(ExpressionIn) Statement (ElseKeyword Statement)? 337 IfStatementYield < :"if" Parentheses(ExpressionInYield) StatementYield (ElseKeyword StatementYield)? 338 IfStatementReturn < :"if" Parentheses(ExpressionIn) StatementReturn (ElseKeyword StatementReturn)? 339 IfStatementYieldReturn < :"if" Parentheses(ExpressionInYield) StatementYieldReturn (ElseKeyword StatementYieldReturn)? 340 341 DoKeyword <- "do" !(IdentifierStart / IdentifierPart) 342 WhileKeyword < "while" 343 ForKeyword < "for" 344 VarKeyword < "var" 345 InKeyword < "in" 346 OfKeyword < "of" 347 Semicolon < ";" 348 IterationStatement < 349 / (DoKeyword Statement WhileKeyword Parentheses(ExpressionIn) Semicolon) 350 / (WhileKeyword Parentheses(ExpressionIn) Statement) 351 / (ForKeyword Parentheses(VarKeyword VariableDeclarationList Semicolon ExpressionIn? Semicolon ExpressionIn?) Statement) 352 / (ForKeyword Parentheses(VarKeyword ForBinding ((InKeyword ExpressionIn) / (OfKeyword AssignmentExpressionIn))) Statement) 353 / (ForKeyword Parentheses(ForDeclaration InKeyword ExpressionIn) Statement) 354 / (ForKeyword Parentheses(ForDeclaration OfKeyword AssignmentExpressionIn) Statement) 355 / (ForKeyword Parentheses(LexicalDeclaration ExpressionIn? Semicolon ExpressionIn?) Statement) 356 / (ForKeyword Parentheses(!("let" "[") Expression? Semicolon ExpressionIn? Semicolon ExpressionIn?) Statement) 357 / (ForKeyword Parentheses(!("let" "[") LeftHandSideExpression InKeyword ExpressionIn) Statement) 358 / (ForKeyword Parentheses(!("let") LeftHandSideExpression OfKeyword AssignmentExpressionIn) Statement) 359 IterationStatementYield < 360 / (DoKeyword StatementYield WhileKeyword Parentheses(ExpressionInYield) Semicolon) 361 / (WhileKeyword Parentheses(ExpressionInYield) StatementYield) 362 / (ForKeyword Parentheses(VarKeyword VariableDeclarationListYield Semicolon ExpressionInYield? Semicolon ExpressionInYield?) StatementYield) 363 / (ForKeyword Parentheses(VarKeyword ForBindingYield ((InKeyword ExpressionInYield) / (OfKeyword AssignmentExpressionInYield))) StatementYield) 364 / (ForKeyword Parentheses(ForDeclarationYield InKeyword ExpressionInYield) StatementYield) 365 / (ForKeyword Parentheses(ForDeclarationYield OfKeyword AssignmentExpressionInYield) StatementYield) 366 / (ForKeyword Parentheses(LexicalDeclarationYield ExpressionInYield? Semicolon ExpressionInYield?) StatementYield) 367 / (ForKeyword Parentheses(!("let" "[") ExpressionYield? Semicolon ExpressionInYield? Semicolon ExpressionInYield?) StatementYield) 368 / (ForKeyword Parentheses(!("let" "[") LeftHandSideExpressionYield InKeyword ExpressionInYield) StatementYield) 369 / (ForKeyword Parentheses(!("let") LeftHandSideExpressionYield OfKeyword AssignmentExpressionInYield) StatementYield) 370 IterationStatementReturn < 371 / (DoKeyword StatementReturn WhileKeyword Parentheses(ExpressionIn) Semicolon) 372 / (WhileKeyword Parentheses(ExpressionIn) StatementReturn) 373 / (ForKeyword Parentheses(VarKeyword VariableDeclarationList Semicolon ExpressionIn? Semicolon ExpressionIn?) StatementReturn) 374 / (ForKeyword Parentheses(VarKeyword ForBinding ((InKeyword ExpressionIn) / (OfKeyword AssignmentExpressionIn))) StatementReturn) 375 / (ForKeyword Parentheses(ForDeclaration InKeyword ExpressionIn) StatementReturn) 376 / (ForKeyword Parentheses(ForDeclaration OfKeyword AssignmentExpressionIn) StatementReturn) 377 / (ForKeyword Parentheses(LexicalDeclaration ExpressionIn? Semicolon ExpressionIn?) StatementReturn) 378 / (ForKeyword Parentheses(!("let" "[") Expression? Semicolon ExpressionIn? Semicolon ExpressionIn?) StatementReturn) 379 / (ForKeyword Parentheses(!("let" "[") LeftHandSideExpression InKeyword ExpressionIn) StatementReturn) 380 / (ForKeyword Parentheses(!("let") LeftHandSideExpression OfKeyword AssignmentExpressionIn) StatementReturn) 381 IterationStatementYieldReturn < 382 / (DoKeyword StatementYieldReturn WhileKeyword Parentheses(ExpressionInYield) Semicolon) 383 / (WhileKeyword Parentheses(ExpressionInYield) StatementYieldReturn) 384 / (ForKeyword Parentheses(VarKeyword VariableDeclarationListYield Semicolon ExpressionInYield? Semicolon ExpressionInYield?) StatementYieldReturn) 385 / (ForKeyword Parentheses(VarKeyword ForBindingYield ((InKeyword ExpressionInYield) / (OfKeyword AssignmentExpressionInYield))) StatementYieldReturn) 386 / (ForKeyword Parentheses(ForDeclarationYield InKeyword ExpressionInYield) StatementYieldReturn) 387 / (ForKeyword Parentheses(ForDeclarationYield OfKeyword AssignmentExpressionInYield) StatementYieldReturn) 388 / (ForKeyword Parentheses(LexicalDeclarationYield ExpressionInYield? Semicolon ExpressionInYield?) StatementYieldReturn) 389 / (ForKeyword Parentheses(!("let" "[") ExpressionYield? Semicolon ExpressionInYield? Semicolon ExpressionInYield?) StatementYieldReturn) 390 / (ForKeyword Parentheses(!("let" "[") LeftHandSideExpressionYield InKeyword ExpressionInYield) StatementYieldReturn) 391 / (ForKeyword Parentheses(!("let") LeftHandSideExpressionYield OfKeyword AssignmentExpressionInYield) StatementYieldReturn) 392 393 ForDeclaration < LetOrConst ForBinding 394 ForDeclarationYield < LetOrConst ForBindingYield 395 ForBinding < BindingPattern / BindingIdentifier 396 ForBindingYield < BindingPatternYield / BindingIdentifierYield 397 ContinueStatement <- (("continue" !(IdentifierStart) Spaces LabelIdentifier) / ("continue" !(IdentifierStart / IdentifierPart))) Spaces :";"? 398 ContinueStatementYield <- (("continue" !(IdentifierStart) Spaces LabelIdentifierYield) / ("continue" !(IdentifierStart / IdentifierPart))) Spaces :";"? 399 BreakStatement <- (("break" !(IdentifierStart) Spaces LabelIdentifier) / ("break" !(IdentifierStart / IdentifierPart))) Spaces :";"? 400 BreakStatementYield <- (("break" !(IdentifierStart) Spaces LabelIdentifierYield) / ("break" !(IdentifierStart / IdentifierPart))) Spaces :";"? 401 ReturnStatement <- (("return" !(IdentifierStart) Spaces ExpressionIn) / ("return" !(IdentifierStart / IdentifierPart))) Spaces :";"? 402 ReturnStatementYield <- (("return" !(IdentifierStart) Spaces ExpressionInYield) / ("return" !(IdentifierStart / IdentifierPart))) Spaces :";"? 403 404 WithStatement < :"with" Parentheses(ExpressionIn) Statement 405 WithStatementYield < :"with" Parentheses(ExpressionInYield) StatementYield 406 WithStatementReturn < :"with" Parentheses(ExpressionIn) StatementReturn 407 WithStatementYieldReturn < :"with" Parentheses(ExpressionInYield) StatementYieldReturn 408 409 SwitchStatement < :"switch" Parentheses(ExpressionIn) CaseBlock 410 SwitchStatementYield < :"switch" Parentheses(ExpressionInYield) CaseBlockYield 411 SwitchStatementReturn < :"switch" Parentheses(ExpressionIn) CaseBlockReturn 412 SwitchStatementYieldReturn < :"switch" Parentheses(ExpressionInYield) CaseBlockYieldReturn 413 414 CaseBlock < CurlyBrackets(CaseClauses? DefaultClause? CaseClauses?) 415 CaseBlockYield < CurlyBrackets(CaseClausesYield? DefaultClauseYield? CaseClausesYield?) 416 CaseBlockReturn < CurlyBrackets(CaseClausesReturn? DefaultClauseReturn? CaseClausesReturn?) 417 CaseBlockYieldReturn < CurlyBrackets(CaseClausesYieldReturn? DefaultClauseYieldReturn? CaseClausesYieldReturn?) 418 419 CaseClauses < CaseClause+ 420 CaseClausesYield < CaseClauseYield+ 421 CaseClausesReturn < CaseClauseReturn+ 422 CaseClausesYieldReturn < CaseClauseYieldReturn+ 423 424 CaseClause < :"case" ExpressionIn :":" StatementList? 425 CaseClauseYield < :"case" ExpressionInYield :":" StatementListYield? 426 CaseClauseReturn < :"case" ExpressionIn :":" StatementListReturn? 427 CaseClauseYieldReturn < :"case" ExpressionInYield :":" StatementListYieldReturn? 428 429 DefaultClause < :"default" :":" StatementList? 430 DefaultClauseYield < :"default" :":" StatementListYield? 431 DefaultClauseReturn < :"default" :":" StatementListReturn? 432 DefaultClauseYieldReturn < :"default" :":" StatementListYieldReturn? 433 434 LabelledStatement < LabelIdentifier :":" LabelledItem 435 LabelledStatementYield < LabelIdentifierYield :":" LabelledItemYield 436 LabelledStatementReturn < LabelIdentifier :":" LabelledItemReturn 437 LabelledStatementYieldReturn < LabelIdentifierYield :":" LabelledItemYieldReturn 438 439 LabelledItem < FunctionDeclaration / Statement 440 LabelledItemYield < FunctionDeclarationYield / StatementYield 441 LabelledItemReturn < FunctionDeclaration / StatementReturn 442 LabelledItemYieldReturn < FunctionDeclarationYield / StatementYieldReturn 443 444 ThrowStatement <- "throw" !(IdentifierStart) Spaces ExpressionIn Spaces :";"? 445 ThrowStatementYield <- "throw" !(IdentifierStart) Spaces ExpressionInYield Spaces :";"? 446 447 TryStatement < :"try" %Block Catch? Finally? 448 TryStatementYield < :"try" %BlockYield CatchYield? FinallyYield? 449 TryStatementReturn < :"try" %BlockReturn CatchReturn? FinallyReturn? 450 TryStatementYieldReturn < :"try" %BlockYieldReturn CatchYieldReturn? FinallyYieldReturn? 451 452 Catch < :"catch" Parentheses(CatchParameter) %Block 453 CatchYield < :"catch" Parentheses(CatchParameterYield) %BlockYield 454 CatchReturn < :"catch" Parentheses(CatchParameter) %BlockReturn 455 CatchYieldReturn < :"catch" Parentheses(CatchParameterYield) %BlockYieldReturn 456 457 Finally < :"finally" %Block 458 FinallyYield < :"finally" %BlockYield 459 FinallyReturn < :"finally" %BlockReturn 460 FinallyYieldReturn < :"finally" %BlockYieldReturn 461 462 CatchParameter < BindingPattern / BindingIdentifier 463 CatchParameterYield < BindingPatternYield / BindingIdentifierYield 464 465 DebuggerStatement < :"debugger" :";" 466 CurlyBrackets(Content) < "{" Content "}" 467 Parentheses(Content) < "(" Content ")" 468 SquareBrackets(Content) < "[" Content "]" 469 470 FunctionDeclaration < (:"function" BindingIdentifier Parentheses(FormalParameters) CurlyBrackets(FunctionBody)) 471 FunctionDeclarationYield < (:"function" BindingIdentifierYield Parentheses(FormalParameters) CurlyBrackets(FunctionBody)) 472 FunctionDeclarationDefault < (:"function" BindingIdentifier Parentheses(FormalParameters) CurlyBrackets(FunctionBody)) / (:"function" Parentheses(FormalParameters) CurlyBrackets(FunctionBody)) 473 FunctionDeclarationYieldDefault < (:"function" BindingIdentifierYield Parentheses(FormalParameters) CurlyBrackets(FunctionBody)) / (:"function" Parentheses(FormalParameters) CurlyBrackets(FunctionBody)) 474 475 FunctionExpression < "function" BindingIdentifier? Parentheses(FormalParameters) CurlyBrackets(FunctionBody) 476 477 StrictFormalParameters < FormalParameters 478 StrictFormalParametersYield < FormalParametersYield 479 FormalParameters < FormalParameterList? 480 FormalParametersYield < FormalParameterListYield? 481 FormalParameterList < FunctionRestParameter / (FormalsList (:"," FunctionRestParameter)?) 482 FormalParameterListYield < FunctionRestParameterYield / (FormalsListYield (:"," FunctionRestParameterYield)?) 483 FormalsList < FormalParameter (:"," FormalParameter)* 484 FormalsListYield < FormalParameterYield (:"," FormalParameterYield)* 485 FunctionRestParameter < BindingRestElement 486 FunctionRestParameterYield < BindingRestElementYield 487 FormalParameter < BindingElement 488 FormalParameterYield < BindingElementYield 489 FunctionBody < FunctionStatementList 490 FunctionBodyYield < FunctionStatementListYield 491 FunctionStatementList < StatementListReturn? 492 FunctionStatementListYield < StatementListYieldReturn? 493 ArrowFunction <- ArrowParameters Spaces "=>" Spacing ConciseBody 494 ArrowFunctionIn <- ArrowParameters Spaces "=>" Spacing ConciseBodyIn 495 ArrowFunctionYield <- ArrowParametersYield Spaces "=>" Spacing ConciseBody 496 ArrowFunctionInYield <- ArrowParametersYield Spaces "=>" Spacing ConciseBodyIn 497 ArrowParameters < BindingIdentifier / CoverParenthesizedExpressionAndArrowParameterList 498 ArrowParametersYield < BindingIdentifierYield / CoverParenthesizedExpressionAndArrowParameterListYield 499 ConciseBody < (!("{") AssignmentExpression) / CurlyBrackets(FunctionBody) 500 ConciseBodyIn < (!("{") AssignmentExpressionIn) / CurlyBrackets(FunctionBody) 501 502 ArrowFormalParameters < Parentheses(StrictFormalParameters) 503 ArrowFormalParametersYield < Parentheses(StrictFormalParametersYield) 504 MethodDefinition < GeneratorMethod / ("get" PropertyName "(" ")" CurlyBrackets(FunctionBody)) / ("set" PropertyName Parentheses(PropertySetParameterList) CurlyBrackets(FunctionBody)) / (PropertyName Parentheses(StrictFormalParameters) CurlyBrackets(FunctionBody)) 505 MethodDefinitionYield < GeneratorMethodYield / ("get" PropertyNameYield "(" ")" CurlyBrackets(FunctionBody)) / ("set" PropertyNameYield Parentheses(PropertySetParameterList) CurlyBrackets(FunctionBody)) / (PropertyNameYield Parentheses(StrictFormalParameters) CurlyBrackets(FunctionBody)) 506 PropertySetParameterList < FormalParameter 507 GeneratorMethod < :"*" PropertyName Parentheses(StrictFormalParameters) CurlyBrackets(GeneratorBody) 508 GeneratorMethodYield < :"*" PropertyNameYield Parentheses(StrictFormalParametersYield) CurlyBrackets(GeneratorBody) 509 GeneratorDeclaration < :"function" :"*" BindingIdentifier Parentheses(FormalParameters) CurlyBrackets(GeneratorBody) 510 GeneratorDeclarationYield < :"function" :"*" BindingIdentifierYield Parentheses(FormalParametersYield) CurlyBrackets(GeneratorBody) 511 GeneratorDeclarationDefault < :"function" :"*" BindingIdentifier? Parentheses(FormalParameters) CurlyBrackets(GeneratorBody) 512 GeneratorDeclarationYieldDefault < :"function" :"*" BindingIdentifierYield? Parentheses(FormalParametersYield) CurlyBrackets(GeneratorBody) 513 GeneratorExpression < :"function" :"*" BindingIdentifierYield? Parentheses(FormalParametersYield) CurlyBrackets(GeneratorBody) 514 GeneratorBody < FunctionBodyYield 515 YieldExpression <- ("yield" Spaces ("*")? AssignmentExpressionYield) / "yield" 516 YieldExpressionIn <- ("yield" Spaces ("*")? AssignmentExpressionInYield) / "yield" 517 ClassDeclaration <- :"class" !(IdentifierStart / IdentifierPart) Spaces BindingIdentifier Spaces ClassTail 518 ClassDeclarationYield <- :"class" !(IdentifierStart / IdentifierPart) Spaces BindingIdentifierYield Spaces ClassTailYield 519 ClassDeclarationDefault <- :"class" !(IdentifierStart / IdentifierPart) Spaces BindingIdentifier? Spaces ClassTail 520 ClassDeclarationYieldDefault <- :"class" !(IdentifierStart / IdentifierPart) Spaces BindingIdentifierYield? Spaces ClassTailYield 521 ClassExpression <- :"class" !(IdentifierStart / IdentifierPart) Spaces BindingIdentifier? Spaces ClassTail 522 ClassExpressionYield <- :"class" !(IdentifierStart / IdentifierPart) Spaces BindingIdentifierYield? Spaces ClassTailYield 523 ClassTail < ClassHeritage? CurlyBrackets(ClassBody?) 524 ClassTailYield < ClassHeritageYield? CurlyBrackets(ClassBodyYield?) 525 ClassHeritage < :"extends" LeftHandSideExpression 526 ClassHeritageYield < :"extends" LeftHandSideExpressionYield 527 ClassBody < ClassElementList 528 ClassBodyYield < ClassElementListYield 529 ClassElementList < ClassElement+ 530 ClassElementListYield < ClassElementYield+ 531 ClassElement < ("static" MethodDefinition) / :";" / MethodDefinition 532 ClassElementYield < ("static" MethodDefinitionYield) / :";" / MethodDefinitionYield 533 534 JSXElement < "<" JSXTag JSXAttributeSet ("/>" / (">" JSXContent "</" JSXTag ">")) 535 JSXAttributeSet < JSXAttribute* 536 JSXAttribute < CurlyBrackets(SpreadElement) / (JSXKey ("=" JSXValue)?) 537 JSXKey <~ (!("=" / "/>" / ">") .)+ 538 JSXInlineJS < ArrowFunction / ConditionalExpression 539 JSXValue < StringLiteral / JSXCodeBlock 540 JSXCodeBlock < CurlyBrackets(JSXInlineJS) 541 JSXJavaScriptValue < CurlyBrackets(!JSXElement JSXInlineJS) 542 JSXTag <~ [a-zA-Z][a-zA-Z0-9]* 543 JSXContent < (JSXElement / JSXCodeBlock / JSXContentText)* 544 JSXContentText <~ (!"</" SourceCharacter)* 545 `); 546 }