pacc 2.0.1 → 2.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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/src/tokens.mjs +43 -21
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pacc",
3
- "version": "2.0.1",
3
+ "version": "2.1.1",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
package/src/tokens.mjs CHANGED
@@ -1,17 +1,14 @@
1
-
2
-
3
1
  const lookup = {};
4
2
 
5
- function createToken(str)
6
- {
7
- const token = {str};
3
+ function createToken(str) {
4
+ const token = { str };
8
5
  lookup[str] = token;
9
6
  return token;
10
7
  }
11
8
 
12
9
  export const PLUS = createToken("+");
13
10
  export const MINUS = createToken("-");
14
- export const STAR =createToken("*");
11
+ export const STAR = createToken("*");
15
12
  export const DIVIDE = createToken("/");
16
13
  export const NOT = createToken("!");
17
14
  export const NOT_EQUAL = createToken("!=");
@@ -31,10 +28,10 @@ export const COLON = createToken(":");
31
28
  export const SEMICOLON = createToken(";");
32
29
  export const COMMA = createToken(",");
33
30
  export const DOT = createToken(".");
34
- export const AMPERSAND = createToken('&');
35
- export const DOUBLE_AMPERSAND = createToken('&&');
31
+ export const AMPERSAND = createToken("&");
32
+ export const DOUBLE_AMPERSAND = createToken("&&");
36
33
  export const BAR = createToken("|");
37
- export const DOUBLE_BAR = createToken('||');
34
+ export const DOUBLE_BAR = createToken("||");
38
35
 
39
36
  /**
40
37
  * Split property path into tokens
@@ -81,6 +78,7 @@ export function* tokens(string) {
81
78
  case "string":
82
79
  buffer += c;
83
80
  break;
81
+ case "number":
84
82
  case "identifier":
85
83
  yield buffer;
86
84
  buffer = "";
@@ -110,6 +108,7 @@ export function* tokens(string) {
110
108
  yield buffer;
111
109
  state = undefined;
112
110
  break;
111
+ case "number":
113
112
  case "identifier":
114
113
  yield buffer;
115
114
  buffer = "";
@@ -144,6 +143,7 @@ export function* tokens(string) {
144
143
  case "string":
145
144
  buffer += c;
146
145
  break;
146
+ case "number":
147
147
  case "identifier":
148
148
  yield buffer;
149
149
  state = c;
@@ -162,6 +162,7 @@ export function* tokens(string) {
162
162
  case "string":
163
163
  buffer += c;
164
164
  break;
165
+ case "number":
165
166
  case "identifier":
166
167
  yield buffer;
167
168
  state = c;
@@ -191,6 +192,7 @@ export function* tokens(string) {
191
192
  case "string":
192
193
  buffer += c;
193
194
  break;
195
+ case "number":
194
196
  case "identifier":
195
197
  yield buffer;
196
198
  state = c;
@@ -200,6 +202,34 @@ export function* tokens(string) {
200
202
  state = c;
201
203
  }
202
204
  break;
205
+
206
+ case "0":
207
+ case "1":
208
+ case "2":
209
+ case "3":
210
+ case "4":
211
+ case "5":
212
+ case "6":
213
+ case "7":
214
+ case "8":
215
+ case "9":
216
+ switch (state) {
217
+ default:
218
+ yield lookup[state];
219
+ case undefined:
220
+ buffer = c.charCodeAt(0) - "0".charCodeAt(0);
221
+ state = "number";
222
+ break;
223
+ case "number":
224
+ buffer = buffer * 10 + c.charCodeAt(0) - "0".charCodeAt(0);
225
+ break;
226
+ case "string":
227
+ case "identifier":
228
+ buffer += c;
229
+ break;
230
+ }
231
+ break;
232
+
203
233
  default:
204
234
  switch (state) {
205
235
  case undefined:
@@ -211,18 +241,9 @@ export function* tokens(string) {
211
241
  buffer += c;
212
242
  break;
213
243
  default:
214
- if (
215
- (c >= "a" && c <= "z") ||
216
- (c >= "A" && c <= "Z") ||
217
- (c >= "0" && c <= "9") ||
218
- c === "_"
219
- ) {
220
- yield lookup[state];
221
- state = "identifier";
222
- buffer = c;
223
- } else {
224
- state += c;
225
- }
244
+ yield lookup[state];
245
+ state = "identifier";
246
+ buffer = c;
226
247
  }
227
248
  }
228
249
  }
@@ -232,6 +253,7 @@ export function* tokens(string) {
232
253
  break;
233
254
  case "string":
234
255
  throw new Error("unterminated string");
256
+ case "number":
235
257
  case "identifier":
236
258
  yield buffer;
237
259
  break;