-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
34 lines (30 loc) · 1.01 KB
/
index.js
File metadata and controls
34 lines (30 loc) · 1.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import { codeGenerator } from "./code-generator.js";
import { parser } from "./parser.js";
import { tokenizer } from "./tokenizer.js";
import { transform } from "./transformer.js";
import fs from "fs";
function compile(input) {
console.log("Input: ", input);
console.log("==========================");
console.log("Tokenizing...");
const tokens = tokenizer(input);
console.log("Tokens: ", tokens);
console.log("==========================");
console.log("Parsing...");
const ast = parser(tokens);
console.log("AST: ", JSON.stringify(ast, null, 2));
console.log("==========================");
const newAst = transform(ast);
console.log("Transformed AST: ", newAst);
console.log("==========================");
return codeGenerator(newAst);
}
function main() {
const inputFile = "input.c";
const input = fs.readFileSync(inputFile, "utf8");
const result = compile(input);
const outputFile = "output.uasm";
fs.writeFileSync(outputFile, result);
console.log(`File written to ${outputFile}`);
}
main();