xmlui 0.12.19 → 0.12.21
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/lib/{index-WVT6bIgM.js → index-CznbWBUF.js} +3224 -4066
- package/dist/lib/index.css +1 -1
- package/dist/lib/{initMock-r2IRBsLf.js → initMock-Dj__hABf.js} +2 -2
- package/dist/lib/{parser-DpwXEUNb.js → parser-zOoMLvLx.js} +120 -139
- package/dist/lib/testing.d.ts +18 -19
- package/dist/lib/testing.js +2 -2
- package/dist/lib/{xmlui-parser-Cs8kB0VK.js → xmlui-parser-CtU8O3Av.js} +43 -19
- package/dist/lib/xmlui-parser.d.ts +23 -19
- package/dist/lib/xmlui-parser.js +2 -2
- package/dist/lib/{xmlui-serializer-3MPLSsOp.js → xmlui-serializer-C-Iuczzr.js} +9 -8
- package/dist/lib/xmlui.d.ts +130 -125
- package/dist/lib/xmlui.js +38 -36
- package/dist/metadata/TextBox-B-GWiq0J.cjs +1 -0
- package/dist/metadata/{TextBox-CwicjBJI.js → TextBox-DHSTy0g0.js} +3407 -4256
- package/dist/metadata/behaviors.cjs +1 -1
- package/dist/metadata/behaviors.js +1 -1
- package/dist/metadata/{initMock-BMq6JN4I.js → initMock-SQIcDMzP.js} +1 -1
- package/dist/metadata/{initMock-BKBkbEgr.cjs → initMock-wSFvfKcr.cjs} +1 -1
- package/dist/metadata/metadata-utils.cjs +1 -1
- package/dist/metadata/metadata-utils.js +1 -1
- package/dist/metadata/transform-BOf-UbgP.cjs +1 -0
- package/dist/metadata/{transform-D0SWbm8g.js → transform-fGDqiHwH.js} +120 -139
- package/dist/metadata/xmlui-metadata.cjs +1 -1
- package/dist/metadata/xmlui-metadata.js +12 -8
- package/dist/metadata/xmlui.css +2 -2
- package/dist/nodejs/bin/index.mjs +63 -79
- package/dist/nodejs/index.cjs +63 -79
- package/dist/nodejs/index.mjs +63 -79
- package/dist/nodejs/server.cjs +1886 -1053
- package/dist/nodejs/server.mjs +1886 -1053
- package/dist/nodejs/vite-xmlui-plugin.cjs +63 -79
- package/dist/nodejs/vite-xmlui-plugin.mjs +63 -79
- package/dist/standalone/xmlui-standalone.es.d.ts +192 -179
- package/dist/standalone/xmlui-standalone.umd.js +11 -11
- package/package.json +1 -1
- package/dist/metadata/TextBox-C-4gnBpw.cjs +0 -1
- package/dist/metadata/transform-CkTQ-Bfe.cjs +0 -1
|
@@ -603,23 +603,23 @@ var TokenType = /* @__PURE__ */ ((TokenType2) => {
|
|
|
603
603
|
TokenType2[TokenType2["SignedShiftRight"] = 55] = "SignedShiftRight";
|
|
604
604
|
TokenType2[TokenType2["Dot"] = 56] = "Dot";
|
|
605
605
|
TokenType2[TokenType2["Spread"] = 57] = "Spread";
|
|
606
|
-
TokenType2[TokenType2["
|
|
607
|
-
TokenType2[TokenType2["
|
|
608
|
-
TokenType2[TokenType2["
|
|
609
|
-
TokenType2[TokenType2["
|
|
610
|
-
TokenType2[TokenType2["
|
|
611
|
-
TokenType2[TokenType2["
|
|
612
|
-
TokenType2[TokenType2["
|
|
613
|
-
TokenType2[TokenType2["
|
|
614
|
-
TokenType2[TokenType2["
|
|
615
|
-
TokenType2[TokenType2["
|
|
616
|
-
TokenType2[TokenType2["
|
|
617
|
-
TokenType2[TokenType2["
|
|
618
|
-
TokenType2[TokenType2["
|
|
619
|
-
TokenType2[TokenType2["
|
|
620
|
-
TokenType2[TokenType2["
|
|
621
|
-
TokenType2[TokenType2["
|
|
622
|
-
TokenType2[TokenType2["
|
|
606
|
+
TokenType2[TokenType2["Backtick"] = 58] = "Backtick";
|
|
607
|
+
TokenType2[TokenType2["DollarLBrace"] = 59] = "DollarLBrace";
|
|
608
|
+
TokenType2[TokenType2["Arrow"] = 60] = "Arrow";
|
|
609
|
+
TokenType2[TokenType2["DecimalLiteral"] = 61] = "DecimalLiteral";
|
|
610
|
+
TokenType2[TokenType2["HexadecimalLiteral"] = 62] = "HexadecimalLiteral";
|
|
611
|
+
TokenType2[TokenType2["BinaryLiteral"] = 63] = "BinaryLiteral";
|
|
612
|
+
TokenType2[TokenType2["RealLiteral"] = 64] = "RealLiteral";
|
|
613
|
+
TokenType2[TokenType2["StringLiteral"] = 65] = "StringLiteral";
|
|
614
|
+
TokenType2[TokenType2["Infinity"] = 66] = "Infinity";
|
|
615
|
+
TokenType2[TokenType2["NaN"] = 67] = "NaN";
|
|
616
|
+
TokenType2[TokenType2["True"] = 68] = "True";
|
|
617
|
+
TokenType2[TokenType2["False"] = 69] = "False";
|
|
618
|
+
TokenType2[TokenType2["Typeof"] = 70] = "Typeof";
|
|
619
|
+
TokenType2[TokenType2["Null"] = 71] = "Null";
|
|
620
|
+
TokenType2[TokenType2["Undefined"] = 72] = "Undefined";
|
|
621
|
+
TokenType2[TokenType2["In"] = 73] = "In";
|
|
622
|
+
TokenType2[TokenType2["Instanceof"] = 74] = "Instanceof";
|
|
623
623
|
TokenType2[TokenType2["Let"] = 75] = "Let";
|
|
624
624
|
TokenType2[TokenType2["Const"] = 76] = "Const";
|
|
625
625
|
TokenType2[TokenType2["Var"] = 77] = "Var";
|
|
@@ -724,7 +724,7 @@ class Lexer {
|
|
|
724
724
|
* Call this after the first opening backing and after the parser is done with parsing a placeholder, after the right brace.
|
|
725
725
|
*/
|
|
726
726
|
setStartingPhaseToTemplateLiteral() {
|
|
727
|
-
this._phaseExternallySet =
|
|
727
|
+
this._phaseExternallySet = 33;
|
|
728
728
|
}
|
|
729
729
|
/**
|
|
730
730
|
* Fetches the next character from the input stream
|
|
@@ -797,19 +797,19 @@ class Lexer {
|
|
|
797
797
|
tokenType = TokenType.Multiply;
|
|
798
798
|
break;
|
|
799
799
|
case "%":
|
|
800
|
-
phase =
|
|
800
|
+
phase = 53;
|
|
801
801
|
tokenType = TokenType.Remainder;
|
|
802
802
|
break;
|
|
803
803
|
case "+":
|
|
804
|
-
phase =
|
|
804
|
+
phase = 50;
|
|
805
805
|
tokenType = TokenType.Plus;
|
|
806
806
|
break;
|
|
807
807
|
case "-":
|
|
808
|
-
phase =
|
|
808
|
+
phase = 51;
|
|
809
809
|
tokenType = TokenType.Minus;
|
|
810
810
|
break;
|
|
811
811
|
case "^":
|
|
812
|
-
phase =
|
|
812
|
+
phase = 57;
|
|
813
813
|
tokenType = TokenType.BitwiseXor;
|
|
814
814
|
break;
|
|
815
815
|
// --- BitwiseOr, LogicalOr
|
|
@@ -824,7 +824,7 @@ class Lexer {
|
|
|
824
824
|
break;
|
|
825
825
|
// --- "?", "?", or "?."
|
|
826
826
|
case "?":
|
|
827
|
-
phase =
|
|
827
|
+
phase = 21;
|
|
828
828
|
tokenType = TokenType.QuestionMark;
|
|
829
829
|
break;
|
|
830
830
|
case ";":
|
|
@@ -835,11 +835,9 @@ class Lexer {
|
|
|
835
835
|
return completeToken(TokenType.LParent);
|
|
836
836
|
case ")":
|
|
837
837
|
return completeToken(TokenType.RParent);
|
|
838
|
-
// --- ":"
|
|
838
|
+
// --- ":"
|
|
839
839
|
case ":":
|
|
840
|
-
|
|
841
|
-
tokenType = TokenType.Colon;
|
|
842
|
-
break;
|
|
840
|
+
return completeToken(TokenType.Colon);
|
|
843
841
|
case "`":
|
|
844
842
|
return completeToken(TokenType.Backtick);
|
|
845
843
|
case "[":
|
|
@@ -874,7 +872,7 @@ class Lexer {
|
|
|
874
872
|
break;
|
|
875
873
|
// --- Decimal or Real literal
|
|
876
874
|
case "0":
|
|
877
|
-
phase =
|
|
875
|
+
phase = 20;
|
|
878
876
|
tokenType = TokenType.DecimalLiteral;
|
|
879
877
|
break;
|
|
880
878
|
case ".":
|
|
@@ -885,7 +883,7 @@ class Lexer {
|
|
|
885
883
|
case '"':
|
|
886
884
|
case "'":
|
|
887
885
|
stringState = ch;
|
|
888
|
-
phase =
|
|
886
|
+
phase = 34;
|
|
889
887
|
break;
|
|
890
888
|
default:
|
|
891
889
|
if (isIdStart(ch)) {
|
|
@@ -893,7 +891,7 @@ class Lexer {
|
|
|
893
891
|
phase = 17;
|
|
894
892
|
tokenType = TokenType.Identifier;
|
|
895
893
|
} else if (isDecimalDigit(ch)) {
|
|
896
|
-
phase =
|
|
894
|
+
phase = 26;
|
|
897
895
|
tokenType = TokenType.DecimalLiteral;
|
|
898
896
|
} else {
|
|
899
897
|
completeToken(TokenType.Unknown);
|
|
@@ -935,8 +933,6 @@ class Lexer {
|
|
|
935
933
|
break;
|
|
936
934
|
// ====================================================================
|
|
937
935
|
// Process miscellaneous tokens
|
|
938
|
-
case 20:
|
|
939
|
-
return ch === ":" ? completeToken(TokenType.Global) : makeToken();
|
|
940
936
|
case 5:
|
|
941
937
|
if (ch === "*") {
|
|
942
938
|
phase = 3;
|
|
@@ -949,58 +945,58 @@ class Lexer {
|
|
|
949
945
|
return makeToken();
|
|
950
946
|
}
|
|
951
947
|
break;
|
|
952
|
-
case
|
|
948
|
+
case 50:
|
|
953
949
|
if (ch === "+") {
|
|
954
950
|
return completeToken(TokenType.IncOp);
|
|
955
951
|
}
|
|
956
952
|
return ch === "=" ? completeToken(TokenType.AddAssignment) : makeToken();
|
|
957
|
-
case
|
|
953
|
+
case 51:
|
|
958
954
|
if (ch === "-") {
|
|
959
955
|
return completeToken(TokenType.DecOp);
|
|
960
956
|
}
|
|
961
957
|
return ch === "=" ? completeToken(TokenType.SubtractAssignment) : makeToken();
|
|
962
|
-
case
|
|
958
|
+
case 53:
|
|
963
959
|
return ch === "=" ? completeToken(TokenType.RemainderAssignment) : makeToken();
|
|
964
|
-
case
|
|
960
|
+
case 57:
|
|
965
961
|
return ch === "=" ? completeToken(TokenType.BitwiseXorAssignment) : makeToken();
|
|
966
962
|
case 7:
|
|
967
963
|
if (ch === "=") {
|
|
968
964
|
return completeToken(TokenType.BitwiseOrAssignment);
|
|
969
965
|
}
|
|
970
966
|
if (ch === "|") {
|
|
971
|
-
phase =
|
|
967
|
+
phase = 58;
|
|
972
968
|
tokenType = TokenType.LogicalOr;
|
|
973
969
|
break;
|
|
974
970
|
}
|
|
975
971
|
return makeToken();
|
|
976
|
-
case
|
|
972
|
+
case 58:
|
|
977
973
|
return ch === "=" ? completeToken(TokenType.LogicalOrAssignment) : makeToken();
|
|
978
974
|
case 9:
|
|
979
975
|
if (ch === "=") {
|
|
980
976
|
return completeToken(TokenType.BitwiseAndAssignment);
|
|
981
977
|
}
|
|
982
978
|
if (ch === "&") {
|
|
983
|
-
phase =
|
|
979
|
+
phase = 56;
|
|
984
980
|
tokenType = TokenType.LogicalAnd;
|
|
985
981
|
break;
|
|
986
982
|
}
|
|
987
983
|
return makeToken();
|
|
988
|
-
case
|
|
984
|
+
case 56:
|
|
989
985
|
return ch === "=" ? completeToken(TokenType.LogicalAndAssignment) : makeToken();
|
|
990
986
|
case 8:
|
|
991
987
|
if (ch === "*") {
|
|
992
|
-
phase =
|
|
988
|
+
phase = 49;
|
|
993
989
|
tokenType = TokenType.Exponent;
|
|
994
990
|
break;
|
|
995
991
|
} else if (ch === "=") {
|
|
996
992
|
return completeToken(TokenType.MultiplyAssignment);
|
|
997
993
|
}
|
|
998
994
|
return makeToken();
|
|
999
|
-
case
|
|
995
|
+
case 49:
|
|
1000
996
|
return ch === "=" ? completeToken(TokenType.ExponentAssignment) : makeToken();
|
|
1001
|
-
case
|
|
997
|
+
case 21:
|
|
1002
998
|
if (ch === "?") {
|
|
1003
|
-
phase =
|
|
999
|
+
phase = 59;
|
|
1004
1000
|
tokenType = TokenType.NullCoalesce;
|
|
1005
1001
|
break;
|
|
1006
1002
|
}
|
|
@@ -1008,7 +1004,7 @@ class Lexer {
|
|
|
1008
1004
|
return completeToken(TokenType.OptionalChaining);
|
|
1009
1005
|
}
|
|
1010
1006
|
return makeToken();
|
|
1011
|
-
case
|
|
1007
|
+
case 59:
|
|
1012
1008
|
return ch === "=" ? completeToken(TokenType.NullCoalesceAssignment) : makeToken();
|
|
1013
1009
|
case 10:
|
|
1014
1010
|
if (ch === ">") {
|
|
@@ -1036,12 +1032,12 @@ class Lexer {
|
|
|
1036
1032
|
return completeToken(TokenType.LessThanOrEqual);
|
|
1037
1033
|
}
|
|
1038
1034
|
if (ch === "<") {
|
|
1039
|
-
phase =
|
|
1035
|
+
phase = 54;
|
|
1040
1036
|
tokenType = TokenType.ShiftLeft;
|
|
1041
1037
|
break;
|
|
1042
1038
|
}
|
|
1043
1039
|
return makeToken();
|
|
1044
|
-
case
|
|
1040
|
+
case 54:
|
|
1045
1041
|
return ch === "=" ? completeToken(TokenType.ShiftLeftAssignment) : makeToken();
|
|
1046
1042
|
case 15:
|
|
1047
1043
|
if (ch === "=") {
|
|
@@ -1055,7 +1051,7 @@ class Lexer {
|
|
|
1055
1051
|
return makeToken();
|
|
1056
1052
|
case 16:
|
|
1057
1053
|
if (ch === ">") {
|
|
1058
|
-
phase =
|
|
1054
|
+
phase = 55;
|
|
1059
1055
|
tokenType = TokenType.ShiftRight;
|
|
1060
1056
|
break;
|
|
1061
1057
|
}
|
|
@@ -1063,24 +1059,24 @@ class Lexer {
|
|
|
1063
1059
|
return completeToken(TokenType.SignedShiftRightAssignment);
|
|
1064
1060
|
}
|
|
1065
1061
|
return makeToken();
|
|
1066
|
-
case
|
|
1062
|
+
case 55:
|
|
1067
1063
|
return ch === "=" ? completeToken(TokenType.ShiftRightAssignment) : makeToken();
|
|
1068
1064
|
// ====================================================================
|
|
1069
1065
|
// --- Literals
|
|
1070
|
-
case
|
|
1066
|
+
case 20:
|
|
1071
1067
|
if (ch === "x") {
|
|
1072
|
-
phase =
|
|
1068
|
+
phase = 22;
|
|
1073
1069
|
tokenType = TokenType.Unknown;
|
|
1074
1070
|
} else if (ch === "b") {
|
|
1075
|
-
phase =
|
|
1071
|
+
phase = 24;
|
|
1076
1072
|
tokenType = TokenType.Unknown;
|
|
1077
1073
|
} else if (isDecimalDigit(ch) || ch === "_") {
|
|
1078
|
-
phase =
|
|
1074
|
+
phase = 26;
|
|
1079
1075
|
} else if (ch === ".") {
|
|
1080
|
-
phase =
|
|
1076
|
+
phase = 27;
|
|
1081
1077
|
tokenType = TokenType.Unknown;
|
|
1082
1078
|
} else if (ch === "e" || ch === "E") {
|
|
1083
|
-
phase =
|
|
1079
|
+
phase = 29;
|
|
1084
1080
|
tokenType = TokenType.Unknown;
|
|
1085
1081
|
} else {
|
|
1086
1082
|
return makeToken();
|
|
@@ -1095,92 +1091,92 @@ class Lexer {
|
|
|
1095
1091
|
if (!isDecimalDigit(ch)) {
|
|
1096
1092
|
return makeToken();
|
|
1097
1093
|
}
|
|
1098
|
-
phase =
|
|
1094
|
+
phase = 28;
|
|
1099
1095
|
tokenType = TokenType.RealLiteral;
|
|
1100
1096
|
break;
|
|
1101
1097
|
case 19:
|
|
1102
1098
|
return ch === "." ? completeToken(TokenType.Spread) : makeToken();
|
|
1103
|
-
case
|
|
1099
|
+
case 22:
|
|
1104
1100
|
if (ch === "_") {
|
|
1105
1101
|
break;
|
|
1106
1102
|
}
|
|
1107
1103
|
if (!isHexadecimalDigit(ch)) {
|
|
1108
1104
|
return makeToken();
|
|
1109
1105
|
}
|
|
1110
|
-
phase =
|
|
1106
|
+
phase = 23;
|
|
1111
1107
|
tokenType = TokenType.HexadecimalLiteral;
|
|
1112
1108
|
break;
|
|
1113
|
-
case
|
|
1109
|
+
case 23:
|
|
1114
1110
|
if (!isHexadecimalDigit(ch) && ch !== "_") {
|
|
1115
1111
|
return makeToken();
|
|
1116
1112
|
}
|
|
1117
1113
|
break;
|
|
1118
|
-
case
|
|
1114
|
+
case 24:
|
|
1119
1115
|
if (ch === "_") {
|
|
1120
1116
|
break;
|
|
1121
1117
|
}
|
|
1122
1118
|
if (!isBinaryDigit(ch)) {
|
|
1123
1119
|
return makeToken();
|
|
1124
1120
|
}
|
|
1125
|
-
phase =
|
|
1121
|
+
phase = 25;
|
|
1126
1122
|
tokenType = TokenType.BinaryLiteral;
|
|
1127
1123
|
break;
|
|
1128
|
-
case
|
|
1124
|
+
case 25:
|
|
1129
1125
|
if (!isBinaryDigit(ch) && ch !== "_") {
|
|
1130
1126
|
return makeToken();
|
|
1131
1127
|
}
|
|
1132
1128
|
tokenType = TokenType.BinaryLiteral;
|
|
1133
1129
|
break;
|
|
1134
|
-
case
|
|
1130
|
+
case 26:
|
|
1135
1131
|
if (isDecimalDigit(ch) || ch === "_") {
|
|
1136
1132
|
break;
|
|
1137
1133
|
} else if (ch === "." && (this.input.peek() === null || isDecimalDigit(this.input.peek()))) {
|
|
1138
|
-
phase =
|
|
1134
|
+
phase = 27;
|
|
1139
1135
|
tokenType = TokenType.Unknown;
|
|
1140
1136
|
} else if (ch === "e" || ch === "E") {
|
|
1141
|
-
phase =
|
|
1137
|
+
phase = 29;
|
|
1142
1138
|
tokenType = TokenType.Unknown;
|
|
1143
1139
|
} else {
|
|
1144
1140
|
return makeToken();
|
|
1145
1141
|
}
|
|
1146
1142
|
break;
|
|
1147
|
-
case
|
|
1143
|
+
case 27:
|
|
1148
1144
|
if (isDecimalDigit(ch)) {
|
|
1149
|
-
phase =
|
|
1145
|
+
phase = 28;
|
|
1150
1146
|
tokenType = TokenType.RealLiteral;
|
|
1151
1147
|
} else if (ch === "e" || ch === "E") {
|
|
1152
|
-
phase =
|
|
1148
|
+
phase = 29;
|
|
1153
1149
|
} else {
|
|
1154
1150
|
return makeToken();
|
|
1155
1151
|
}
|
|
1156
1152
|
break;
|
|
1157
|
-
case
|
|
1153
|
+
case 28:
|
|
1158
1154
|
if (ch === "e" || ch === "E") {
|
|
1159
|
-
phase =
|
|
1155
|
+
phase = 29;
|
|
1160
1156
|
tokenType = TokenType.Unknown;
|
|
1161
1157
|
} else if (!isDecimalDigit(ch) && ch !== "_") {
|
|
1162
1158
|
return makeToken();
|
|
1163
1159
|
}
|
|
1164
1160
|
break;
|
|
1165
|
-
case
|
|
1161
|
+
case 29:
|
|
1166
1162
|
if (ch === "+" || ch === "-") {
|
|
1167
|
-
phase =
|
|
1163
|
+
phase = 30;
|
|
1168
1164
|
} else if (isDecimalDigit(ch)) {
|
|
1169
|
-
phase =
|
|
1165
|
+
phase = 31;
|
|
1170
1166
|
tokenType = TokenType.RealLiteral;
|
|
1171
1167
|
} else {
|
|
1172
1168
|
return makeToken();
|
|
1173
1169
|
}
|
|
1174
1170
|
break;
|
|
1175
|
-
case
|
|
1171
|
+
case 30:
|
|
1176
1172
|
if (isDecimalDigit(ch)) {
|
|
1177
|
-
phase =
|
|
1173
|
+
phase = 31;
|
|
1178
1174
|
tokenType = TokenType.RealLiteral;
|
|
1179
1175
|
} else {
|
|
1180
1176
|
return makeToken();
|
|
1181
1177
|
}
|
|
1182
1178
|
break;
|
|
1183
|
-
case
|
|
1179
|
+
case 31:
|
|
1184
1180
|
if (!isDecimalDigit(ch)) {
|
|
1185
1181
|
return makeToken();
|
|
1186
1182
|
}
|
|
@@ -1197,8 +1193,8 @@ class Lexer {
|
|
|
1197
1193
|
makeToken();
|
|
1198
1194
|
}
|
|
1199
1195
|
break;
|
|
1200
|
-
case
|
|
1201
|
-
phase =
|
|
1196
|
+
case 32: {
|
|
1197
|
+
phase = 33;
|
|
1202
1198
|
const charAhead12 = this.input.ahead(0);
|
|
1203
1199
|
const charAhead22 = this.input.ahead(1);
|
|
1204
1200
|
if (charAhead12 === "`" || charAhead12 === "$" && charAhead22 === "{") {
|
|
@@ -1206,10 +1202,10 @@ class Lexer {
|
|
|
1206
1202
|
}
|
|
1207
1203
|
break;
|
|
1208
1204
|
}
|
|
1209
|
-
case
|
|
1205
|
+
case 33:
|
|
1210
1206
|
switch (ch) {
|
|
1211
1207
|
case "\\":
|
|
1212
|
-
phase =
|
|
1208
|
+
phase = 32;
|
|
1213
1209
|
tokenType = TokenType.Unknown;
|
|
1214
1210
|
break phaseSwitch;
|
|
1215
1211
|
case "`":
|
|
@@ -1228,18 +1224,18 @@ class Lexer {
|
|
|
1228
1224
|
return completeToken(TokenType.StringLiteral);
|
|
1229
1225
|
}
|
|
1230
1226
|
break;
|
|
1231
|
-
case
|
|
1227
|
+
case 34:
|
|
1232
1228
|
if (ch === stringState) {
|
|
1233
1229
|
return completeToken(TokenType.StringLiteral);
|
|
1234
1230
|
} else if (isRestrictedInString(ch)) {
|
|
1235
1231
|
return completeToken(TokenType.Unknown);
|
|
1236
1232
|
} else if (ch === "\\") {
|
|
1237
|
-
phase =
|
|
1233
|
+
phase = 35;
|
|
1238
1234
|
tokenType = TokenType.Unknown;
|
|
1239
1235
|
}
|
|
1240
1236
|
break;
|
|
1241
1237
|
// Start of string character escape
|
|
1242
|
-
case
|
|
1238
|
+
case 35:
|
|
1243
1239
|
switch (ch) {
|
|
1244
1240
|
case "b":
|
|
1245
1241
|
case "f":
|
|
@@ -1253,133 +1249,133 @@ class Lexer {
|
|
|
1253
1249
|
case '"':
|
|
1254
1250
|
case "`":
|
|
1255
1251
|
case "\\":
|
|
1256
|
-
phase =
|
|
1252
|
+
phase = 34;
|
|
1257
1253
|
break;
|
|
1258
1254
|
case "x":
|
|
1259
|
-
phase =
|
|
1255
|
+
phase = 36;
|
|
1260
1256
|
break;
|
|
1261
1257
|
case "u":
|
|
1262
|
-
phase =
|
|
1258
|
+
phase = 38;
|
|
1263
1259
|
break;
|
|
1264
1260
|
default:
|
|
1265
|
-
phase =
|
|
1261
|
+
phase = 34;
|
|
1266
1262
|
break;
|
|
1267
1263
|
}
|
|
1268
1264
|
break;
|
|
1269
1265
|
// --- First hexadecimal digit of string character escape
|
|
1270
|
-
case
|
|
1266
|
+
case 36:
|
|
1271
1267
|
if (isHexadecimalDigit(ch)) {
|
|
1272
|
-
phase =
|
|
1268
|
+
phase = 37;
|
|
1273
1269
|
} else {
|
|
1274
1270
|
return completeToken(TokenType.Unknown);
|
|
1275
1271
|
}
|
|
1276
1272
|
break;
|
|
1277
1273
|
// --- Second hexadecimal digit of character escape
|
|
1278
|
-
case
|
|
1274
|
+
case 37:
|
|
1279
1275
|
if (isHexadecimalDigit(ch)) {
|
|
1280
|
-
phase =
|
|
1276
|
+
phase = 34;
|
|
1281
1277
|
} else {
|
|
1282
1278
|
return completeToken(TokenType.Unknown);
|
|
1283
1279
|
}
|
|
1284
1280
|
break;
|
|
1285
1281
|
// --- First hexadecimal digit of Unicode string character escape
|
|
1286
|
-
case
|
|
1282
|
+
case 38:
|
|
1287
1283
|
if (ch === "{") {
|
|
1288
|
-
phase =
|
|
1284
|
+
phase = 42;
|
|
1289
1285
|
break;
|
|
1290
1286
|
}
|
|
1291
1287
|
if (isHexadecimalDigit(ch)) {
|
|
1292
|
-
phase =
|
|
1288
|
+
phase = 39;
|
|
1293
1289
|
} else {
|
|
1294
1290
|
return completeToken(TokenType.Unknown);
|
|
1295
1291
|
}
|
|
1296
1292
|
break;
|
|
1297
1293
|
// --- Second hexadecimal digit of Unicode string character escape
|
|
1298
|
-
case
|
|
1294
|
+
case 39:
|
|
1299
1295
|
if (isHexadecimalDigit(ch)) {
|
|
1300
|
-
phase =
|
|
1296
|
+
phase = 40;
|
|
1301
1297
|
} else {
|
|
1302
1298
|
return completeToken(TokenType.Unknown);
|
|
1303
1299
|
}
|
|
1304
1300
|
break;
|
|
1305
1301
|
// --- Third hexadecimal digit of Unicode string character escape
|
|
1306
|
-
case
|
|
1302
|
+
case 40:
|
|
1307
1303
|
if (isHexadecimalDigit(ch)) {
|
|
1308
|
-
phase =
|
|
1304
|
+
phase = 41;
|
|
1309
1305
|
} else {
|
|
1310
1306
|
return completeToken(TokenType.Unknown);
|
|
1311
1307
|
}
|
|
1312
1308
|
break;
|
|
1313
1309
|
// --- Fourth hexadecimal digit of Unicode string character escape
|
|
1314
|
-
case
|
|
1310
|
+
case 41:
|
|
1315
1311
|
if (isHexadecimalDigit(ch)) {
|
|
1316
|
-
phase =
|
|
1312
|
+
phase = 34;
|
|
1317
1313
|
} else {
|
|
1318
1314
|
return completeToken(TokenType.Unknown);
|
|
1319
1315
|
}
|
|
1320
1316
|
break;
|
|
1321
1317
|
// --- First hexadecimal digit of Unicode codepoint string character escape
|
|
1322
|
-
case
|
|
1318
|
+
case 42:
|
|
1323
1319
|
if (isHexadecimalDigit(ch)) {
|
|
1324
|
-
phase =
|
|
1320
|
+
phase = 43;
|
|
1325
1321
|
} else {
|
|
1326
1322
|
return completeToken(TokenType.Unknown);
|
|
1327
1323
|
}
|
|
1328
1324
|
break;
|
|
1329
1325
|
// --- Second hexadecimal digit of Unicode codepoint string character escape
|
|
1330
|
-
case
|
|
1326
|
+
case 43:
|
|
1331
1327
|
if (ch === "}") {
|
|
1332
|
-
phase =
|
|
1328
|
+
phase = 34;
|
|
1333
1329
|
} else if (isHexadecimalDigit(ch)) {
|
|
1334
|
-
phase =
|
|
1330
|
+
phase = 44;
|
|
1335
1331
|
} else {
|
|
1336
1332
|
return completeToken(TokenType.Unknown);
|
|
1337
1333
|
}
|
|
1338
1334
|
break;
|
|
1339
1335
|
// --- Third hexadecimal digit of Unicode codepoint string character escape
|
|
1340
|
-
case
|
|
1336
|
+
case 44:
|
|
1341
1337
|
if (ch === "}") {
|
|
1342
|
-
phase =
|
|
1338
|
+
phase = 34;
|
|
1343
1339
|
} else if (isHexadecimalDigit(ch)) {
|
|
1344
|
-
phase =
|
|
1340
|
+
phase = 45;
|
|
1345
1341
|
} else {
|
|
1346
1342
|
return completeToken(TokenType.Unknown);
|
|
1347
1343
|
}
|
|
1348
1344
|
break;
|
|
1349
1345
|
// --- Fourth hexadecimal digit of Unicode codepoint string character escape
|
|
1350
|
-
case
|
|
1346
|
+
case 45:
|
|
1351
1347
|
if (ch === "}") {
|
|
1352
|
-
phase =
|
|
1348
|
+
phase = 34;
|
|
1353
1349
|
} else if (isHexadecimalDigit(ch)) {
|
|
1354
|
-
phase =
|
|
1350
|
+
phase = 46;
|
|
1355
1351
|
} else {
|
|
1356
1352
|
return completeToken(TokenType.Unknown);
|
|
1357
1353
|
}
|
|
1358
1354
|
break;
|
|
1359
1355
|
// --- Fifth hexadecimal digit of Unicode codepoint string character escape
|
|
1360
|
-
case
|
|
1356
|
+
case 46:
|
|
1361
1357
|
if (ch === "}") {
|
|
1362
|
-
phase =
|
|
1358
|
+
phase = 34;
|
|
1363
1359
|
} else if (isHexadecimalDigit(ch)) {
|
|
1364
|
-
phase =
|
|
1360
|
+
phase = 47;
|
|
1365
1361
|
} else {
|
|
1366
1362
|
return completeToken(TokenType.Unknown);
|
|
1367
1363
|
}
|
|
1368
1364
|
break;
|
|
1369
1365
|
// --- Sixth hexadecimal digit of Unicode codepoint string character escape
|
|
1370
|
-
case
|
|
1366
|
+
case 47:
|
|
1371
1367
|
if (ch === "}") {
|
|
1372
|
-
phase =
|
|
1368
|
+
phase = 34;
|
|
1373
1369
|
} else if (isHexadecimalDigit(ch)) {
|
|
1374
|
-
phase =
|
|
1370
|
+
phase = 48;
|
|
1375
1371
|
} else {
|
|
1376
1372
|
return completeToken(TokenType.Unknown);
|
|
1377
1373
|
}
|
|
1378
1374
|
break;
|
|
1379
1375
|
// --- Closing bracket of Unicode codepoint string character escape
|
|
1380
|
-
case
|
|
1376
|
+
case 48:
|
|
1381
1377
|
if (ch === "}") {
|
|
1382
|
-
phase =
|
|
1378
|
+
phase = 34;
|
|
1383
1379
|
} else {
|
|
1384
1380
|
return completeToken(TokenType.Unknown);
|
|
1385
1381
|
}
|
|
@@ -1492,6 +1488,7 @@ resolverHash.set("false", TokenType.False);
|
|
|
1492
1488
|
resolverHash.set("undefined", TokenType.Undefined);
|
|
1493
1489
|
resolverHash.set("null", TokenType.Null);
|
|
1494
1490
|
resolverHash.set("in", TokenType.In);
|
|
1491
|
+
resolverHash.set("instanceof", TokenType.Instanceof);
|
|
1495
1492
|
resolverHash.set("let", TokenType.Let);
|
|
1496
1493
|
resolverHash.set("const", TokenType.Const);
|
|
1497
1494
|
resolverHash.set("var", TokenType.Var);
|
|
@@ -1703,7 +1700,6 @@ const tokenTraits = {
|
|
|
1703
1700
|
[TokenType.SignedShiftRight]: {},
|
|
1704
1701
|
[TokenType.Dot]: {},
|
|
1705
1702
|
[TokenType.Spread]: { expressionStart: true, isPropLiteral: true },
|
|
1706
|
-
[TokenType.Global]: { expressionStart: true },
|
|
1707
1703
|
[TokenType.DecimalLiteral]: { expressionStart: true, isPropLiteral: true },
|
|
1708
1704
|
[TokenType.HexadecimalLiteral]: { expressionStart: true, isPropLiteral: true },
|
|
1709
1705
|
[TokenType.BinaryLiteral]: { expressionStart: true, isPropLiteral: true },
|
|
@@ -1719,6 +1715,7 @@ const tokenTraits = {
|
|
|
1719
1715
|
[TokenType.Null]: { expressionStart: true, keywordLike: true },
|
|
1720
1716
|
[TokenType.Undefined]: { expressionStart: true, keywordLike: true },
|
|
1721
1717
|
[TokenType.In]: { keywordLike: true },
|
|
1718
|
+
[TokenType.Instanceof]: { keywordLike: true },
|
|
1722
1719
|
[TokenType.Let]: { keywordLike: true },
|
|
1723
1720
|
[TokenType.Const]: { keywordLike: true },
|
|
1724
1721
|
[TokenType.Var]: { keywordLike: true },
|
|
@@ -3683,7 +3680,7 @@ class Parser {
|
|
|
3683
3680
|
}
|
|
3684
3681
|
/**
|
|
3685
3682
|
* relOrInExpr
|
|
3686
|
-
* : shiftExpr ( ( "<" | "<=" | ">" | ">=", "in" ) shiftExpr )?
|
|
3683
|
+
* : shiftExpr ( ( "<" | "<=" | ">" | ">=", "in", "instanceof" ) shiftExpr )?
|
|
3687
3684
|
* ;
|
|
3688
3685
|
*/
|
|
3689
3686
|
parseRelOrInExpr() {
|
|
@@ -3698,7 +3695,8 @@ class Parser {
|
|
|
3698
3695
|
TokenType.LessThanOrEqual,
|
|
3699
3696
|
TokenType.GreaterThan,
|
|
3700
3697
|
TokenType.GreaterThanOrEqual,
|
|
3701
|
-
TokenType.In
|
|
3698
|
+
TokenType.In,
|
|
3699
|
+
TokenType.Instanceof
|
|
3702
3700
|
)) {
|
|
3703
3701
|
const rightExpr = this.parseShiftExpr();
|
|
3704
3702
|
if (!rightExpr) {
|
|
@@ -4230,23 +4228,6 @@ class Parser {
|
|
|
4230
4228
|
idToken
|
|
4231
4229
|
);
|
|
4232
4230
|
}
|
|
4233
|
-
case TokenType.Global: {
|
|
4234
|
-
this._lexer.get();
|
|
4235
|
-
const idToken = this._lexer.get();
|
|
4236
|
-
if (idToken.type !== TokenType.Identifier) {
|
|
4237
|
-
this.reportError("W003");
|
|
4238
|
-
return null;
|
|
4239
|
-
}
|
|
4240
|
-
return this.createExpressionNode(
|
|
4241
|
-
T_IDENTIFIER,
|
|
4242
|
-
{
|
|
4243
|
-
name: idToken.text,
|
|
4244
|
-
isGlobal: true
|
|
4245
|
-
},
|
|
4246
|
-
idToken,
|
|
4247
|
-
idToken
|
|
4248
|
-
);
|
|
4249
|
-
}
|
|
4250
4231
|
case TokenType.Backtick:
|
|
4251
4232
|
return this.parseTemplateLiteral();
|
|
4252
4233
|
case TokenType.False:
|