arc-lang 0.5.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/LICENSE +21 -0
- package/README.md +148 -0
- package/dist/ast.d.ts +298 -0
- package/dist/ast.js +2 -0
- package/dist/build.d.ts +7 -0
- package/dist/build.js +138 -0
- package/dist/codegen-js.d.ts +2 -0
- package/dist/codegen-js.js +168 -0
- package/dist/codegen.d.ts +2 -0
- package/dist/codegen.js +364 -0
- package/dist/errors.d.ts +52 -0
- package/dist/errors.js +229 -0
- package/dist/formatter.d.ts +5 -0
- package/dist/formatter.js +361 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +165 -0
- package/dist/interpreter.d.ts +39 -0
- package/dist/interpreter.js +668 -0
- package/dist/ir.d.ts +126 -0
- package/dist/ir.js +610 -0
- package/dist/lexer.d.ts +79 -0
- package/dist/lexer.js +335 -0
- package/dist/linter.d.ts +15 -0
- package/dist/linter.js +382 -0
- package/dist/lsp.d.ts +1 -0
- package/dist/lsp.js +253 -0
- package/dist/modules.d.ts +24 -0
- package/dist/modules.js +115 -0
- package/dist/optimizer.d.ts +17 -0
- package/dist/optimizer.js +481 -0
- package/dist/package-manager.d.ts +31 -0
- package/dist/package-manager.js +180 -0
- package/dist/parser.d.ts +42 -0
- package/dist/parser.js +779 -0
- package/dist/repl.d.ts +1 -0
- package/dist/repl.js +120 -0
- package/dist/security.d.ts +48 -0
- package/dist/security.js +198 -0
- package/dist/semantic.d.ts +7 -0
- package/dist/semantic.js +327 -0
- package/dist/typechecker.d.ts +7 -0
- package/dist/typechecker.js +132 -0
- package/dist/version.d.ts +26 -0
- package/dist/version.js +71 -0
- package/package.json +51 -0
package/dist/ir.d.ts
ADDED
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import * as AST from "./ast.js";
|
|
2
|
+
export type IRInstr = {
|
|
3
|
+
op: "const";
|
|
4
|
+
dest: string;
|
|
5
|
+
value: number | string | boolean | null;
|
|
6
|
+
} | {
|
|
7
|
+
op: "load";
|
|
8
|
+
dest: string;
|
|
9
|
+
name: string;
|
|
10
|
+
} | {
|
|
11
|
+
op: "store";
|
|
12
|
+
name: string;
|
|
13
|
+
src: string;
|
|
14
|
+
} | {
|
|
15
|
+
op: "binop";
|
|
16
|
+
dest: string;
|
|
17
|
+
operator: string;
|
|
18
|
+
left: string;
|
|
19
|
+
right: string;
|
|
20
|
+
} | {
|
|
21
|
+
op: "unop";
|
|
22
|
+
dest: string;
|
|
23
|
+
operator: string;
|
|
24
|
+
operand: string;
|
|
25
|
+
} | {
|
|
26
|
+
op: "call";
|
|
27
|
+
dest: string;
|
|
28
|
+
fn: string;
|
|
29
|
+
args: string[];
|
|
30
|
+
} | {
|
|
31
|
+
op: "toolcall";
|
|
32
|
+
dest: string;
|
|
33
|
+
method: string;
|
|
34
|
+
url: string;
|
|
35
|
+
body?: string;
|
|
36
|
+
} | {
|
|
37
|
+
op: "field";
|
|
38
|
+
dest: string;
|
|
39
|
+
obj: string;
|
|
40
|
+
prop: string;
|
|
41
|
+
} | {
|
|
42
|
+
op: "index";
|
|
43
|
+
dest: string;
|
|
44
|
+
obj: string;
|
|
45
|
+
idx: string;
|
|
46
|
+
} | {
|
|
47
|
+
op: "setfield";
|
|
48
|
+
obj: string;
|
|
49
|
+
prop: string;
|
|
50
|
+
src: string;
|
|
51
|
+
} | {
|
|
52
|
+
op: "setindex";
|
|
53
|
+
obj: string;
|
|
54
|
+
idx: string;
|
|
55
|
+
src: string;
|
|
56
|
+
} | {
|
|
57
|
+
op: "jump";
|
|
58
|
+
target: string;
|
|
59
|
+
} | {
|
|
60
|
+
op: "branch";
|
|
61
|
+
cond: string;
|
|
62
|
+
ifTrue: string;
|
|
63
|
+
ifFalse: string;
|
|
64
|
+
} | {
|
|
65
|
+
op: "phi";
|
|
66
|
+
dest: string;
|
|
67
|
+
sources: {
|
|
68
|
+
block: string;
|
|
69
|
+
value: string;
|
|
70
|
+
}[];
|
|
71
|
+
} | {
|
|
72
|
+
op: "ret";
|
|
73
|
+
value?: string;
|
|
74
|
+
} | {
|
|
75
|
+
op: "list";
|
|
76
|
+
dest: string;
|
|
77
|
+
elements: string[];
|
|
78
|
+
} | {
|
|
79
|
+
op: "map";
|
|
80
|
+
dest: string;
|
|
81
|
+
keys: string[];
|
|
82
|
+
values: string[];
|
|
83
|
+
} | {
|
|
84
|
+
op: "label";
|
|
85
|
+
name: string;
|
|
86
|
+
} | {
|
|
87
|
+
op: "print";
|
|
88
|
+
value: string;
|
|
89
|
+
} | {
|
|
90
|
+
op: "range";
|
|
91
|
+
dest: string;
|
|
92
|
+
start: string;
|
|
93
|
+
end: string;
|
|
94
|
+
} | {
|
|
95
|
+
op: "nop";
|
|
96
|
+
};
|
|
97
|
+
export interface IRBlock {
|
|
98
|
+
label: string;
|
|
99
|
+
instrs: IRInstr[];
|
|
100
|
+
}
|
|
101
|
+
export interface IRFunction {
|
|
102
|
+
name: string;
|
|
103
|
+
params: string[];
|
|
104
|
+
blocks: IRBlock[];
|
|
105
|
+
}
|
|
106
|
+
export interface IRModule {
|
|
107
|
+
functions: IRFunction[];
|
|
108
|
+
main: IRBlock[];
|
|
109
|
+
}
|
|
110
|
+
export declare class IRGenerator {
|
|
111
|
+
private tempCount;
|
|
112
|
+
private labelCount;
|
|
113
|
+
private functions;
|
|
114
|
+
private currentInstrs;
|
|
115
|
+
private temp;
|
|
116
|
+
private label;
|
|
117
|
+
private emit;
|
|
118
|
+
generateIR(program: AST.Program): IRModule;
|
|
119
|
+
private lowerStmt;
|
|
120
|
+
private lowerExpr;
|
|
121
|
+
private lowerPattern;
|
|
122
|
+
private bindPattern;
|
|
123
|
+
}
|
|
124
|
+
export declare function printIR(module: IRModule): string;
|
|
125
|
+
export declare function generateIR(program: AST.Program): IRModule;
|
|
126
|
+
export declare function generateIRFromSource(source: string): IRModule;
|