@jondotsoy/don 0.0.2 → 0.0.5
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/LICENSE +21 -0
- package/README.md +72 -373
- package/lib/esm/don.d.ts +10 -0
- package/lib/esm/don.d.ts.map +1 -0
- package/lib/esm/don.js +27 -0
- package/lib/esm/don.js.map +1 -0
- package/lib/esm/index.d.ts +1 -2
- package/lib/esm/index.d.ts.map +1 -1
- package/lib/esm/index.js +2 -2
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/v1/__utils__/key-syntax-kind.d.ts +2 -0
- package/lib/esm/v1/__utils__/key-syntax-kind.d.ts.map +1 -0
- package/lib/esm/v1/__utils__/key-syntax-kind.js +23 -0
- package/lib/esm/v1/__utils__/key-syntax-kind.js.map +1 -0
- package/lib/esm/v1/__utils__/normalize.d.ts +3 -0
- package/lib/esm/v1/__utils__/normalize.d.ts.map +1 -0
- package/lib/esm/v1/__utils__/normalize.js +10 -0
- package/lib/esm/v1/__utils__/normalize.js.map +1 -0
- package/lib/esm/v1/__utils__/t.d.ts +15 -0
- package/lib/esm/v1/__utils__/t.d.ts.map +1 -0
- package/lib/esm/v1/__utils__/t.js +32 -0
- package/lib/esm/v1/__utils__/t.js.map +1 -0
- package/lib/esm/v1/__utils__/to-token-snapshot.d.ts +7 -0
- package/lib/esm/v1/__utils__/to-token-snapshot.d.ts.map +1 -0
- package/lib/esm/v1/__utils__/to-token-snapshot.js +162 -0
- package/lib/esm/v1/__utils__/to-token-snapshot.js.map +1 -0
- package/lib/esm/v1/compiler/directive-node.d.ts +26 -0
- package/lib/esm/v1/compiler/directive-node.d.ts.map +1 -0
- package/lib/esm/v1/compiler/directive-node.js +48 -0
- package/lib/esm/v1/compiler/directive-node.js.map +1 -0
- package/lib/esm/v1/compiler/lexema-encode.d.ts +15 -0
- package/lib/esm/v1/compiler/lexema-encode.d.ts.map +1 -0
- package/lib/esm/v1/compiler/lexema-encode.js +22 -0
- package/lib/esm/v1/compiler/lexema-encode.js.map +1 -0
- package/lib/esm/v1/compiler/lexema.d.ts +10 -0
- package/lib/esm/v1/compiler/lexema.d.ts.map +1 -0
- package/lib/esm/v1/compiler/lexema.js +26 -0
- package/lib/esm/v1/compiler/lexema.js.map +1 -0
- package/lib/esm/v1/compiler/part-set-encode.d.ts +6 -0
- package/lib/esm/v1/compiler/part-set-encode.d.ts.map +1 -0
- package/lib/esm/v1/compiler/part-set-encode.js +15 -0
- package/lib/esm/v1/compiler/part-set-encode.js.map +1 -0
- package/lib/esm/v1/compiler/part-set.d.ts +6 -0
- package/lib/esm/v1/compiler/part-set.d.ts.map +1 -0
- package/lib/esm/v1/compiler/part-set.js +7 -0
- package/lib/esm/v1/compiler/part-set.js.map +1 -0
- package/lib/esm/v1/compiler/part.d.ts +31 -0
- package/lib/esm/v1/compiler/part.d.ts.map +1 -0
- package/lib/esm/v1/compiler/part.js +109 -0
- package/lib/esm/v1/compiler/part.js.map +1 -0
- package/lib/esm/v1/compiler/partial-span.d.ts +6 -0
- package/lib/esm/v1/compiler/partial-span.d.ts.map +1 -0
- package/lib/esm/v1/compiler/partial-span.js +9 -0
- package/lib/esm/v1/compiler/partial-span.js.map +1 -0
- package/lib/esm/v1/compiler/span.d.ts +9 -0
- package/lib/esm/v1/compiler/span.d.ts.map +1 -0
- package/lib/esm/v1/compiler/span.js +13 -0
- package/lib/esm/v1/compiler/span.js.map +1 -0
- package/lib/esm/v1/compiler/syntax-encode.d.ts +9 -0
- package/lib/esm/v1/compiler/syntax-encode.d.ts.map +1 -0
- package/lib/esm/v1/compiler/syntax-encode.js +160 -0
- package/lib/esm/v1/compiler/syntax-encode.js.map +1 -0
- package/lib/esm/v1/compiler/token.d.ts +59 -0
- package/lib/esm/v1/compiler/token.d.ts.map +1 -0
- package/lib/esm/v1/compiler/token.js +320 -0
- package/lib/esm/v1/compiler/token.js.map +1 -0
- package/lib/esm/v1/types/location.d.ts +6 -0
- package/lib/esm/v1/types/location.d.ts.map +1 -0
- package/lib/esm/v1/types/location.js +2 -0
- package/lib/esm/v1/types/location.js.map +1 -0
- package/lib/esm/v1/types/u8.d.ts +2 -0
- package/lib/esm/v1/types/u8.d.ts.map +1 -0
- package/lib/esm/v1/types/u8.js +2 -0
- package/lib/esm/v1/types/u8.js.map +1 -0
- package/lib/esm/v1/utils/build-logger.d.ts +11 -0
- package/lib/esm/v1/utils/build-logger.d.ts.map +1 -0
- package/lib/esm/v1/utils/build-logger.js +20 -0
- package/lib/esm/v1/utils/build-logger.js.map +1 -0
- package/lib/esm/v1/utils/charset-tools.d.ts +15 -0
- package/lib/esm/v1/utils/charset-tools.d.ts.map +1 -0
- package/lib/esm/v1/utils/charset-tools.js +37 -0
- package/lib/esm/v1/utils/charset-tools.js.map +1 -0
- package/lib/esm/v1/utils/charset.d.ts +34 -0
- package/lib/esm/v1/utils/charset.d.ts.map +1 -0
- package/lib/esm/v1/utils/charset.js +52 -0
- package/lib/esm/v1/utils/charset.js.map +1 -0
- package/lib/esm/v1/utils/parts-match.d.ts +12 -0
- package/lib/esm/v1/utils/parts-match.d.ts.map +1 -0
- package/lib/esm/v1/utils/parts-match.js +30 -0
- package/lib/esm/v1/utils/parts-match.js.map +1 -0
- package/lib/esm/v1/utils/syntax-kind.d.ts +22 -0
- package/lib/esm/v1/utils/syntax-kind.d.ts.map +1 -0
- package/lib/esm/v1/utils/syntax-kind.js +28 -0
- package/lib/esm/v1/utils/syntax-kind.js.map +1 -0
- package/lib/esm/v1/utils/take-while.d.ts +53 -0
- package/lib/esm/v1/utils/take-while.d.ts.map +1 -0
- package/lib/esm/v1/utils/take-while.js +69 -0
- package/lib/esm/v1/utils/take-while.js.map +1 -0
- package/package.json +5 -1
- package/lib/esm/chunk.d.ts +0 -28
- package/lib/esm/chunk.d.ts.map +0 -1
- package/lib/esm/chunk.js +0 -84
- package/lib/esm/chunk.js.map +0 -1
- package/lib/esm/document.d.ts +0 -20
- package/lib/esm/document.d.ts.map +0 -1
- package/lib/esm/document.js +0 -138
- package/lib/esm/document.js.map +0 -1
- package/lib/esm/lexer.d.ts +0 -38
- package/lib/esm/lexer.d.ts.map +0 -1
- package/lib/esm/lexer.js +0 -600
- package/lib/esm/lexer.js.map +0 -1
- package/lib/esm/utils/inspect.d.ts +0 -7
- package/lib/esm/utils/inspect.d.ts.map +0 -1
- package/lib/esm/utils/inspect.js +0 -39
- package/lib/esm/utils/inspect.js.map +0 -1
package/lib/esm/lexer.js
DELETED
|
@@ -1,600 +0,0 @@
|
|
|
1
|
-
import { ChunkEncoder, ChunkList } from "./chunk";
|
|
2
|
-
export class Token {
|
|
3
|
-
type;
|
|
4
|
-
raw;
|
|
5
|
-
constructor(type, raw) {
|
|
6
|
-
this.type = type;
|
|
7
|
-
this.raw = raw;
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
export class Lexema {
|
|
11
|
-
length;
|
|
12
|
-
tokens;
|
|
13
|
-
constructor(length, tokens) {
|
|
14
|
-
this.length = length;
|
|
15
|
-
this.tokens = tokens;
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
class MatchTokenExpressionResult {
|
|
19
|
-
matched;
|
|
20
|
-
length;
|
|
21
|
-
constructor(matched, length) {
|
|
22
|
-
this.matched = matched;
|
|
23
|
-
this.length = length;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
export class TokenExpression {
|
|
27
|
-
test;
|
|
28
|
-
constructor(test) {
|
|
29
|
-
this.test = test;
|
|
30
|
-
}
|
|
31
|
-
match(chunks, fromIndex) {
|
|
32
|
-
const result = this.test(chunks, fromIndex)();
|
|
33
|
-
return result;
|
|
34
|
-
}
|
|
35
|
-
static stringLiteral = new TokenExpression((chunks, fromIndex) => {
|
|
36
|
-
return () => {
|
|
37
|
-
const chunksArray = Array.from(chunks.chunks);
|
|
38
|
-
// Verificar que hay al menos un chunk en fromIndex
|
|
39
|
-
if (fromIndex >= chunksArray.length) {
|
|
40
|
-
return null;
|
|
41
|
-
}
|
|
42
|
-
const firstChunk = chunksArray[fromIndex];
|
|
43
|
-
if (!firstChunk) {
|
|
44
|
-
return null;
|
|
45
|
-
}
|
|
46
|
-
// Verificar que el primer chunk es una comilla de apertura (doble o simple)
|
|
47
|
-
const firstValue = Array.from(firstChunk.value);
|
|
48
|
-
const firstStr = new TextDecoder().decode(new Uint8Array(firstValue));
|
|
49
|
-
if (firstStr !== '"' && firstStr !== "'") {
|
|
50
|
-
return null;
|
|
51
|
-
}
|
|
52
|
-
const quoteType = firstStr; // Guardar el tipo de comilla para buscar la misma al cerrar
|
|
53
|
-
// Buscar la comilla de cierre del mismo tipo
|
|
54
|
-
let endIndex = fromIndex + 1;
|
|
55
|
-
let escaped = false;
|
|
56
|
-
while (endIndex < chunksArray.length) {
|
|
57
|
-
const chunk = chunksArray[endIndex];
|
|
58
|
-
if (!chunk)
|
|
59
|
-
break;
|
|
60
|
-
const value = Array.from(chunk.value);
|
|
61
|
-
const str = new TextDecoder().decode(new Uint8Array(value));
|
|
62
|
-
if (escaped) {
|
|
63
|
-
// El carácter anterior era un backslash, este está escapado
|
|
64
|
-
escaped = false;
|
|
65
|
-
endIndex++;
|
|
66
|
-
continue;
|
|
67
|
-
}
|
|
68
|
-
if (str === "\\") {
|
|
69
|
-
// Backslash - el siguiente carácter estará escapado
|
|
70
|
-
escaped = true;
|
|
71
|
-
endIndex++;
|
|
72
|
-
continue;
|
|
73
|
-
}
|
|
74
|
-
if (str === quoteType) {
|
|
75
|
-
// Encontramos la comilla de cierre del mismo tipo (no escapada)
|
|
76
|
-
const matchedChunks = chunksArray.slice(fromIndex, endIndex + 1);
|
|
77
|
-
const matchedChunkList = new ChunkList(matchedChunks.length, matchedChunks);
|
|
78
|
-
return new MatchTokenExpressionResult(matchedChunkList, matchedChunks.length);
|
|
79
|
-
}
|
|
80
|
-
endIndex++;
|
|
81
|
-
}
|
|
82
|
-
// No se encontró comilla de cierre
|
|
83
|
-
return null;
|
|
84
|
-
};
|
|
85
|
-
});
|
|
86
|
-
static keyword = new TokenExpression((chunks, fromIndex) => {
|
|
87
|
-
return () => {
|
|
88
|
-
const chunksArray = Array.from(chunks.chunks);
|
|
89
|
-
// Verificar que hay al menos un chunk en fromIndex
|
|
90
|
-
if (fromIndex >= chunksArray.length) {
|
|
91
|
-
return null;
|
|
92
|
-
}
|
|
93
|
-
const firstChunk = chunksArray[fromIndex];
|
|
94
|
-
if (!firstChunk) {
|
|
95
|
-
return null;
|
|
96
|
-
}
|
|
97
|
-
// Verificar que el primer chunk contiene un keyword válido
|
|
98
|
-
const firstValue = Array.from(firstChunk.value);
|
|
99
|
-
const firstStr = new TextDecoder().decode(new Uint8Array(firstValue));
|
|
100
|
-
// Un keyword debe empezar con letras, guión bajo, o ciertos símbolos (/, -)
|
|
101
|
-
const startsWithKeywordChar = /^[a-zA-Z_][a-zA-Z0-9_]*$/.test(firstStr);
|
|
102
|
-
const startsWithSymbol = /^[\/\-]$/.test(firstStr);
|
|
103
|
-
if (!startsWithKeywordChar && !startsWithSymbol) {
|
|
104
|
-
return null;
|
|
105
|
-
}
|
|
106
|
-
// Consumir chunks consecutivos (sin espacios) para formar un keyword compuesto
|
|
107
|
-
const matchedChunks = [firstChunk];
|
|
108
|
-
let currentIndex = fromIndex + 1;
|
|
109
|
-
while (currentIndex < chunksArray.length) {
|
|
110
|
-
const nextChunk = chunksArray[currentIndex];
|
|
111
|
-
if (!nextChunk)
|
|
112
|
-
break;
|
|
113
|
-
const nextValue = Array.from(nextChunk.value);
|
|
114
|
-
const nextStr = new TextDecoder().decode(new Uint8Array(nextValue));
|
|
115
|
-
// Si es un espacio o salto de línea, terminamos
|
|
116
|
-
if (nextStr.trim() === "" || nextStr === "\n") {
|
|
117
|
-
break;
|
|
118
|
-
}
|
|
119
|
-
// Si es un keyword válido o un símbolo (excepto delimitadores), lo agregamos
|
|
120
|
-
const isKeywordPart = /^[a-zA-Z0-9_]+$/.test(nextStr);
|
|
121
|
-
const isSymbol = nextStr.length === 1 && !/[\s\n{}[\],]/.test(nextStr);
|
|
122
|
-
if (isKeywordPart || isSymbol) {
|
|
123
|
-
matchedChunks.push(nextChunk);
|
|
124
|
-
currentIndex++;
|
|
125
|
-
}
|
|
126
|
-
else {
|
|
127
|
-
// Es un delimitador, terminamos
|
|
128
|
-
break;
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
const matchedChunkList = new ChunkList(matchedChunks.length, matchedChunks);
|
|
132
|
-
return new MatchTokenExpressionResult(matchedChunkList, matchedChunks.length);
|
|
133
|
-
};
|
|
134
|
-
});
|
|
135
|
-
static punctuator = new TokenExpression((chunks, fromIndex) => {
|
|
136
|
-
return () => {
|
|
137
|
-
const chunksArray = Array.from(chunks.chunks);
|
|
138
|
-
if (fromIndex >= chunksArray.length) {
|
|
139
|
-
return null;
|
|
140
|
-
}
|
|
141
|
-
const chunk = chunksArray[fromIndex];
|
|
142
|
-
if (!chunk) {
|
|
143
|
-
return null;
|
|
144
|
-
}
|
|
145
|
-
const value = Array.from(chunk.value);
|
|
146
|
-
const str = new TextDecoder().decode(new Uint8Array(value));
|
|
147
|
-
if (["[", "]", "{", "}", ",", "+", "-", "/", "*", "<", ">"].includes(str)) {
|
|
148
|
-
const matchedChunks = [chunk];
|
|
149
|
-
const matchedChunkList = new ChunkList(1, matchedChunks);
|
|
150
|
-
return new MatchTokenExpressionResult(matchedChunkList, 1);
|
|
151
|
-
}
|
|
152
|
-
return null;
|
|
153
|
-
};
|
|
154
|
-
});
|
|
155
|
-
static newline = new TokenExpression((chunks, fromIndex) => {
|
|
156
|
-
return () => {
|
|
157
|
-
const chunksArray = Array.from(chunks.chunks);
|
|
158
|
-
if (fromIndex >= chunksArray.length) {
|
|
159
|
-
return null;
|
|
160
|
-
}
|
|
161
|
-
const chunk = chunksArray[fromIndex];
|
|
162
|
-
if (!chunk) {
|
|
163
|
-
return null;
|
|
164
|
-
}
|
|
165
|
-
const value = Array.from(chunk.value);
|
|
166
|
-
const str = new TextDecoder().decode(new Uint8Array(value));
|
|
167
|
-
if (str === "\n") {
|
|
168
|
-
const matchedChunks = [chunk];
|
|
169
|
-
const matchedChunkList = new ChunkList(1, matchedChunks);
|
|
170
|
-
return new MatchTokenExpressionResult(matchedChunkList, 1);
|
|
171
|
-
}
|
|
172
|
-
return null;
|
|
173
|
-
};
|
|
174
|
-
});
|
|
175
|
-
static booleanLiteral = new TokenExpression((chunks, fromIndex) => {
|
|
176
|
-
return () => {
|
|
177
|
-
const chunksArray = Array.from(chunks.chunks);
|
|
178
|
-
if (fromIndex >= chunksArray.length) {
|
|
179
|
-
return null;
|
|
180
|
-
}
|
|
181
|
-
const chunk = chunksArray[fromIndex];
|
|
182
|
-
if (!chunk) {
|
|
183
|
-
return null;
|
|
184
|
-
}
|
|
185
|
-
const value = Array.from(chunk.value);
|
|
186
|
-
const str = new TextDecoder().decode(new Uint8Array(value));
|
|
187
|
-
if (str === "true" || str === "false") {
|
|
188
|
-
const matchedChunks = [chunk];
|
|
189
|
-
const matchedChunkList = new ChunkList(1, matchedChunks);
|
|
190
|
-
return new MatchTokenExpressionResult(matchedChunkList, 1);
|
|
191
|
-
}
|
|
192
|
-
return null;
|
|
193
|
-
};
|
|
194
|
-
});
|
|
195
|
-
static nullLiteral = new TokenExpression((chunks, fromIndex) => {
|
|
196
|
-
return () => {
|
|
197
|
-
const chunksArray = Array.from(chunks.chunks);
|
|
198
|
-
if (fromIndex >= chunksArray.length) {
|
|
199
|
-
return null;
|
|
200
|
-
}
|
|
201
|
-
const chunk = chunksArray[fromIndex];
|
|
202
|
-
if (!chunk) {
|
|
203
|
-
return null;
|
|
204
|
-
}
|
|
205
|
-
const value = Array.from(chunk.value);
|
|
206
|
-
const str = new TextDecoder().decode(new Uint8Array(value));
|
|
207
|
-
if (str === "null") {
|
|
208
|
-
const matchedChunks = [chunk];
|
|
209
|
-
const matchedChunkList = new ChunkList(1, matchedChunks);
|
|
210
|
-
return new MatchTokenExpressionResult(matchedChunkList, 1);
|
|
211
|
-
}
|
|
212
|
-
return null;
|
|
213
|
-
};
|
|
214
|
-
});
|
|
215
|
-
static numberLiteral = new TokenExpression((chunks, fromIndex) => {
|
|
216
|
-
return () => {
|
|
217
|
-
const chunksArray = Array.from(chunks.chunks);
|
|
218
|
-
if (fromIndex >= chunksArray.length) {
|
|
219
|
-
return null;
|
|
220
|
-
}
|
|
221
|
-
const firstChunk = chunksArray[fromIndex];
|
|
222
|
-
if (!firstChunk) {
|
|
223
|
-
return null;
|
|
224
|
-
}
|
|
225
|
-
const firstValue = Array.from(firstChunk.value);
|
|
226
|
-
const firstStr = new TextDecoder().decode(new Uint8Array(firstValue));
|
|
227
|
-
// Debe empezar con un dígito
|
|
228
|
-
if (!/^[0-9][0-9_]*$/.test(firstStr)) {
|
|
229
|
-
return null;
|
|
230
|
-
}
|
|
231
|
-
let matchedChunks = [firstChunk];
|
|
232
|
-
let currentIndex = fromIndex + 1;
|
|
233
|
-
// Verificar si hay un punto decimal
|
|
234
|
-
if (currentIndex < chunksArray.length) {
|
|
235
|
-
const dotChunk = chunksArray[currentIndex];
|
|
236
|
-
if (dotChunk) {
|
|
237
|
-
const dotValue = Array.from(dotChunk.value);
|
|
238
|
-
const dotStr = new TextDecoder().decode(new Uint8Array(dotValue));
|
|
239
|
-
if (dotStr === ".") {
|
|
240
|
-
// Verificar que hay dígitos después del punto
|
|
241
|
-
if (currentIndex + 1 < chunksArray.length) {
|
|
242
|
-
const decimalChunk = chunksArray[currentIndex + 1];
|
|
243
|
-
if (decimalChunk) {
|
|
244
|
-
const decimalValue = Array.from(decimalChunk.value);
|
|
245
|
-
const decimalStr = new TextDecoder().decode(new Uint8Array(decimalValue));
|
|
246
|
-
if (/^[0-9_]+$/.test(decimalStr)) {
|
|
247
|
-
matchedChunks.push(dotChunk);
|
|
248
|
-
matchedChunks.push(decimalChunk);
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
const matchedChunkList = new ChunkList(matchedChunks.length, matchedChunks);
|
|
256
|
-
return new MatchTokenExpressionResult(matchedChunkList, matchedChunks.length);
|
|
257
|
-
};
|
|
258
|
-
});
|
|
259
|
-
static singleComment = new TokenExpression((chunks, fromIndex) => {
|
|
260
|
-
return () => {
|
|
261
|
-
const chunksArray = Array.from(chunks.chunks);
|
|
262
|
-
if (fromIndex >= chunksArray.length) {
|
|
263
|
-
return null;
|
|
264
|
-
}
|
|
265
|
-
const firstChunk = chunksArray[fromIndex];
|
|
266
|
-
if (!firstChunk) {
|
|
267
|
-
return null;
|
|
268
|
-
}
|
|
269
|
-
const firstValue = Array.from(firstChunk.value);
|
|
270
|
-
const firstStr = new TextDecoder().decode(new Uint8Array(firstValue));
|
|
271
|
-
let matchedChunks = [];
|
|
272
|
-
let currentIndex = fromIndex;
|
|
273
|
-
// Verificar si empieza con # (comentario de una sola línea)
|
|
274
|
-
if (firstStr === "#") {
|
|
275
|
-
matchedChunks = [firstChunk];
|
|
276
|
-
currentIndex = fromIndex + 1;
|
|
277
|
-
}
|
|
278
|
-
// Verificar si empieza con // (comentario de una sola línea)
|
|
279
|
-
else if (firstStr === "/") {
|
|
280
|
-
// Verificar que el siguiente chunk también es /
|
|
281
|
-
if (fromIndex + 1 >= chunksArray.length) {
|
|
282
|
-
return null;
|
|
283
|
-
}
|
|
284
|
-
const secondChunk = chunksArray[fromIndex + 1];
|
|
285
|
-
if (!secondChunk) {
|
|
286
|
-
return null;
|
|
287
|
-
}
|
|
288
|
-
const secondValue = Array.from(secondChunk.value);
|
|
289
|
-
const secondStr = new TextDecoder().decode(new Uint8Array(secondValue));
|
|
290
|
-
if (secondStr !== "/") {
|
|
291
|
-
return null;
|
|
292
|
-
}
|
|
293
|
-
matchedChunks = [firstChunk, secondChunk];
|
|
294
|
-
currentIndex = fromIndex + 2;
|
|
295
|
-
}
|
|
296
|
-
else {
|
|
297
|
-
return null;
|
|
298
|
-
}
|
|
299
|
-
// Capturar todo hasta el final de la línea (sin incluir \n)
|
|
300
|
-
while (currentIndex < chunksArray.length) {
|
|
301
|
-
const chunk = chunksArray[currentIndex];
|
|
302
|
-
if (!chunk)
|
|
303
|
-
break;
|
|
304
|
-
const value = Array.from(chunk.value);
|
|
305
|
-
const str = new TextDecoder().decode(new Uint8Array(value));
|
|
306
|
-
// Si encontramos un salto de línea, terminamos (sin incluirlo)
|
|
307
|
-
if (str === "\n") {
|
|
308
|
-
break;
|
|
309
|
-
}
|
|
310
|
-
matchedChunks.push(chunk);
|
|
311
|
-
currentIndex++;
|
|
312
|
-
}
|
|
313
|
-
const matchedChunkList = new ChunkList(matchedChunks.length, matchedChunks);
|
|
314
|
-
return new MatchTokenExpressionResult(matchedChunkList, matchedChunks.length);
|
|
315
|
-
};
|
|
316
|
-
});
|
|
317
|
-
static multilineComment = new TokenExpression((chunks, fromIndex) => {
|
|
318
|
-
return () => {
|
|
319
|
-
const chunksArray = Array.from(chunks.chunks);
|
|
320
|
-
if (fromIndex >= chunksArray.length) {
|
|
321
|
-
return null;
|
|
322
|
-
}
|
|
323
|
-
const firstChunk = chunksArray[fromIndex];
|
|
324
|
-
if (!firstChunk) {
|
|
325
|
-
return null;
|
|
326
|
-
}
|
|
327
|
-
const firstValue = Array.from(firstChunk.value);
|
|
328
|
-
const firstStr = new TextDecoder().decode(new Uint8Array(firstValue));
|
|
329
|
-
// Debe empezar con /*
|
|
330
|
-
if (firstStr !== "/") {
|
|
331
|
-
return null;
|
|
332
|
-
}
|
|
333
|
-
// Verificar que el siguiente chunk es *
|
|
334
|
-
if (fromIndex + 1 >= chunksArray.length) {
|
|
335
|
-
return null;
|
|
336
|
-
}
|
|
337
|
-
const secondChunk = chunksArray[fromIndex + 1];
|
|
338
|
-
if (!secondChunk) {
|
|
339
|
-
return null;
|
|
340
|
-
}
|
|
341
|
-
const secondValue = Array.from(secondChunk.value);
|
|
342
|
-
const secondStr = new TextDecoder().decode(new Uint8Array(secondValue));
|
|
343
|
-
if (secondStr !== "*") {
|
|
344
|
-
return null;
|
|
345
|
-
}
|
|
346
|
-
// Capturar todo hasta encontrar */
|
|
347
|
-
let matchedChunks = [firstChunk, secondChunk];
|
|
348
|
-
let currentIndex = fromIndex + 2;
|
|
349
|
-
while (currentIndex < chunksArray.length) {
|
|
350
|
-
const chunk = chunksArray[currentIndex];
|
|
351
|
-
if (!chunk)
|
|
352
|
-
break;
|
|
353
|
-
const value = Array.from(chunk.value);
|
|
354
|
-
const str = new TextDecoder().decode(new Uint8Array(value));
|
|
355
|
-
matchedChunks.push(chunk);
|
|
356
|
-
// Si encontramos *, verificar si el siguiente es /
|
|
357
|
-
if (str === "*") {
|
|
358
|
-
if (currentIndex + 1 < chunksArray.length) {
|
|
359
|
-
const nextChunk = chunksArray[currentIndex + 1];
|
|
360
|
-
if (nextChunk) {
|
|
361
|
-
const nextValue = Array.from(nextChunk.value);
|
|
362
|
-
const nextStr = new TextDecoder().decode(new Uint8Array(nextValue));
|
|
363
|
-
if (nextStr === "/") {
|
|
364
|
-
// Encontramos el cierre */
|
|
365
|
-
matchedChunks.push(nextChunk);
|
|
366
|
-
const matchedChunkList = new ChunkList(matchedChunks.length, matchedChunks);
|
|
367
|
-
return new MatchTokenExpressionResult(matchedChunkList, matchedChunks.length);
|
|
368
|
-
}
|
|
369
|
-
}
|
|
370
|
-
}
|
|
371
|
-
}
|
|
372
|
-
currentIndex++;
|
|
373
|
-
}
|
|
374
|
-
// No se encontró el cierre */
|
|
375
|
-
return null;
|
|
376
|
-
};
|
|
377
|
-
});
|
|
378
|
-
static heredoc = new TokenExpression((chunks, fromIndex) => {
|
|
379
|
-
return () => {
|
|
380
|
-
const chunksArray = Array.from(chunks.chunks);
|
|
381
|
-
if (fromIndex >= chunksArray.length) {
|
|
382
|
-
return null;
|
|
383
|
-
}
|
|
384
|
-
const firstChunk = chunksArray[fromIndex];
|
|
385
|
-
if (!firstChunk) {
|
|
386
|
-
return null;
|
|
387
|
-
}
|
|
388
|
-
const firstValue = Array.from(firstChunk.value);
|
|
389
|
-
const firstStr = new TextDecoder().decode(new Uint8Array(firstValue));
|
|
390
|
-
// Debe empezar con <<
|
|
391
|
-
if (firstStr !== "<") {
|
|
392
|
-
return null;
|
|
393
|
-
}
|
|
394
|
-
// Verificar que el siguiente chunk también es <
|
|
395
|
-
if (fromIndex + 1 >= chunksArray.length) {
|
|
396
|
-
return null;
|
|
397
|
-
}
|
|
398
|
-
const secondChunk = chunksArray[fromIndex + 1];
|
|
399
|
-
if (!secondChunk) {
|
|
400
|
-
return null;
|
|
401
|
-
}
|
|
402
|
-
const secondValue = Array.from(secondChunk.value);
|
|
403
|
-
const secondStr = new TextDecoder().decode(new Uint8Array(secondValue));
|
|
404
|
-
if (secondStr !== "<") {
|
|
405
|
-
return null;
|
|
406
|
-
}
|
|
407
|
-
let matchedChunks = [firstChunk, secondChunk];
|
|
408
|
-
let currentIndex = fromIndex + 2;
|
|
409
|
-
// Capturar el tag opcional (si existe)
|
|
410
|
-
if (currentIndex < chunksArray.length) {
|
|
411
|
-
const tagChunk = chunksArray[currentIndex];
|
|
412
|
-
if (tagChunk) {
|
|
413
|
-
const tagValue = Array.from(tagChunk.value);
|
|
414
|
-
const tagStr = new TextDecoder().decode(new Uint8Array(tagValue));
|
|
415
|
-
// Si es un keyword (letras/números/guiones bajos), es el tag
|
|
416
|
-
if (/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(tagStr)) {
|
|
417
|
-
matchedChunks.push(tagChunk);
|
|
418
|
-
currentIndex++;
|
|
419
|
-
}
|
|
420
|
-
}
|
|
421
|
-
}
|
|
422
|
-
// Debe haber un salto de línea después del << o <<TAG
|
|
423
|
-
if (currentIndex >= chunksArray.length) {
|
|
424
|
-
return null;
|
|
425
|
-
}
|
|
426
|
-
const newlineChunk = chunksArray[currentIndex];
|
|
427
|
-
if (!newlineChunk) {
|
|
428
|
-
return null;
|
|
429
|
-
}
|
|
430
|
-
const newlineValue = Array.from(newlineChunk.value);
|
|
431
|
-
const newlineStr = new TextDecoder().decode(new Uint8Array(newlineValue));
|
|
432
|
-
if (newlineStr !== "\n") {
|
|
433
|
-
return null;
|
|
434
|
-
}
|
|
435
|
-
matchedChunks.push(newlineChunk);
|
|
436
|
-
currentIndex++;
|
|
437
|
-
// Determinar la indentación de la línea donde está el <<
|
|
438
|
-
let directiveIndentation = 0;
|
|
439
|
-
for (let i = fromIndex - 1; i >= 0; i--) {
|
|
440
|
-
const prevChunk = chunksArray[i];
|
|
441
|
-
if (!prevChunk)
|
|
442
|
-
break;
|
|
443
|
-
const prevValue = Array.from(prevChunk.value);
|
|
444
|
-
const prevStr = new TextDecoder().decode(new Uint8Array(prevValue));
|
|
445
|
-
if (prevStr === "\n") {
|
|
446
|
-
// Encontramos el inicio de la línea, contar espacios después
|
|
447
|
-
let spaceIndex = i + 1;
|
|
448
|
-
while (spaceIndex < fromIndex) {
|
|
449
|
-
const spaceChunk = chunksArray[spaceIndex];
|
|
450
|
-
if (!spaceChunk)
|
|
451
|
-
break;
|
|
452
|
-
const spaceValue = Array.from(spaceChunk.value);
|
|
453
|
-
const spaceStr = new TextDecoder().decode(new Uint8Array(spaceValue));
|
|
454
|
-
if (spaceStr.trim() === "" && spaceStr !== "\n") {
|
|
455
|
-
directiveIndentation += spaceStr.length;
|
|
456
|
-
spaceIndex++;
|
|
457
|
-
}
|
|
458
|
-
else {
|
|
459
|
-
break;
|
|
460
|
-
}
|
|
461
|
-
}
|
|
462
|
-
break;
|
|
463
|
-
}
|
|
464
|
-
}
|
|
465
|
-
// Capturar contenido hasta encontrar una línea con indentación <= directiveIndentation
|
|
466
|
-
while (currentIndex < chunksArray.length) {
|
|
467
|
-
const chunk = chunksArray[currentIndex];
|
|
468
|
-
if (!chunk)
|
|
469
|
-
break;
|
|
470
|
-
const value = Array.from(chunk.value);
|
|
471
|
-
const str = new TextDecoder().decode(new Uint8Array(value));
|
|
472
|
-
// Si encontramos un salto de línea, verificar la siguiente línea
|
|
473
|
-
if (str === "\n") {
|
|
474
|
-
matchedChunks.push(chunk);
|
|
475
|
-
currentIndex++;
|
|
476
|
-
// Verificar la indentación de la siguiente línea
|
|
477
|
-
let lineIndentation = 0;
|
|
478
|
-
let checkIndex = currentIndex;
|
|
479
|
-
let hasContent = false;
|
|
480
|
-
// Contar espacios al inicio de la línea
|
|
481
|
-
while (checkIndex < chunksArray.length) {
|
|
482
|
-
const checkChunk = chunksArray[checkIndex];
|
|
483
|
-
if (!checkChunk)
|
|
484
|
-
break;
|
|
485
|
-
const checkValue = Array.from(checkChunk.value);
|
|
486
|
-
const checkStr = new TextDecoder().decode(new Uint8Array(checkValue));
|
|
487
|
-
if (checkStr.trim() === "" && checkStr !== "\n") {
|
|
488
|
-
lineIndentation += checkStr.length;
|
|
489
|
-
checkIndex++;
|
|
490
|
-
}
|
|
491
|
-
else if (checkStr === "\n") {
|
|
492
|
-
// Línea vacía, continuar con el contenido
|
|
493
|
-
break;
|
|
494
|
-
}
|
|
495
|
-
else {
|
|
496
|
-
// Hay contenido en esta línea
|
|
497
|
-
hasContent = true;
|
|
498
|
-
break;
|
|
499
|
-
}
|
|
500
|
-
}
|
|
501
|
-
// Si hay contenido y la indentación es <= a la de la directiva, terminar
|
|
502
|
-
if (hasContent && lineIndentation <= directiveIndentation) {
|
|
503
|
-
break;
|
|
504
|
-
}
|
|
505
|
-
}
|
|
506
|
-
else {
|
|
507
|
-
matchedChunks.push(chunk);
|
|
508
|
-
currentIndex++;
|
|
509
|
-
}
|
|
510
|
-
}
|
|
511
|
-
const matchedChunkList = new ChunkList(matchedChunks.length, matchedChunks);
|
|
512
|
-
return new MatchTokenExpressionResult(matchedChunkList, matchedChunks.length);
|
|
513
|
-
};
|
|
514
|
-
});
|
|
515
|
-
static whitespace = new TokenExpression((chunks, fromIndex) => {
|
|
516
|
-
return () => {
|
|
517
|
-
const chunksArray = Array.from(chunks.chunks);
|
|
518
|
-
if (fromIndex >= chunksArray.length) {
|
|
519
|
-
return null;
|
|
520
|
-
}
|
|
521
|
-
const chunk = chunksArray[fromIndex];
|
|
522
|
-
if (!chunk) {
|
|
523
|
-
return null;
|
|
524
|
-
}
|
|
525
|
-
const value = Array.from(chunk.value);
|
|
526
|
-
const str = new TextDecoder().decode(new Uint8Array(value));
|
|
527
|
-
// Verificar si es un espacio en blanco (sin incluir saltos de línea)
|
|
528
|
-
if (str.trim() === "" && !str.includes("\n")) {
|
|
529
|
-
const matchedChunks = [chunk];
|
|
530
|
-
const matchedChunkList = new ChunkList(1, matchedChunks);
|
|
531
|
-
return new MatchTokenExpressionResult(matchedChunkList, 1);
|
|
532
|
-
}
|
|
533
|
-
return null;
|
|
534
|
-
};
|
|
535
|
-
});
|
|
536
|
-
}
|
|
537
|
-
export class LexerEncoder {
|
|
538
|
-
encode(inpt) {
|
|
539
|
-
const chunkList = inpt instanceof ChunkList ? inpt : new ChunkEncoder().encode(inpt);
|
|
540
|
-
const expressions = {
|
|
541
|
-
singleComment: TokenExpression.singleComment,
|
|
542
|
-
multilineComment: TokenExpression.multilineComment,
|
|
543
|
-
whitespace: TokenExpression.whitespace,
|
|
544
|
-
heredoc: TokenExpression.heredoc,
|
|
545
|
-
string: TokenExpression.stringLiteral,
|
|
546
|
-
boolean: TokenExpression.booleanLiteral,
|
|
547
|
-
null: TokenExpression.nullLiteral,
|
|
548
|
-
number: TokenExpression.numberLiteral,
|
|
549
|
-
keyword: TokenExpression.keyword,
|
|
550
|
-
punctuator: TokenExpression.punctuator,
|
|
551
|
-
newline: TokenExpression.newline,
|
|
552
|
-
};
|
|
553
|
-
const hiddenExpressions = [
|
|
554
|
-
TokenExpression.singleComment,
|
|
555
|
-
TokenExpression.multilineComment,
|
|
556
|
-
TokenExpression.whitespace,
|
|
557
|
-
];
|
|
558
|
-
const tokens = [];
|
|
559
|
-
const chunksArray = Array.from(chunkList.chunks);
|
|
560
|
-
let currentIndex = 0;
|
|
561
|
-
while (currentIndex < chunksArray.length) {
|
|
562
|
-
const chunk = chunksArray[currentIndex];
|
|
563
|
-
if (!chunk)
|
|
564
|
-
break;
|
|
565
|
-
// Intentar hacer match con cada expresión
|
|
566
|
-
const expressionResult = this.findMatchingExpression(expressions, chunkList, currentIndex);
|
|
567
|
-
if (!expressionResult) {
|
|
568
|
-
// Chunk desconocido - generar error
|
|
569
|
-
const unknownValue = new TextDecoder().decode(new Uint8Array(Array.from(chunk.value)));
|
|
570
|
-
throw new Error(`Unknown token at position ${chunk.pos}: "${unknownValue}"`);
|
|
571
|
-
}
|
|
572
|
-
const { tokenType, expression, result } = expressionResult;
|
|
573
|
-
const isHidden = hiddenExpressions.includes(expression);
|
|
574
|
-
// Extraer el valor del token
|
|
575
|
-
const matchedChunks = Array.from(result.matched.chunks);
|
|
576
|
-
const tokenValue = matchedChunks
|
|
577
|
-
.map((c) => {
|
|
578
|
-
const v = Array.from(c.value);
|
|
579
|
-
return new TextDecoder().decode(new Uint8Array(v));
|
|
580
|
-
})
|
|
581
|
-
.join("");
|
|
582
|
-
// Solo agregar el token si no está oculto
|
|
583
|
-
if (!isHidden) {
|
|
584
|
-
tokens.push(new Token(tokenType, tokenValue));
|
|
585
|
-
}
|
|
586
|
-
currentIndex += result.length;
|
|
587
|
-
}
|
|
588
|
-
return new Lexema(tokens.length, tokens);
|
|
589
|
-
}
|
|
590
|
-
findMatchingExpression(expressions, chunkList, currentIndex) {
|
|
591
|
-
for (const [tokenType, expression] of Object.entries(expressions)) {
|
|
592
|
-
const result = expression.match(chunkList, currentIndex);
|
|
593
|
-
if (result !== null) {
|
|
594
|
-
return { tokenType, expression, result };
|
|
595
|
-
}
|
|
596
|
-
}
|
|
597
|
-
return null;
|
|
598
|
-
}
|
|
599
|
-
}
|
|
600
|
-
//# sourceMappingURL=lexer.js.map
|
package/lib/esm/lexer.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lexer.js","sourceRoot":"","sources":["../../src/lexer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../../../src/utils/inspect.ts"],"names":[],"mappings":"AAIA,KAAK,cAAc,GAAG;IACpB,iBAAiB;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,OAAO,GAAI,KAAK,OAAO,EAAE,UAAU,cAAc,WA2C7D,CAAC"}
|