37 lines
883 B
Plaintext
37 lines
883 B
Plaintext
// bootstrap.ce — regenerate .ast.json files consumed by the mach engine
|
|
// usage: cell bootstrap.ce
|
|
|
|
var fd = use("fd")
|
|
var json = use("json")
|
|
var tokenize = use("tokenize")
|
|
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"}
|
|
]
|
|
|
|
var i = 0
|
|
var entry = null
|
|
var src = null
|
|
var tok_result = null
|
|
var ast = null
|
|
var folded = null
|
|
var f = null
|
|
|
|
while (i < length(files)) {
|
|
entry = files[i]
|
|
src = text(fd.slurp(entry.src))
|
|
tok_result = tokenize(src, entry.src)
|
|
ast = parse(tok_result.tokens, src, entry.src, tokenize)
|
|
folded = fold(ast)
|
|
f = fd.open(entry.out, "w")
|
|
fd.write(f, json.encode(folded))
|
|
fd.close(f)
|
|
print(`wrote ${entry.out}`)
|
|
i = i + 1
|
|
}
|