pacc 6.7.2 → 6.7.3
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 +36 -38
package/package.json
CHANGED
package/src/tokens.mjs
CHANGED
|
@@ -56,6 +56,20 @@ export /** @type {Token} */ const DOUBLE_BAR = createToken("||", 30, "infixr");
|
|
|
56
56
|
export /** @type {Token} */ const IDENTIFIER = createToken("IDENTIFIER", 0);
|
|
57
57
|
export /** @type {Token} */ const EOF = createToken("EOF", -1, "eof");
|
|
58
58
|
|
|
59
|
+
const keywords = {
|
|
60
|
+
true: [true],
|
|
61
|
+
false: [false]
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
const esc = {
|
|
65
|
+
b: "\b",
|
|
66
|
+
f: "\f",
|
|
67
|
+
n: "\n",
|
|
68
|
+
r: "\r",
|
|
69
|
+
t: "\t",
|
|
70
|
+
v: "\v"
|
|
71
|
+
};
|
|
72
|
+
|
|
59
73
|
/**
|
|
60
74
|
* Split property path into tokens
|
|
61
75
|
* @generator
|
|
@@ -65,16 +79,12 @@ export /** @type {Token} */ const EOF = createToken("EOF", -1, "eof");
|
|
|
65
79
|
export function* tokens(string) {
|
|
66
80
|
let state, value, hex, divider, quote;
|
|
67
81
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
default:
|
|
75
|
-
return [IDENTIFIER, value];
|
|
76
|
-
}
|
|
77
|
-
}
|
|
82
|
+
const keywordOrIdentifier = () => keywords[value] || [IDENTIFIER, value];
|
|
83
|
+
const startString = c => {
|
|
84
|
+
value = "";
|
|
85
|
+
state = "string";
|
|
86
|
+
quote = c;
|
|
87
|
+
};
|
|
78
88
|
|
|
79
89
|
for (const c of string) {
|
|
80
90
|
switch (state) {
|
|
@@ -92,13 +102,6 @@ export function* tokens(string) {
|
|
|
92
102
|
state = "string-escaping-hex";
|
|
93
103
|
hex = "";
|
|
94
104
|
} else {
|
|
95
|
-
const esc = {
|
|
96
|
-
b: "\b",
|
|
97
|
-
f: "\f",
|
|
98
|
-
n: "\n",
|
|
99
|
-
r: "\r",
|
|
100
|
-
t: "\t"
|
|
101
|
-
};
|
|
102
105
|
value += esc[c] || c;
|
|
103
106
|
state = "string";
|
|
104
107
|
}
|
|
@@ -109,6 +112,7 @@ export function* tokens(string) {
|
|
|
109
112
|
case "\n":
|
|
110
113
|
case "\r":
|
|
111
114
|
case "\t":
|
|
115
|
+
case "\v":
|
|
112
116
|
case " ":
|
|
113
117
|
switch (state) {
|
|
114
118
|
case "number":
|
|
@@ -121,7 +125,7 @@ export function* tokens(string) {
|
|
|
121
125
|
value += c;
|
|
122
126
|
break;
|
|
123
127
|
case "identifier":
|
|
124
|
-
yield
|
|
128
|
+
yield keywordOrIdentifier();
|
|
125
129
|
value = undefined;
|
|
126
130
|
state = undefined;
|
|
127
131
|
break;
|
|
@@ -145,9 +149,7 @@ export function* tokens(string) {
|
|
|
145
149
|
case "number-fraction":
|
|
146
150
|
yield [value];
|
|
147
151
|
case undefined:
|
|
148
|
-
|
|
149
|
-
state = "string";
|
|
150
|
-
quote = c;
|
|
152
|
+
startString(c);
|
|
151
153
|
break;
|
|
152
154
|
case "string":
|
|
153
155
|
if (c === quote) {
|
|
@@ -158,16 +160,12 @@ export function* tokens(string) {
|
|
|
158
160
|
}
|
|
159
161
|
break;
|
|
160
162
|
case "identifier":
|
|
161
|
-
yield
|
|
162
|
-
|
|
163
|
-
state = "string";
|
|
164
|
-
quote = c;
|
|
163
|
+
yield keywordOrIdentifier();
|
|
164
|
+
startString(c);
|
|
165
165
|
break;
|
|
166
166
|
default:
|
|
167
167
|
yield lookup[state];
|
|
168
|
-
|
|
169
|
-
state = "string";
|
|
170
|
-
quote = c;
|
|
168
|
+
startString(c);
|
|
171
169
|
}
|
|
172
170
|
break;
|
|
173
171
|
case "!":
|
|
@@ -197,7 +195,7 @@ export function* tokens(string) {
|
|
|
197
195
|
value += c;
|
|
198
196
|
break;
|
|
199
197
|
case "identifier":
|
|
200
|
-
yield
|
|
198
|
+
yield keywordOrIdentifier();
|
|
201
199
|
state = c;
|
|
202
200
|
break;
|
|
203
201
|
default:
|
|
@@ -214,13 +212,13 @@ export function* tokens(string) {
|
|
|
214
212
|
case undefined:
|
|
215
213
|
state = c;
|
|
216
214
|
break;
|
|
217
|
-
case "string":
|
|
218
|
-
value += c;
|
|
219
|
-
break;
|
|
220
215
|
case "identifier":
|
|
221
|
-
yield
|
|
216
|
+
yield keywordOrIdentifier();
|
|
222
217
|
state = c;
|
|
223
218
|
break;
|
|
219
|
+
case "string":
|
|
220
|
+
value += c;
|
|
221
|
+
break;
|
|
224
222
|
default:
|
|
225
223
|
state += c;
|
|
226
224
|
}
|
|
@@ -251,13 +249,13 @@ export function* tokens(string) {
|
|
|
251
249
|
case undefined:
|
|
252
250
|
state = c;
|
|
253
251
|
break;
|
|
254
|
-
case "string":
|
|
255
|
-
value += c;
|
|
256
|
-
break;
|
|
257
252
|
case "identifier":
|
|
258
|
-
yield
|
|
253
|
+
yield keywordOrIdentifier();
|
|
259
254
|
state = c;
|
|
260
255
|
break;
|
|
256
|
+
case "string":
|
|
257
|
+
value += c;
|
|
258
|
+
break;
|
|
261
259
|
default:
|
|
262
260
|
yield lookup[state];
|
|
263
261
|
state = c;
|
|
@@ -330,7 +328,7 @@ export function* tokens(string) {
|
|
|
330
328
|
yield [value];
|
|
331
329
|
break;
|
|
332
330
|
case "identifier":
|
|
333
|
-
yield
|
|
331
|
+
yield keywordOrIdentifier();
|
|
334
332
|
break;
|
|
335
333
|
default:
|
|
336
334
|
yield lookup[state];
|