pacc 6.7.3 → 6.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/src/tokens.mjs +24 -29
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pacc",
3
- "version": "6.7.3",
3
+ "version": "6.8.0",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "provenance": true
package/src/tokens.mjs CHANGED
@@ -77,7 +77,7 @@ const esc = {
77
77
  * @yields {Token}
78
78
  */
79
79
  export function* tokens(string) {
80
- let state, value, hex, divider, quote;
80
+ let state, value, hex, quote;
81
81
 
82
82
  const keywordOrIdentifier = () => keywords[value] || [IDENTIFIER, value];
83
83
  const startString = c => {
@@ -116,8 +116,7 @@ export function* tokens(string) {
116
116
  case " ":
117
117
  switch (state) {
118
118
  case "number":
119
- case "number-fraction":
120
- yield [value];
119
+ yield [parseFloat(value)];
121
120
  state = undefined;
122
121
  case undefined:
123
122
  break;
@@ -146,8 +145,7 @@ export function* tokens(string) {
146
145
  case "'":
147
146
  switch (state) {
148
147
  case "number":
149
- case "number-fraction":
150
- yield [value];
148
+ yield [parseFloat(value)];
151
149
  case undefined:
152
150
  startString(c);
153
151
  break;
@@ -175,8 +173,7 @@ export function* tokens(string) {
175
173
  case "|":
176
174
  switch (state) {
177
175
  case "number":
178
- case "number-fraction":
179
- yield [value];
176
+ yield [parseFloat(value)];
180
177
  case undefined:
181
178
  state = c;
182
179
  break;
@@ -207,8 +204,7 @@ export function* tokens(string) {
207
204
  case "=":
208
205
  switch (state) {
209
206
  case "number":
210
- case "number-fraction":
211
- yield [value];
207
+ yield [parseFloat(value)];
212
208
  case undefined:
213
209
  state = c;
214
210
  break;
@@ -223,17 +219,23 @@ export function* tokens(string) {
223
219
  state += c;
224
220
  }
225
221
  break;
222
+
226
223
  case ".":
227
224
  if (state === "number") {
228
- state = "number-fraction";
229
- divider = 10;
225
+ value += '.';
226
+ break;
227
+ }
228
+ else if (state === "-") {
229
+ value = '-.';
230
+ state="number";
230
231
  break;
231
232
  }
233
+
234
+ case "-":
232
235
  case ":":
233
236
  case ";":
234
237
  case ",":
235
238
  case "+":
236
- case "-":
237
239
  case "*":
238
240
  case "/":
239
241
  case "(":
@@ -244,8 +246,7 @@ export function* tokens(string) {
244
246
  case "}":
245
247
  switch (state) {
246
248
  case "number":
247
- case "number-fraction":
248
- yield [value];
249
+ yield [parseFloat(value)];
249
250
  case undefined:
250
251
  state = c;
251
252
  break;
@@ -275,21 +276,17 @@ export function* tokens(string) {
275
276
  default:
276
277
  yield lookup[state];
277
278
  case undefined:
278
- value = c.charCodeAt(0) - 48;
279
+ value = c;
279
280
  state = "number";
280
281
  break;
282
+ case "-":
283
+ state = "number";
284
+ value = "-" + c;
285
+ break;
281
286
  case ".":
282
- state = "number-fraction";
283
- value = 0;
284
- divider = 10;
285
- case "number-fraction":
286
- value = value + (c.charCodeAt(0) - 48) / divider;
287
- divider *= 10;
288
- break;
287
+ state = "number";
288
+ value = ".";
289
289
  case "number":
290
- // @ts-ignore
291
- value = value * 10 + c.charCodeAt(0) - 48;
292
- break;
293
290
  case "string":
294
291
  case "identifier":
295
292
  value += c;
@@ -300,8 +297,7 @@ export function* tokens(string) {
300
297
  default:
301
298
  switch (state) {
302
299
  case "number":
303
- case "number-fraction":
304
- yield [value];
300
+ yield [parseFloat(value)];
305
301
  case undefined:
306
302
  state = "identifier";
307
303
  value = c;
@@ -323,9 +319,8 @@ export function* tokens(string) {
323
319
  break;
324
320
  case "string":
325
321
  throw new Error("unterminated string", { cause: string });
326
- case "number-fraction":
327
322
  case "number":
328
- yield [value];
323
+ yield [parseFloat(value)];
329
324
  break;
330
325
  case "identifier":
331
326
  yield keywordOrIdentifier();