postcss-calc 10.1.0 → 10.1.1

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "postcss-calc",
3
- "version": "10.1.0",
3
+ "version": "10.1.1",
4
4
  "description": "PostCSS plugin to reduce calc()",
5
5
  "keywords": [
6
6
  "css",
@@ -27,13 +27,13 @@
27
27
  "node": "^18.12 || ^20.9 || >=22.0"
28
28
  },
29
29
  "devDependencies": {
30
- "@types/node": "^22.10.2",
31
- "eslint": "^9.17.0",
32
- "eslint-config-prettier": "^9.1.0",
30
+ "@types/node": "^22.10.10",
31
+ "eslint": "^9.19.0",
32
+ "eslint-config-prettier": "^10.0.1",
33
33
  "jison-gho": "0.6.1-216",
34
- "postcss": "^8.4.49",
34
+ "postcss": "^8.5.1",
35
35
  "prettier": "^3.4.2",
36
- "typescript": "~5.7.2"
36
+ "typescript": "~5.7.3"
37
37
  },
38
38
  "dependencies": {
39
39
  "postcss-selector-parser": "^7.0.0",
@@ -361,6 +361,12 @@ function includesNoCssProperties(node) {
361
361
  * @return {import('../parser').CalcNode}
362
362
  */
363
363
  function reduce(node, precision) {
364
+ if (
365
+ node.type === 'MathExpression' &&
366
+ (node.left.type === 'CalcKeyword' || node.right.type === 'CalcKeyword')
367
+ ) {
368
+ return node;
369
+ }
364
370
  if (node.type === 'MathExpression') {
365
371
  if (isAddSubOperator(node.operator)) {
366
372
  // reduceAddSubExpression will call reduce recursively
@@ -31,6 +31,8 @@ function stringify(node, prec) {
31
31
  let str = '';
32
32
  if (left.type === 'MathExpression' && order[op] < order[left.operator]) {
33
33
  str += `(${stringify(left, prec)})`;
34
+ } else if (left.type === 'CalcKeyword') {
35
+ str += left.value;
34
36
  } else {
35
37
  str += stringify(left, prec);
36
38
  }
@@ -42,6 +44,8 @@ function stringify(node, prec) {
42
44
  order[op] < order[right.operator]
43
45
  ) {
44
46
  str += `(${stringify(right, prec)})`;
47
+ } else if (right.type === 'CalcKeyword') {
48
+ str += right.value;
45
49
  } else {
46
50
  str += stringify(right, prec);
47
51
  }
@@ -54,6 +58,8 @@ function stringify(node, prec) {
54
58
  return node.value.toString();
55
59
  case 'ParenthesizedExpression':
56
60
  return `(${stringify(node.content, prec)})`;
61
+ case 'CalcKeyword':
62
+ return node.value;
57
63
  default:
58
64
  return round(node.value, prec) + node.unit;
59
65
  }
@@ -73,8 +79,10 @@ module.exports = function (calc, node, originalValue, options, result, item) {
73
79
  let str = stringify(node, options.precision);
74
80
 
75
81
  const shouldPrintCalc =
76
- node.type === 'MathExpression' || node.type === 'Function' ||
77
- node.type === 'ParenthesizedExpression';
82
+ node.type === 'MathExpression' ||
83
+ node.type === 'Function' ||
84
+ node.type === 'ParenthesizedExpression' ||
85
+ node.type === 'CalcKeyword';
78
86
 
79
87
  if (shouldPrintCalc) {
80
88
  // if calc expression couldn't be resolved to a single value, re-wrap it as
package/src/parser.d.ts CHANGED
@@ -68,9 +68,19 @@ export interface FunctionExpression {
68
68
  value: string;
69
69
  }
70
70
 
71
+ export interface CalcKeywordExpression {
72
+ type: 'CalcKeyword';
73
+ value: string;
74
+ }
75
+
71
76
  export type ValueExpression = DimensionExpression | NumberExpression;
72
77
 
73
- export type CalcNode = MathExpression | ValueExpression | FunctionExpression | ParenthesizedExpression;
78
+ export type CalcNode =
79
+ | MathExpression
80
+ | ValueExpression
81
+ | FunctionExpression
82
+ | ParenthesizedExpression
83
+ | CalcKeywordExpression;
74
84
 
75
85
  export interface Parser {
76
86
  parse: (arg: string) => CalcNode;
package/src/parser.js CHANGED
@@ -612,6 +612,7 @@ symbols_: {
612
612
  "ADD": 6,
613
613
  "ANGLE": 12,
614
614
  "CALC": 3,
615
+ "CALC_KEYWORD": 54,
615
616
  "CHS": 19,
616
617
  "CQBS": 48,
617
618
  "CQHS": 46,
@@ -641,7 +642,7 @@ symbols_: {
641
642
  "LVMINS": 31,
642
643
  "LVWS": 27,
643
644
  "MUL": 8,
644
- "NUMBER": 54,
645
+ "NUMBER": 55,
645
646
  "PERCENTAGE": 53,
646
647
  "REMS": 20,
647
648
  "RES": 15,
@@ -662,12 +663,13 @@ symbols_: {
662
663
  "VMAXS": 33,
663
664
  "VMINS": 29,
664
665
  "VWS": 25,
665
- "dimension": 58,
666
+ "calc_keyword": 60,
667
+ "dimension": 59,
666
668
  "error": 2,
667
- "expression": 55,
668
- "function": 57,
669
- "math_expression": 56,
670
- "number": 59
669
+ "expression": 56,
670
+ "function": 58,
671
+ "math_expression": 57,
672
+ "number": 61
671
673
  },
672
674
  terminals_: {
673
675
  1: "EOF",
@@ -723,7 +725,8 @@ terminals_: {
723
725
  51: "LHS",
724
726
  52: "RLHS",
725
727
  53: "PERCENTAGE",
726
- 54: "NUMBER"
728
+ 54: "CALC_KEYWORD",
729
+ 55: "NUMBER"
727
730
  },
728
731
  TERROR: 2,
729
732
  EOF: 1,
@@ -829,14 +832,15 @@ TERROR: 2,
829
832
  },
830
833
  productions_: bp({
831
834
  pop: u([
832
- 55,
835
+ 56,
833
836
  s,
834
- [56, 9],
835
- 57,
837
+ [57, 10],
838
+ 58,
836
839
  s,
837
- [58, 45],
840
+ [59, 45],
841
+ 60,
838
842
  s,
839
- [59, 3]
843
+ [61, 3]
840
844
  ]),
841
845
  rule: u([
842
846
  2,
@@ -844,11 +848,11 @@ productions_: bp({
844
848
  s,
845
849
  [3, 5],
846
850
  s,
847
- [1, 47],
851
+ [1, 48],
848
852
  2,
849
853
  2,
850
854
  c,
851
- [3, 3]
855
+ [4, 4]
852
856
  ])
853
857
  }),
854
858
  performAction: function parser__PerformAction(yystate /* action[1] */, yysp, yyvstack) {
@@ -912,295 +916,303 @@ case 9:
912
916
  /*! Production:: math_expression : dimension */
913
917
  case 10:
914
918
  /*! Production:: math_expression : number */
919
+ case 11:
920
+ /*! Production:: math_expression : calc_keyword */
915
921
 
916
922
  this.$ = yyvstack[yysp];
917
923
  break;
918
924
 
919
- case 11:
925
+ case 12:
920
926
  /*! Production:: function : FUNCTION */
921
927
 
922
928
  this.$ = { type: 'Function', value: yyvstack[yysp] };
923
929
  break;
924
930
 
925
- case 12:
931
+ case 13:
926
932
  /*! Production:: dimension : LENGTH */
927
933
 
928
934
  this.$ = { type: 'LengthValue', value: parseFloat(yyvstack[yysp]), unit: /[a-z]+$/i.exec(yyvstack[yysp])[0] };
929
935
  break;
930
936
 
931
- case 13:
937
+ case 14:
932
938
  /*! Production:: dimension : ANGLE */
933
939
 
934
940
  this.$ = { type: 'AngleValue', value: parseFloat(yyvstack[yysp]), unit: /[a-z]+$/i.exec(yyvstack[yysp])[0] };
935
941
  break;
936
942
 
937
- case 14:
943
+ case 15:
938
944
  /*! Production:: dimension : TIME */
939
945
 
940
946
  this.$ = { type: 'TimeValue', value: parseFloat(yyvstack[yysp]), unit: /[a-z]+$/i.exec(yyvstack[yysp])[0] };
941
947
  break;
942
948
 
943
- case 15:
949
+ case 16:
944
950
  /*! Production:: dimension : FREQ */
945
951
 
946
952
  this.$ = { type: 'FrequencyValue', value: parseFloat(yyvstack[yysp]), unit: /[a-z]+$/i.exec(yyvstack[yysp])[0] };
947
953
  break;
948
954
 
949
- case 16:
955
+ case 17:
950
956
  /*! Production:: dimension : RES */
951
957
 
952
958
  this.$ = { type: 'ResolutionValue', value: parseFloat(yyvstack[yysp]), unit: /[a-z]+$/i.exec(yyvstack[yysp])[0] };
953
959
  break;
954
960
 
955
- case 17:
961
+ case 18:
956
962
  /*! Production:: dimension : UNKNOWN_DIMENSION */
957
963
 
958
964
  this.$ = { type: 'UnknownDimension', value: parseFloat(yyvstack[yysp]), unit: /[a-z]+$/i.exec(yyvstack[yysp])[0] };
959
965
  break;
960
966
 
961
- case 18:
967
+ case 19:
962
968
  /*! Production:: dimension : EMS */
963
969
 
964
970
  this.$ = { type: 'EmValue', value: parseFloat(yyvstack[yysp]), unit: 'em' };
965
971
  break;
966
972
 
967
- case 19:
973
+ case 20:
968
974
  /*! Production:: dimension : EXS */
969
975
 
970
976
  this.$ = { type: 'ExValue', value: parseFloat(yyvstack[yysp]), unit: 'ex' };
971
977
  break;
972
978
 
973
- case 20:
979
+ case 21:
974
980
  /*! Production:: dimension : CHS */
975
981
 
976
982
  this.$ = { type: 'ChValue', value: parseFloat(yyvstack[yysp]), unit: 'ch' };
977
983
  break;
978
984
 
979
- case 21:
985
+ case 22:
980
986
  /*! Production:: dimension : REMS */
981
987
 
982
988
  this.$ = { type: 'RemValue', value: parseFloat(yyvstack[yysp]), unit: 'rem' };
983
989
  break;
984
990
 
985
- case 22:
991
+ case 23:
986
992
  /*! Production:: dimension : VHS */
987
993
 
988
994
  this.$ = { type: 'VhValue', value: parseFloat(yyvstack[yysp]), unit: 'vh' };
989
995
  break;
990
996
 
991
- case 23:
997
+ case 24:
992
998
  /*! Production:: dimension : SVHS */
993
999
 
994
1000
  this.$ = { type: 'SvhValue', value: parseFloat(yyvstack[yysp]), unit: 'svh' };
995
1001
  break;
996
1002
 
997
- case 24:
1003
+ case 25:
998
1004
  /*! Production:: dimension : LVHS */
999
1005
 
1000
1006
  this.$ = { type: 'LvhValue', value: parseFloat(yyvstack[yysp]), unit: 'lvh' };
1001
1007
  break;
1002
1008
 
1003
- case 25:
1009
+ case 26:
1004
1010
  /*! Production:: dimension : DVHS */
1005
1011
 
1006
1012
  this.$ = { type: 'DvhValue', value: parseFloat(yyvstack[yysp]), unit: 'dvh' };
1007
1013
  break;
1008
1014
 
1009
- case 26:
1015
+ case 27:
1010
1016
  /*! Production:: dimension : VWS */
1011
1017
 
1012
1018
  this.$ = { type: 'VwValue', value: parseFloat(yyvstack[yysp]), unit: 'vw' };
1013
1019
  break;
1014
1020
 
1015
- case 27:
1021
+ case 28:
1016
1022
  /*! Production:: dimension : SVWS */
1017
1023
 
1018
1024
  this.$ = { type: 'SvwValue', value: parseFloat(yyvstack[yysp]), unit: 'svw' };
1019
1025
  break;
1020
1026
 
1021
- case 28:
1027
+ case 29:
1022
1028
  /*! Production:: dimension : LVWS */
1023
1029
 
1024
1030
  this.$ = { type: 'LvwValue', value: parseFloat(yyvstack[yysp]), unit: 'lvw' };
1025
1031
  break;
1026
1032
 
1027
- case 29:
1033
+ case 30:
1028
1034
  /*! Production:: dimension : DVWS */
1029
1035
 
1030
1036
  this.$ = { type: 'DvwValue', value: parseFloat(yyvstack[yysp]), unit: 'dvw' };
1031
1037
  break;
1032
1038
 
1033
- case 30:
1039
+ case 31:
1034
1040
  /*! Production:: dimension : VMINS */
1035
1041
 
1036
1042
  this.$ = { type: 'VminValue', value: parseFloat(yyvstack[yysp]), unit: 'vmin' };
1037
1043
  break;
1038
1044
 
1039
- case 31:
1045
+ case 32:
1040
1046
  /*! Production:: dimension : SVMINS */
1041
1047
 
1042
1048
  this.$ = { type: 'SvminValue', value: parseFloat(yyvstack[yysp]), unit: 'svmin' };
1043
1049
  break;
1044
1050
 
1045
- case 32:
1051
+ case 33:
1046
1052
  /*! Production:: dimension : LVMINS */
1047
1053
 
1048
1054
  this.$ = { type: 'LvminValue', value: parseFloat(yyvstack[yysp]), unit: 'lvmin' };
1049
1055
  break;
1050
1056
 
1051
- case 33:
1057
+ case 34:
1052
1058
  /*! Production:: dimension : DVMINS */
1053
1059
 
1054
1060
  this.$ = { type: 'DvminValue', value: parseFloat(yyvstack[yysp]), unit: 'dvmin' };
1055
1061
  break;
1056
1062
 
1057
- case 34:
1063
+ case 35:
1058
1064
  /*! Production:: dimension : VMAXS */
1059
1065
 
1060
1066
  this.$ = { type: 'VmaxValue', value: parseFloat(yyvstack[yysp]), unit: 'vmax' };
1061
1067
  break;
1062
1068
 
1063
- case 35:
1069
+ case 36:
1064
1070
  /*! Production:: dimension : SVMAXS */
1065
1071
 
1066
1072
  this.$ = { type: 'SvmaxValue', value: parseFloat(yyvstack[yysp]), unit: 'svmax' };
1067
1073
  break;
1068
1074
 
1069
- case 36:
1075
+ case 37:
1070
1076
  /*! Production:: dimension : LVMAXS */
1071
1077
 
1072
1078
  this.$ = { type: 'LvmaxValue', value: parseFloat(yyvstack[yysp]), unit: 'lvmax' };
1073
1079
  break;
1074
1080
 
1075
- case 37:
1081
+ case 38:
1076
1082
  /*! Production:: dimension : DVMAXS */
1077
1083
 
1078
1084
  this.$ = { type: 'DvmaxValue', value: parseFloat(yyvstack[yysp]), unit: 'dvmax' };
1079
1085
  break;
1080
1086
 
1081
- case 38:
1087
+ case 39:
1082
1088
  /*! Production:: dimension : VBS */
1083
1089
 
1084
1090
  this.$ = { type: 'VbValue', value: parseFloat(yyvstack[yysp]), unit: 'vb' };
1085
1091
  break;
1086
1092
 
1087
- case 39:
1093
+ case 40:
1088
1094
  /*! Production:: dimension : SVBS */
1089
1095
 
1090
1096
  this.$ = { type: 'SvbValue', value: parseFloat(yyvstack[yysp]), unit: 'svb' };
1091
1097
  break;
1092
1098
 
1093
- case 40:
1099
+ case 41:
1094
1100
  /*! Production:: dimension : LVBS */
1095
1101
 
1096
1102
  this.$ = { type: 'LvbValue', value: parseFloat(yyvstack[yysp]), unit: 'lvb' };
1097
1103
  break;
1098
1104
 
1099
- case 41:
1105
+ case 42:
1100
1106
  /*! Production:: dimension : DVBS */
1101
1107
 
1102
1108
  this.$ = { type: 'DvbValue', value: parseFloat(yyvstack[yysp]), unit: 'dvb' };
1103
1109
  break;
1104
1110
 
1105
- case 42:
1111
+ case 43:
1106
1112
  /*! Production:: dimension : VIS */
1107
1113
 
1108
1114
  this.$ = { type: 'VhValue', value: parseFloat(yyvstack[yysp]), unit: 'vi' };
1109
1115
  break;
1110
1116
 
1111
- case 43:
1117
+ case 44:
1112
1118
  /*! Production:: dimension : SVIS */
1113
1119
 
1114
1120
  this.$ = { type: 'SvhValue', value: parseFloat(yyvstack[yysp]), unit: 'svi' };
1115
1121
  break;
1116
1122
 
1117
- case 44:
1123
+ case 45:
1118
1124
  /*! Production:: dimension : LVIS */
1119
1125
 
1120
1126
  this.$ = { type: 'LvhValue', value: parseFloat(yyvstack[yysp]), unit: 'lvi' };
1121
1127
  break;
1122
1128
 
1123
- case 45:
1129
+ case 46:
1124
1130
  /*! Production:: dimension : DVIS */
1125
1131
 
1126
1132
  this.$ = { type: 'DvhValue', value: parseFloat(yyvstack[yysp]), unit: 'dvi' };
1127
1133
  break;
1128
1134
 
1129
- case 46:
1135
+ case 47:
1130
1136
  /*! Production:: dimension : CQWS */
1131
1137
 
1132
1138
  this.$ = { type: 'CqwValue', value: parseFloat(yyvstack[yysp]), unit: 'cqw' };
1133
1139
  break;
1134
1140
 
1135
- case 47:
1141
+ case 48:
1136
1142
  /*! Production:: dimension : CQHS */
1137
1143
 
1138
1144
  this.$ = { type: 'CqhValue', value: parseFloat(yyvstack[yysp]), unit: 'cqh' };
1139
1145
  break;
1140
1146
 
1141
- case 48:
1147
+ case 49:
1142
1148
  /*! Production:: dimension : CQIS */
1143
1149
 
1144
1150
  this.$ = { type: 'CqiValue', value: parseFloat(yyvstack[yysp]), unit: 'cqi' };
1145
1151
  break;
1146
1152
 
1147
- case 49:
1153
+ case 50:
1148
1154
  /*! Production:: dimension : CQBS */
1149
1155
 
1150
1156
  this.$ = { type: 'CqbValue', value: parseFloat(yyvstack[yysp]), unit: 'cqb' };
1151
1157
  break;
1152
1158
 
1153
- case 50:
1159
+ case 51:
1154
1160
  /*! Production:: dimension : CQMINS */
1155
1161
 
1156
1162
  this.$ = { type: 'CqminValue', value: parseFloat(yyvstack[yysp]), unit: 'cqmin' };
1157
1163
  break;
1158
1164
 
1159
- case 51:
1165
+ case 52:
1160
1166
  /*! Production:: dimension : CQMAXS */
1161
1167
 
1162
1168
  this.$ = { type: 'CqmaxValue', value: parseFloat(yyvstack[yysp]), unit: 'cqmax' };
1163
1169
  break;
1164
1170
 
1165
- case 52:
1171
+ case 53:
1166
1172
  /*! Production:: dimension : LHS */
1167
1173
 
1168
1174
  this.$ = { type: 'LhValue', value: parseFloat(yyvstack[yysp]), unit: 'lh' };
1169
1175
  break;
1170
1176
 
1171
- case 53:
1177
+ case 54:
1172
1178
  /*! Production:: dimension : RLHS */
1173
1179
 
1174
1180
  this.$ = { type: 'RlhValue', value: parseFloat(yyvstack[yysp]), unit: 'rlh' };
1175
1181
  break;
1176
1182
 
1177
- case 54:
1183
+ case 55:
1178
1184
  /*! Production:: dimension : PERCENTAGE */
1179
1185
 
1180
1186
  this.$ = { type: 'PercentageValue', value: parseFloat(yyvstack[yysp]), unit: '%' };
1181
1187
  break;
1182
1188
 
1183
- case 55:
1189
+ case 56:
1184
1190
  /*! Production:: dimension : ADD dimension */
1185
1191
 
1186
1192
  var prev = yyvstack[yysp]; this.$ = prev;
1187
1193
  break;
1188
1194
 
1189
- case 56:
1195
+ case 57:
1190
1196
  /*! Production:: dimension : SUB dimension */
1191
1197
 
1192
1198
  var prev = yyvstack[yysp]; prev.value *= -1; this.$ = prev;
1193
1199
  break;
1194
1200
 
1195
- case 57:
1196
- /*! Production:: number : NUMBER */
1197
1201
  case 58:
1202
+ /*! Production:: calc_keyword : CALC_KEYWORD */
1203
+
1204
+ this.$ = { type: 'CalcKeyword', value: yyvstack[yysp] };
1205
+ break;
1206
+
1207
+ case 59:
1208
+ /*! Production:: number : NUMBER */
1209
+ case 60:
1198
1210
  /*! Production:: number : ADD NUMBER */
1199
1211
 
1200
1212
  this.$ = { type: 'Number', value: parseFloat(yyvstack[yysp]) };
1201
1213
  break;
1202
1214
 
1203
- case 59:
1215
+ case 61:
1204
1216
  /*! Production:: number : SUB NUMBER */
1205
1217
 
1206
1218
  this.$ = { type: 'Number', value: parseFloat(yyvstack[yysp]) * -1 };
@@ -1210,19 +1222,19 @@ case 59:
1210
1222
  },
1211
1223
  table: bt({
1212
1224
  len: u([
1213
- 54,
1225
+ 56,
1214
1226
  1,
1215
1227
  5,
1216
1228
  1,
1217
- 53,
1229
+ 55,
1218
1230
  s,
1219
- [0, 47],
1231
+ [0, 48],
1220
1232
  47,
1221
1233
  47,
1222
- 0,
1223
- 0,
1224
1234
  s,
1225
- [53, 5],
1235
+ [0, 3],
1236
+ s,
1237
+ [55, 5],
1226
1238
  5,
1227
1239
  0,
1228
1240
  0,
@@ -1243,34 +1255,35 @@ table: bt({
1243
1255
  6,
1244
1256
  7,
1245
1257
  s,
1246
- [10, 50, 1],
1258
+ [10, 52, 1],
1247
1259
  1,
1248
1260
  1,
1249
1261
  s,
1250
1262
  [6, 4, 1],
1251
1263
  4,
1252
1264
  c,
1253
- [61, 49],
1265
+ [63, 50],
1254
1266
  c,
1255
- [60, 4],
1267
+ [62, 5],
1256
1268
  6,
1257
1269
  7,
1258
1270
  c,
1259
- [50, 44],
1260
- 58,
1271
+ [52, 43],
1272
+ 55,
1273
+ 59,
1261
1274
  c,
1262
1275
  [47, 47],
1263
1276
  c,
1264
- [147, 53],
1277
+ [149, 55],
1265
1278
  c,
1266
- [53, 212],
1279
+ [55, 220],
1267
1280
  s,
1268
1281
  [5, 5, 1],
1269
1282
  c,
1270
- [317, 45],
1283
+ [327, 45],
1271
1284
  c,
1272
- [363, 46],
1273
- 58,
1285
+ [373, 46],
1286
+ 59,
1274
1287
  1,
1275
1288
  c,
1276
1289
  [98, 5],
@@ -1281,57 +1294,56 @@ table: bt({
1281
1294
  ]),
1282
1295
  type: u([
1283
1296
  s,
1284
- [2, 49],
1297
+ [2, 50],
1285
1298
  s,
1286
- [0, 5],
1299
+ [0, 6],
1287
1300
  1,
1288
1301
  s,
1289
- [2, 55],
1302
+ [2, 56],
1290
1303
  s,
1291
- [0, 4],
1304
+ [0, 5],
1292
1305
  c,
1293
- [50, 47],
1306
+ [51, 47],
1294
1307
  c,
1295
1308
  [47, 93],
1296
1309
  c,
1297
- [147, 53],
1298
- c,
1299
- [53, 215],
1310
+ [149, 55],
1300
1311
  c,
1301
- [316, 47],
1312
+ [55, 225],
1302
1313
  c,
1303
- [46, 18]
1314
+ [46, 63]
1304
1315
  ]),
1305
1316
  state: u([
1306
1317
  1,
1307
1318
  2,
1308
1319
  5,
1309
1320
  6,
1321
+ 8,
1310
1322
  7,
1311
- 61,
1323
+ 63,
1312
1324
  c,
1313
- [4, 3],
1314
- 62,
1315
- 66,
1325
+ [5, 4],
1326
+ 64,
1316
1327
  68,
1317
- c,
1318
- [6, 3],
1319
- 69,
1320
- c,
1321
- [4, 3],
1322
1328
  70,
1323
1329
  c,
1324
- [4, 3],
1330
+ [7, 4],
1325
1331
  71,
1326
1332
  c,
1327
- [4, 3],
1333
+ [5, 4],
1328
1334
  72,
1329
1335
  c,
1330
- [22, 5]
1336
+ [5, 4],
1337
+ 73,
1338
+ c,
1339
+ [5, 4],
1340
+ 74,
1341
+ c,
1342
+ [27, 6]
1331
1343
  ]),
1332
1344
  mode: u([
1333
1345
  s,
1334
- [1, 536],
1346
+ [1, 543],
1335
1347
  s,
1336
1348
  [2, 4],
1337
1349
  c,
@@ -1342,42 +1354,44 @@ table: bt({
1342
1354
  goto: u([
1343
1355
  3,
1344
1356
  4,
1345
- 52,
1346
1357
  53,
1358
+ 54,
1347
1359
  s,
1348
- [8, 44, 1],
1360
+ [9, 44, 1],
1361
+ 56,
1362
+ 55,
1349
1363
  s,
1350
- [54, 7, 1],
1364
+ [57, 6, 1],
1351
1365
  c,
1352
- [55, 49],
1353
- 64,
1354
- 65,
1366
+ [56, 50],
1367
+ 66,
1368
+ 67,
1355
1369
  c,
1356
- [46, 43],
1357
- 63,
1370
+ [47, 43],
1371
+ 65,
1358
1372
  c,
1359
1373
  [46, 45],
1360
- 67,
1374
+ 69,
1361
1375
  c,
1362
- [141, 49],
1376
+ [142, 50],
1363
1377
  c,
1364
- [49, 196],
1365
- 73,
1378
+ [50, 200],
1379
+ 75,
1366
1380
  c,
1367
- [392, 4],
1381
+ [398, 4],
1368
1382
  c,
1369
- [296, 45],
1383
+ [301, 45],
1370
1384
  c,
1371
1385
  [45, 45],
1372
1386
  s,
1373
1387
  [3, 4],
1374
- 58,
1375
- 59,
1388
+ 60,
1389
+ 61,
1376
1390
  s,
1377
1391
  [4, 4],
1378
- 58,
1379
- 59,
1380
- 74,
1392
+ 60,
1393
+ 61,
1394
+ 76,
1381
1395
  c,
1382
1396
  [107, 4]
1383
1397
  ])
@@ -1385,27 +1399,29 @@ table: bt({
1385
1399
  defaultActions: bda({
1386
1400
  idx: u([
1387
1401
  s,
1388
- [5, 47, 1],
1389
- 54,
1402
+ [5, 48, 1],
1390
1403
  55,
1391
- 62,
1392
- 63,
1393
- 66,
1394
- 67,
1395
- 70,
1396
- 71,
1404
+ 56,
1405
+ 57,
1406
+ 64,
1407
+ 65,
1408
+ 68,
1409
+ 69,
1410
+ 72,
1397
1411
  73,
1398
- 74
1412
+ 75,
1413
+ 76
1399
1414
  ]),
1400
1415
  goto: u([
1401
1416
  s,
1402
- [8, 47, 1],
1403
- 57,
1404
- 1,
1405
- 55,
1417
+ [8, 48, 1],
1418
+ 59,
1406
1419
  58,
1420
+ 1,
1407
1421
  56,
1408
- 59,
1422
+ 60,
1423
+ 57,
1424
+ 61,
1409
1425
  5,
1410
1426
  6,
1411
1427
  7,
@@ -1449,7 +1465,7 @@ parse: function parse(input) {
1449
1465
  var TERROR = this.TERROR;
1450
1466
  var EOF = this.EOF;
1451
1467
  var ERROR_RECOVERY_TOKEN_DISCARD_COUNT = (this.options.errorRecoveryTokenDiscardCount | 0) || 3;
1452
- var NO_ACTION = [0, 75 /* === table.length :: ensures that anyone using this new state will fail dramatically! */];
1468
+ var NO_ACTION = [0, 77 /* === table.length :: ensures that anyone using this new state will fail dramatically! */];
1453
1469
 
1454
1470
  var lexer;
1455
1471
  if (this.__lexer__) {
@@ -4006,23 +4022,27 @@ EOF: 1,
4006
4022
 
4007
4023
  /*! Conditions:: INITIAL */
4008
4024
  /*! Rule:: (([0-9]+(\.[0-9]+)?|\.[0-9]+)(e(\+|-)[0-9]+)?)\b */
4009
- 62: 54,
4025
+ 62: 55,
4026
+
4027
+ /*! Conditions:: INITIAL */
4028
+ /*! Rule:: (infinity|pi|e)\b */
4029
+ 63: 54,
4010
4030
 
4011
4031
  /*! Conditions:: INITIAL */
4012
4032
  /*! Rule:: (([0-9]+(\.[0-9]+)?|\.[0-9]+)(e(\+|-)[0-9]+)?)-?([a-zA-Z_]|[\240-\377]|(\\[0-9a-fA-F]{1,6}(\r\n|[ \t\r\n\f])?|\\[^\r\n\f0-9a-fA-F]))([a-zA-Z0-9_-]|[\240-\377]|(\\[0-9a-fA-F]{1,6}(\r\n|[ \t\r\n\f])?|\\[^\r\n\f0-9a-fA-F]))*\b */
4013
- 63: 16,
4033
+ 64: 16,
4014
4034
 
4015
4035
  /*! Conditions:: INITIAL */
4016
4036
  /*! Rule:: \( */
4017
- 64: 4,
4037
+ 65: 4,
4018
4038
 
4019
4039
  /*! Conditions:: INITIAL */
4020
4040
  /*! Rule:: \) */
4021
- 65: 5,
4041
+ 66: 5,
4022
4042
 
4023
4043
  /*! Conditions:: INITIAL */
4024
4044
  /*! Rule:: $ */
4025
- 66: 1
4045
+ 67: 1
4026
4046
  },
4027
4047
 
4028
4048
  rules: [
@@ -4089,10 +4109,11 @@ EOF: 1,
4089
4109
  /* 60: */ /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)dppx\b)/i,
4090
4110
  /* 61: */ /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)%)/i,
4091
4111
  /* 62: */ /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)\b)/i,
4092
- /* 63: */ /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)-?([^\W\d]|[ -ÿ]|(\\[\dA-Fa-f]{1,6}(\r\n|[\t\n\f\r ])?|\\[^\d\n\f\rA-Fa-f]))([\w\-]|[ -ÿ]|(\\[\dA-Fa-f]{1,6}(\r\n|[\t\n\f\r ])?|\\[^\d\n\f\rA-Fa-f]))*\b)/i,
4093
- /* 64: */ /^(?:\()/i,
4094
- /* 65: */ /^(?:\))/i,
4095
- /* 66: */ /^(?:$)/i
4112
+ /* 63: */ /^(?:(infinity|pi|e)\b)/i,
4113
+ /* 64: */ /^(?:((\d+(\.\d+)?|\.\d+)(e(\+|-)\d+)?)-?([^\W\d]|[ -ÿ]|(\\[\dA-Fa-f]{1,6}(\r\n|[\t\n\f\r ])?|\\[^\d\n\f\rA-Fa-f]))([\w\-]|[ -ÿ]|(\\[\dA-Fa-f]{1,6}(\r\n|[\t\n\f\r ])?|\\[^\d\n\f\rA-Fa-f]))*\b)/i,
4114
+ /* 65: */ /^(?:\()/i,
4115
+ /* 66: */ /^(?:\))/i,
4116
+ /* 67: */ /^(?:$)/i
4096
4117
  ],
4097
4118
 
4098
4119
  conditions: {
@@ -4164,7 +4185,8 @@ EOF: 1,
4164
4185
  63,
4165
4186
  64,
4166
4187
  65,
4167
- 66
4188
+ 66,
4189
+ 67
4168
4190
  ],
4169
4191
 
4170
4192
  inclusive: true