id: "tabloid" name: "Tabloid" install: scripts: tabloid: | #!/usr/bin/env node const fs = require("fs"); const args = process.argv.slice(2); if (args.length !== 1) { console.error("usage: run.js FILE"); process.exit(1); } const lang = require("/opt/tabloid/lang"); const program = fs.readFileSync(args[0], "utf-8"); const tokens = lang.tokenize(program); const parser = new lang.Parser(tokens); const ast = parser.parse(); const runtime = { print: (s) => console.log(s.toString().toUpperCase() + "!") }; const env = new lang.Environment(runtime); env.run(ast); manual: | install -d "${pkg}/opt/tabloid" pushd "${pkg}/opt/tabloid" wget https://github.com/thesephist/tabloid/raw/master/static/js/lang.js cat <<"EOF" >> lang.js module.exports = { tokenize, Parser, Environment }; EOF popd main: "main.tabloid" template: | YOU WON'T WANT TO MISS "Hello, world" PLEASE LIKE AND SUBSCRIBE run: | tabloid main.tabloid hello: | HELLO, WORLD!