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.
- package/package.json +1 -1
- package/src/tokens.mjs +49 -23
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
|
|
31
|
+
export const AMPERSAND = createToken("&");
|
|
32
|
+
export const DOUBLE_AMPERSAND = createToken("&&");
|
|
36
33
|
export const BAR = createToken("|");
|
|
37
|
-
export const
|
|
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]
|
|
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]
|
|
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]
|
|
133
|
+
yield lookup[state];
|
|
135
134
|
state = undefined;
|
|
136
135
|
} else {
|
|
137
|
-
yield lookup[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]
|
|
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]
|
|
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
|
-
|
|
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]
|
|
265
|
+
yield lookup[state];
|
|
240
266
|
}
|
|
241
267
|
}
|