45 lines
1.1 KiB
YAML
45 lines
1.1 KiB
YAML
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!
|