pacc 2.0.0 → 2.1.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 +49 -23
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pacc",
3
- "version": "2.0.0",
3
+ "version": "2.1.0",
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 DOUBBLE_AMPERSAND = createToken('&&');
31
+ export const AMPERSAND = createToken("&");
32
+ export const DOUBLE_AMPERSAND = createToken("&&");
36
33
  export const BAR = createToken("|");
37
- export const DOUBBLE_BAR = createToken('||');
34
+ export const DOUBLE_BAR = createToken("||");
38
35
 
39
36
  /**
40
37
  * Split property path into tokens
@@ -81,13 +78,14 @@ 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 = "";
87
85
  state = undefined;
88
86
  break;
89
87
  default:
90
- yield lookup[state] || state;
88
+ yield lookup[state];
91
89
  state = undefined;
92
90
  }
93
91
  break;
@@ -110,13 +108,14 @@ 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 = "";
116
115
  state = "string";
117
116
  break;
118
117
  default:
119
- yield lookup[state] || state;
118
+ yield lookup[state];
120
119
  buffer = "";
121
120
  state = "string";
122
121
  }
@@ -131,10 +130,10 @@ export function* tokens(string) {
131
130
  case "|":
132
131
  if (state === c) {
133
132
  state += c;
134
- yield lookup[state] || state;
133
+ yield lookup[state];
135
134
  state = undefined;
136
135
  } else {
137
- yield lookup[state] || state;
136
+ yield lookup[state];
138
137
  state = c;
139
138
  }
140
139
  break;
@@ -144,12 +143,13 @@ 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;
150
150
  break;
151
151
  default:
152
- yield lookup[state] || state;
152
+ yield lookup[state];
153
153
  state = c;
154
154
  }
155
155
  break;
@@ -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,15 +192,44 @@ 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;
197
199
  break;
198
200
  default:
199
- yield lookup[state] || state;
201
+ yield lookup[state];
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,13 +241,8 @@ 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] || state;
244
+ if ((c >= "a" && c <= "z") || (c >= "A" && c <= "Z") || c === "_") {
245
+ yield lookup[state];
221
246
  state = "identifier";
222
247
  buffer = c;
223
248
  } else {
@@ -232,10 +257,11 @@ export function* tokens(string) {
232
257
  break;
233
258
  case "string":
234
259
  throw new Error("unterminated string");
260
+ case "number":
235
261
  case "identifier":
236
262
  yield buffer;
237
263
  break;
238
264
  default:
239
- yield lookup[state] || state;
265
+ yield lookup[state];
240
266
  }
241
267
  }