xbintsc 0.1.3 → 0.1.8
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/README.md +14 -13
- package/dist/src/ast/common.d.ts +33 -0
- package/dist/src/ast/common.js +7 -0
- package/dist/src/ast/common.js.map +1 -0
- package/dist/src/ast/declarations.d.ts +110 -0
- package/dist/src/ast/declarations.js +5 -0
- package/dist/src/ast/declarations.js.map +1 -0
- package/dist/src/ast/expressions.d.ts +219 -0
- package/dist/src/ast/expressions.js +6 -0
- package/dist/src/ast/expressions.js.map +1 -0
- package/dist/src/ast/kinds.d.ts +160 -0
- package/dist/src/ast/kinds.js +171 -0
- package/dist/src/ast/kinds.js.map +1 -0
- package/dist/src/ast/modules.d.ts +61 -0
- package/dist/src/ast/modules.js +5 -0
- package/dist/src/ast/modules.js.map +1 -0
- package/dist/src/ast/nodes.d.ts +11 -839
- package/dist/src/ast/nodes.js +11 -237
- package/dist/src/ast/nodes.js.map +1 -1
- package/dist/src/ast/operators.d.ts +71 -0
- package/dist/src/ast/operators.js +77 -0
- package/dist/src/ast/operators.js.map +1 -0
- package/dist/src/ast/statements.d.ts +120 -0
- package/dist/src/ast/statements.js +5 -0
- package/dist/src/ast/statements.js.map +1 -0
- package/dist/src/ast/types.d.ts +123 -0
- package/dist/src/ast/types.js +6 -0
- package/dist/src/ast/types.js.map +1 -0
- package/dist/src/codegen/generator/calls.d.ts +22 -0
- package/dist/src/codegen/generator/calls.js +301 -0
- package/dist/src/codegen/generator/calls.js.map +1 -0
- package/dist/src/codegen/generator/context.d.ts +45 -0
- package/dist/src/codegen/generator/context.js +128 -0
- package/dist/src/codegen/generator/context.js.map +1 -0
- package/dist/src/codegen/generator/expressions.d.ts +22 -0
- package/dist/src/codegen/generator/expressions.js +383 -0
- package/dist/src/codegen/generator/expressions.js.map +1 -0
- package/dist/src/codegen/generator/generator.d.ts +22 -0
- package/dist/src/codegen/generator/generator.js +21 -0
- package/dist/src/codegen/generator/generator.js.map +1 -0
- package/dist/src/codegen/generator/module.d.ts +15 -0
- package/dist/src/codegen/generator/module.js +114 -0
- package/dist/src/codegen/generator/module.js.map +1 -0
- package/dist/src/codegen/generator/state.d.ts +40 -0
- package/dist/src/codegen/generator/state.js +84 -0
- package/dist/src/codegen/generator/state.js.map +1 -0
- package/dist/src/codegen/generator/statements.d.ts +22 -0
- package/dist/src/codegen/generator/statements.js +425 -0
- package/dist/src/codegen/generator/statements.js.map +1 -0
- package/dist/src/codegen/generator/tables.d.ts +19 -0
- package/dist/src/codegen/generator/tables.js +153 -0
- package/dist/src/codegen/generator/tables.js.map +1 -0
- package/dist/src/codegen/llvm.d.ts +4 -13
- package/dist/src/codegen/llvm.js +4 -1159
- package/dist/src/codegen/llvm.js.map +1 -1
- package/dist/src/driver/compiler.js +13 -4
- package/dist/src/driver/compiler.js.map +1 -1
- package/dist/src/lexer/char.d.ts +78 -0
- package/dist/src/lexer/char.js +106 -0
- package/dist/src/lexer/char.js.map +1 -0
- package/dist/src/lexer/scanner.js +1 -98
- package/dist/src/lexer/scanner.js.map +1 -1
- package/dist/src/parser/context.d.ts +58 -0
- package/dist/src/parser/context.js +174 -0
- package/dist/src/parser/context.js.map +1 -0
- package/dist/src/parser/declarations.d.ts +26 -0
- package/dist/src/parser/declarations.js +461 -0
- package/dist/src/parser/declarations.js.map +1 -0
- package/dist/src/parser/expressions.d.ts +27 -0
- package/dist/src/parser/expressions.js +437 -0
- package/dist/src/parser/expressions.js.map +1 -0
- package/dist/src/parser/helpers.d.ts +7 -0
- package/dist/src/parser/helpers.js +36 -0
- package/dist/src/parser/helpers.js.map +1 -0
- package/dist/src/parser/literals.d.ts +16 -0
- package/dist/src/parser/literals.js +193 -0
- package/dist/src/parser/literals.js.map +1 -0
- package/dist/src/parser/modules.d.ts +12 -0
- package/dist/src/parser/modules.js +175 -0
- package/dist/src/parser/modules.js.map +1 -0
- package/dist/src/parser/operators.d.ts +12 -0
- package/dist/src/parser/operators.js +172 -0
- package/dist/src/parser/operators.js.map +1 -0
- package/dist/src/parser/parser.d.ts +17 -122
- package/dist/src/parser/parser.js +18 -2307
- package/dist/src/parser/parser.js.map +1 -1
- package/dist/src/parser/speculation.d.ts +6 -0
- package/dist/src/parser/speculation.js +10 -0
- package/dist/src/parser/speculation.js.map +1 -0
- package/dist/src/parser/statements.d.ts +28 -0
- package/dist/src/parser/statements.js +402 -0
- package/dist/src/parser/statements.js.map +1 -0
- package/dist/src/parser/types.d.ts +21 -0
- package/dist/src/parser/types.js +338 -0
- package/dist/src/parser/types.js.map +1 -0
- package/dist/tests/e2e/compile.test.js +122 -2
- package/dist/tests/e2e/compile.test.js.map +1 -1
- package/dist/tests/parser/parser.test.js +9 -1
- package/dist/tests/parser/parser.test.js.map +1 -1
- package/package.json +1 -1
- package/runtime/rt.h +32 -0
- package/runtime/rt_internal.h +106 -0
- package/runtime/xt_alloc.c +38 -0
- package/runtime/xt_builtins.c +192 -0
- package/runtime/xt_containers.c +225 -0
- package/runtime/xt_io.c +133 -0
- package/runtime/xt_stdlib.c +502 -0
- package/runtime/xt_values.c +291 -0
- package/scripts/build-runtime.mjs +8 -1
- package/src/ast/common.ts +210 -0
- package/src/ast/declarations.ts +130 -0
- package/src/ast/expressions.ts +275 -0
- package/src/ast/kinds.ts +176 -0
- package/src/ast/modules.ts +73 -0
- package/src/ast/nodes.ts +11 -1101
- package/src/ast/operators.ts +76 -0
- package/src/ast/statements.ts +148 -0
- package/src/ast/types.ts +173 -0
- package/src/codegen/generator/calls.ts +355 -0
- package/src/codegen/generator/context.ts +156 -0
- package/src/codegen/generator/expressions.ts +431 -0
- package/src/codegen/generator/generator.ts +35 -0
- package/src/codegen/generator/module.ts +139 -0
- package/src/codegen/generator/state.ts +126 -0
- package/src/codegen/generator/statements.ts +474 -0
- package/src/codegen/generator/tables.ts +171 -0
- package/src/codegen/llvm.ts +4 -1305
- package/src/driver/compiler.ts +17 -5
- package/src/lexer/char.ts +116 -0
- package/src/lexer/scanner.ts +9 -109
- package/src/parser/context.ts +196 -0
- package/src/parser/declarations.ts +502 -0
- package/src/parser/expressions.ts +465 -0
- package/src/parser/helpers.ts +42 -0
- package/src/parser/literals.ts +207 -0
- package/src/parser/modules.ts +194 -0
- package/src/parser/operators.ts +181 -0
- package/src/parser/parser.ts +35 -2369
- package/src/parser/speculation.ts +9 -0
- package/src/parser/statements.ts +457 -0
- package/src/parser/types.ts +365 -0
- package/runtime/xt_runtime.c +0 -682
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Static tables and small pure helpers used by the LLVM generator.
|
|
3
|
+
*/
|
|
4
|
+
import { BinaryOperator, SyntaxKind, } from "../../ast/nodes.js";
|
|
5
|
+
export const BINARY_RUNTIME = {
|
|
6
|
+
[BinaryOperator.Add]: "xt_add",
|
|
7
|
+
[BinaryOperator.Subtract]: "xt_sub",
|
|
8
|
+
[BinaryOperator.Multiply]: "xt_mul",
|
|
9
|
+
[BinaryOperator.Divide]: "xt_div",
|
|
10
|
+
[BinaryOperator.Remainder]: "xt_mod",
|
|
11
|
+
[BinaryOperator.Exponent]: "xt_pow",
|
|
12
|
+
[BinaryOperator.LessThan]: "xt_lt",
|
|
13
|
+
[BinaryOperator.LessThanEquals]: "xt_le",
|
|
14
|
+
[BinaryOperator.GreaterThan]: "xt_gt",
|
|
15
|
+
[BinaryOperator.GreaterThanEquals]: "xt_ge",
|
|
16
|
+
[BinaryOperator.EqualsEquals]: "xt_eq",
|
|
17
|
+
[BinaryOperator.ExclamationEquals]: "xt_ne",
|
|
18
|
+
[BinaryOperator.EqualsEqualsEquals]: "xt_seq",
|
|
19
|
+
[BinaryOperator.ExclamationEqualsEquals]: "xt_sne",
|
|
20
|
+
[BinaryOperator.Ampersand]: "xt_bit_and",
|
|
21
|
+
[BinaryOperator.Bar]: "xt_bit_or",
|
|
22
|
+
[BinaryOperator.Caret]: "xt_bit_xor",
|
|
23
|
+
[BinaryOperator.LessThanLessThan]: "xt_shl",
|
|
24
|
+
[BinaryOperator.GreaterThanGreaterThan]: "xt_shr",
|
|
25
|
+
[BinaryOperator.GreaterThanGreaterThanGreaterThan]: "xt_ushr",
|
|
26
|
+
[BinaryOperator.In]: "xt_in",
|
|
27
|
+
};
|
|
28
|
+
export const CONSOLE_METHODS = {
|
|
29
|
+
log: "xt_console_log",
|
|
30
|
+
info: "xt_console_info",
|
|
31
|
+
warn: "xt_console_warn",
|
|
32
|
+
error: "xt_console_error",
|
|
33
|
+
};
|
|
34
|
+
export const MATH_FUNCTIONS = new Set([
|
|
35
|
+
"abs", "floor", "ceil", "round", "trunc", "sqrt", "cbrt", "pow", "exp", "log", "log2", "log10",
|
|
36
|
+
"sin", "cos", "tan", "asin", "acos", "atan", "atan2", "hypot", "sign", "random", "min", "max",
|
|
37
|
+
]);
|
|
38
|
+
export const MATH_CONSTANTS = {
|
|
39
|
+
PI: Math.PI,
|
|
40
|
+
E: Math.E,
|
|
41
|
+
LN2: Math.LN2,
|
|
42
|
+
LN10: Math.LN10,
|
|
43
|
+
LOG2E: Math.LOG2E,
|
|
44
|
+
LOG10E: Math.LOG10E,
|
|
45
|
+
SQRT2: Math.SQRT2,
|
|
46
|
+
SQRT1_2: Math.SQRT1_2,
|
|
47
|
+
};
|
|
48
|
+
export const GLOBAL_FUNCTIONS = {
|
|
49
|
+
parseInt: "xt_parse_int",
|
|
50
|
+
parseFloat: "xt_parse_float",
|
|
51
|
+
isNaN: "xt_is_nan",
|
|
52
|
+
isFinite: "xt_is_finite",
|
|
53
|
+
Number: "xt_number_ctor",
|
|
54
|
+
String: "xt_string_ctor",
|
|
55
|
+
Boolean: "xt_boolean_ctor",
|
|
56
|
+
};
|
|
57
|
+
export const BUILTIN_METHODS = new Set([
|
|
58
|
+
"push", "pop", "shift", "unshift", "join", "slice", "indexOf", "includes", "map", "forEach", "filter",
|
|
59
|
+
"reduce", "concat", "reverse", "charAt", "charCodeAt", "substring", "substr", "split", "toUpperCase",
|
|
60
|
+
"toLowerCase", "trim", "replace", "repeat", "startsWith", "endsWith",
|
|
61
|
+
]);
|
|
62
|
+
export const ASSIGNMENT_OPERATORS = new Set([
|
|
63
|
+
"=",
|
|
64
|
+
"+=",
|
|
65
|
+
"-=",
|
|
66
|
+
"*=",
|
|
67
|
+
"/=",
|
|
68
|
+
"%=",
|
|
69
|
+
"**=",
|
|
70
|
+
"<<=",
|
|
71
|
+
">>=",
|
|
72
|
+
">>>=",
|
|
73
|
+
"&=",
|
|
74
|
+
"|=",
|
|
75
|
+
"^=",
|
|
76
|
+
"&&=",
|
|
77
|
+
"||=",
|
|
78
|
+
"??=",
|
|
79
|
+
]);
|
|
80
|
+
export function isAssignmentOperator(operator) {
|
|
81
|
+
return ASSIGNMENT_OPERATORS.has(operator);
|
|
82
|
+
}
|
|
83
|
+
export function compoundToBinary(operator) {
|
|
84
|
+
const text = operator.slice(0, -1);
|
|
85
|
+
return text;
|
|
86
|
+
}
|
|
87
|
+
export function propertyNameText(name) {
|
|
88
|
+
switch (name.kind) {
|
|
89
|
+
case SyntaxKind.Identifier:
|
|
90
|
+
case SyntaxKind.PrivateIdentifier:
|
|
91
|
+
return name.text;
|
|
92
|
+
case SyntaxKind.StringLiteral:
|
|
93
|
+
return name.value;
|
|
94
|
+
case SyntaxKind.NumericLiteral:
|
|
95
|
+
return String(name.value);
|
|
96
|
+
default:
|
|
97
|
+
return "";
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/** Human readable syntax kind for diagnostics (const enums have no reverse map). */
|
|
101
|
+
export function kindName(kind) {
|
|
102
|
+
const entry = KIND_NAMES.get(kind);
|
|
103
|
+
return entry ?? String(kind);
|
|
104
|
+
}
|
|
105
|
+
export const KIND_NAMES = new Map([
|
|
106
|
+
[SyntaxKind.CallExpression, "call expression"],
|
|
107
|
+
[SyntaxKind.NewExpression, "new expression"],
|
|
108
|
+
[SyntaxKind.ClassDeclaration, "class declaration"],
|
|
109
|
+
[SyntaxKind.ClassExpression, "class expression"],
|
|
110
|
+
[SyntaxKind.EnumDeclaration, "enum declaration"],
|
|
111
|
+
[SyntaxKind.SwitchStatement, "switch statement"],
|
|
112
|
+
[SyntaxKind.TryStatement, "try statement"],
|
|
113
|
+
[SyntaxKind.SpreadElement, "spread element"],
|
|
114
|
+
[SyntaxKind.ThisKeyword, "this expression"],
|
|
115
|
+
[SyntaxKind.RegularExpressionLiteral, "regular expression"],
|
|
116
|
+
[SyntaxKind.TaggedTemplateExpression, "tagged template"],
|
|
117
|
+
[SyntaxKind.DeleteExpression, "delete expression"],
|
|
118
|
+
[SyntaxKind.AwaitExpression, "await expression"],
|
|
119
|
+
[SyntaxKind.YieldExpression, "yield expression"],
|
|
120
|
+
[SyntaxKind.SwitchStatement, "switch statement"],
|
|
121
|
+
]);
|
|
122
|
+
export function utf8Bytes(text) {
|
|
123
|
+
const bytes = [];
|
|
124
|
+
for (const character of text) {
|
|
125
|
+
const code = character.codePointAt(0);
|
|
126
|
+
if (code < 0x80)
|
|
127
|
+
bytes.push(code);
|
|
128
|
+
else if (code < 0x800) {
|
|
129
|
+
bytes.push(0xc0 | (code >> 6), 0x80 | (code & 0x3f));
|
|
130
|
+
}
|
|
131
|
+
else if (code < 0x10000) {
|
|
132
|
+
bytes.push(0xe0 | (code >> 12), 0x80 | ((code >> 6) & 0x3f), 0x80 | (code & 0x3f));
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
bytes.push(0xf0 | (code >> 18), 0x80 | ((code >> 12) & 0x3f), 0x80 | ((code >> 6) & 0x3f), 0x80 | (code & 0x3f));
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
return bytes;
|
|
139
|
+
}
|
|
140
|
+
export function escapeBytes(bytes) {
|
|
141
|
+
return bytes
|
|
142
|
+
.map((byte) => {
|
|
143
|
+
if (byte === 0x22)
|
|
144
|
+
return '\\22';
|
|
145
|
+
if (byte === 0x5c)
|
|
146
|
+
return '\\5C';
|
|
147
|
+
if (byte >= 0x20 && byte < 0x7f)
|
|
148
|
+
return String.fromCharCode(byte);
|
|
149
|
+
return `\\${byte.toString(16).toUpperCase().padStart(2, "0")}`;
|
|
150
|
+
})
|
|
151
|
+
.join("");
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=tables.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tables.js","sourceRoot":"","sources":["../../../../src/codegen/generator/tables.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,17 +15,8 @@
|
|
|
15
15
|
*
|
|
16
16
|
* Later pipeline stages (optimization passes, object emission) live in the
|
|
17
17
|
* driver; this module only produces IR text.
|
|
18
|
+
*
|
|
19
|
+
* The implementation is split by function under `./generator/`; this module is
|
|
20
|
+
* the stable entry point.
|
|
18
21
|
*/
|
|
19
|
-
|
|
20
|
-
import { type BindResult } from "../binder/binder.js";
|
|
21
|
-
import type { DiagnosticBag } from "../diagnostics/diagnostic.js";
|
|
22
|
-
import type { BuiltinFunction } from "../extensions/registry.js";
|
|
23
|
-
export interface CodegenResult {
|
|
24
|
-
readonly ir: string;
|
|
25
|
-
readonly binding: BindResult;
|
|
26
|
-
}
|
|
27
|
-
export interface CodegenOptions {
|
|
28
|
-
/** Global names supplied by registered extensions. */
|
|
29
|
-
readonly builtins?: Readonly<Record<string, BuiltinFunction>>;
|
|
30
|
-
}
|
|
31
|
-
export declare function generate(sourceFile: SourceFileNode, diagnostics: DiagnosticBag, options?: CodegenOptions): CodegenResult;
|
|
22
|
+
export { generate, type CodegenOptions, type CodegenResult } from "./generator/generator.js";
|