Files
cell/bootstrap.ce
2026-02-09 22:21:55 -06:00

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
}