pacc 2.0.1 → 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.
- package/package.json +1 -1
- package/src/tokens.mjs +41 -15
package/package.json
CHANGED
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,12 +241,7 @@ 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
|
-
) {
|
|
244
|
+
if ((c >= "a" && c <= "z") || (c >= "A" && c <= "Z") || c === "_") {
|
|
220
245
|
yield lookup[state];
|
|
221
246
|
state = "identifier";
|
|
222
247
|
buffer = c;
|
|
@@ -232,6 +257,7 @@ 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;
|