binja 0.6.0 → 0.7.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/dist/cli.js +0 -105
- package/dist/debug/index.js +427 -384
- package/dist/debug/panel.d.ts +10 -8
- package/dist/debug/panel.d.ts.map +1 -1
- package/dist/index.js +969 -493
- package/dist/lexer/index.d.ts +0 -4
- package/dist/lexer/index.d.ts.map +1 -1
- package/dist/runtime/index.d.ts +9 -0
- package/dist/runtime/index.d.ts.map +1 -1
- package/package.json +7 -19
- package/native/darwin-arm64/libbinja.dylib +0 -0
- package/native/darwin-x64/libbinja.dylib +0 -0
- package/native/linux-arm64/libbinja.so +0 -0
- package/native/linux-x64/libbinja.so +0 -0
package/dist/cli.js
CHANGED
|
@@ -20,103 +20,6 @@ var KEYWORDS = {
|
|
|
20
20
|
in: "NAME" /* NAME */
|
|
21
21
|
};
|
|
22
22
|
|
|
23
|
-
// src/lexer/hybrid.ts
|
|
24
|
-
var _tokenizeBatchFn = null;
|
|
25
|
-
function checkNative() {
|
|
26
|
-
return false;
|
|
27
|
-
}
|
|
28
|
-
var NATIVE_TO_TS = {
|
|
29
|
-
0: "TEXT" /* TEXT */,
|
|
30
|
-
1: "VARIABLE_START" /* VARIABLE_START */,
|
|
31
|
-
2: "VARIABLE_END" /* VARIABLE_END */,
|
|
32
|
-
3: "BLOCK_START" /* BLOCK_START */,
|
|
33
|
-
4: "BLOCK_END" /* BLOCK_END */,
|
|
34
|
-
5: "COMMENT_START" /* COMMENT_START */,
|
|
35
|
-
6: "COMMENT_END" /* COMMENT_END */,
|
|
36
|
-
7: "NAME" /* NAME */,
|
|
37
|
-
8: "STRING" /* STRING */,
|
|
38
|
-
9: "NUMBER" /* NUMBER */,
|
|
39
|
-
10: "NAME" /* NAME */,
|
|
40
|
-
11: "DOT" /* DOT */,
|
|
41
|
-
12: "COMMA" /* COMMA */,
|
|
42
|
-
13: "PIPE" /* PIPE */,
|
|
43
|
-
14: "COLON" /* COLON */,
|
|
44
|
-
15: "LPAREN" /* LPAREN */,
|
|
45
|
-
16: "RPAREN" /* RPAREN */,
|
|
46
|
-
17: "LBRACKET" /* LBRACKET */,
|
|
47
|
-
18: "RBRACKET" /* RBRACKET */,
|
|
48
|
-
19: "LBRACE" /* LBRACE */,
|
|
49
|
-
20: "RBRACE" /* RBRACE */,
|
|
50
|
-
21: "ASSIGN" /* ASSIGN */,
|
|
51
|
-
22: "EOF" /* EOF */
|
|
52
|
-
};
|
|
53
|
-
var OPERATOR_TO_TYPE = {
|
|
54
|
-
"==": "EQ" /* EQ */,
|
|
55
|
-
"!=": "NE" /* NE */,
|
|
56
|
-
"<": "LT" /* LT */,
|
|
57
|
-
">": "GT" /* GT */,
|
|
58
|
-
"<=": "LE" /* LE */,
|
|
59
|
-
">=": "GE" /* GE */,
|
|
60
|
-
"+": "ADD" /* ADD */,
|
|
61
|
-
"-": "SUB" /* SUB */,
|
|
62
|
-
"*": "MUL" /* MUL */,
|
|
63
|
-
"/": "DIV" /* DIV */,
|
|
64
|
-
"%": "MOD" /* MOD */,
|
|
65
|
-
"~": "TILDE" /* TILDE */
|
|
66
|
-
};
|
|
67
|
-
var KEYWORD_TO_TYPE = {
|
|
68
|
-
and: "AND" /* AND */,
|
|
69
|
-
or: "OR" /* OR */,
|
|
70
|
-
not: "NOT" /* NOT */
|
|
71
|
-
};
|
|
72
|
-
function isNativeAccelerated() {
|
|
73
|
-
return checkNative();
|
|
74
|
-
}
|
|
75
|
-
function tokenizeNative(source) {
|
|
76
|
-
if (!checkNative() || !_tokenizeBatchFn)
|
|
77
|
-
return null;
|
|
78
|
-
if (source.length === 0) {
|
|
79
|
-
return [{ type: "EOF" /* EOF */, value: "", line: 1, column: 1 }];
|
|
80
|
-
}
|
|
81
|
-
const rawTokens = _tokenizeBatchFn(source);
|
|
82
|
-
const lineStarts = [0];
|
|
83
|
-
for (let i = 0;i < source.length; i++) {
|
|
84
|
-
if (source[i] === `
|
|
85
|
-
`)
|
|
86
|
-
lineStarts.push(i + 1);
|
|
87
|
-
}
|
|
88
|
-
const tokens = new Array(rawTokens.length);
|
|
89
|
-
for (let i = 0;i < rawTokens.length; i++) {
|
|
90
|
-
const [nativeType, start, end] = rawTokens[i];
|
|
91
|
-
let value = source.slice(start, end);
|
|
92
|
-
let lo = 0, hi = lineStarts.length - 1;
|
|
93
|
-
while (lo < hi) {
|
|
94
|
-
const mid = lo + hi + 1 >> 1;
|
|
95
|
-
if (lineStarts[mid] <= start)
|
|
96
|
-
lo = mid;
|
|
97
|
-
else
|
|
98
|
-
hi = mid - 1;
|
|
99
|
-
}
|
|
100
|
-
const line = lo + 1;
|
|
101
|
-
const column = start - lineStarts[lo] + 1;
|
|
102
|
-
let type = NATIVE_TO_TS[nativeType] ?? "NAME" /* NAME */;
|
|
103
|
-
if (nativeType === 10 && OPERATOR_TO_TYPE[value]) {
|
|
104
|
-
type = OPERATOR_TO_TYPE[value];
|
|
105
|
-
} else if (type === "NAME" /* NAME */ && KEYWORD_TO_TYPE[value]) {
|
|
106
|
-
type = KEYWORD_TO_TYPE[value];
|
|
107
|
-
}
|
|
108
|
-
if (type === "STRING" /* STRING */ && value.length >= 2) {
|
|
109
|
-
const first = value[0];
|
|
110
|
-
const last = value[value.length - 1];
|
|
111
|
-
if (first === '"' && last === '"' || first === "'" && last === "'") {
|
|
112
|
-
value = value.slice(1, -1);
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
tokens[i] = { type, value, line, column };
|
|
116
|
-
}
|
|
117
|
-
return tokens;
|
|
118
|
-
}
|
|
119
|
-
|
|
120
23
|
// src/errors/index.ts
|
|
121
24
|
var colors = {
|
|
122
25
|
red: "\x1B[31m",
|
|
@@ -202,7 +105,6 @@ class Lexer {
|
|
|
202
105
|
blockEnd;
|
|
203
106
|
commentStart;
|
|
204
107
|
commentEnd;
|
|
205
|
-
useNative;
|
|
206
108
|
constructor(source, options = {}) {
|
|
207
109
|
this.state = {
|
|
208
110
|
source,
|
|
@@ -217,15 +119,8 @@ class Lexer {
|
|
|
217
119
|
this.blockEnd = options.blockEnd ?? "%}";
|
|
218
120
|
this.commentStart = options.commentStart ?? "{#";
|
|
219
121
|
this.commentEnd = options.commentEnd ?? "#}";
|
|
220
|
-
const hasCustomDelimiters = options.variableStart !== undefined || options.variableEnd !== undefined || options.blockStart !== undefined || options.blockEnd !== undefined || options.commentStart !== undefined || options.commentEnd !== undefined;
|
|
221
|
-
this.useNative = !hasCustomDelimiters && isNativeAccelerated();
|
|
222
122
|
}
|
|
223
123
|
tokenize() {
|
|
224
|
-
if (this.useNative) {
|
|
225
|
-
const nativeTokens = tokenizeNative(this.state.source);
|
|
226
|
-
if (nativeTokens)
|
|
227
|
-
return nativeTokens;
|
|
228
|
-
}
|
|
229
124
|
while (!this.isAtEnd()) {
|
|
230
125
|
this.scanToken();
|
|
231
126
|
}
|