bootstrap with serialized mach
This commit is contained in:
17
bootstrap.ce
17
bootstrap.ce
@@ -1,4 +1,4 @@
|
||||
// bootstrap.ce — regenerate .ast.json files consumed by the mach engine
|
||||
// bootstrap.ce — regenerate .mach bytecode files consumed by the mach engine
|
||||
// usage: cell bootstrap.ce
|
||||
|
||||
var fd = use("fd")
|
||||
@@ -8,10 +8,11 @@ var parse = use("parse")
|
||||
var fold = use("fold")
|
||||
|
||||
var files = [
|
||||
{src: "tokenize.cm", out: "tokenize.ast.json"},
|
||||
{src: "parse.cm", out: "parse.ast.json"},
|
||||
{src: "fold.cm", out: "fold.ast.json"},
|
||||
{src: "internal/bootstrap.cm", out: "internal/bootstrap.ast.json"}
|
||||
{src: "tokenize.cm", name: "tokenize", out: "tokenize.mach"},
|
||||
{src: "parse.cm", name: "parse", out: "parse.mach"},
|
||||
{src: "fold.cm", name: "fold", out: "fold.mach"},
|
||||
{src: "mcode.cm", name: "mcode", out: "mcode.mach"},
|
||||
{src: "internal/bootstrap.cm", name: "bootstrap", out: "internal/bootstrap.mach"}
|
||||
]
|
||||
|
||||
var i = 0
|
||||
@@ -20,6 +21,8 @@ var src = null
|
||||
var tok_result = null
|
||||
var ast = null
|
||||
var folded = null
|
||||
var ast_json = null
|
||||
var bytecode = null
|
||||
var f = null
|
||||
|
||||
while (i < length(files)) {
|
||||
@@ -28,8 +31,10 @@ while (i < length(files)) {
|
||||
tok_result = tokenize(src, entry.src)
|
||||
ast = parse(tok_result.tokens, src, entry.src, tokenize)
|
||||
folded = fold(ast)
|
||||
ast_json = json.encode(folded)
|
||||
bytecode = mach_compile_ast(entry.name, ast_json)
|
||||
f = fd.open(entry.out, "w")
|
||||
fd.write(f, json.encode(folded))
|
||||
fd.write(f, bytecode)
|
||||
fd.close(f)
|
||||
print(`wrote ${entry.out}`)
|
||||
i = i + 1
|
||||
|
||||
Reference in New Issue
Block a user