From e88ed8866fab097c589f76fba4254357f8825e6f Mon Sep 17 00:00:00 2001 From: Mischa Untaga <99098079+MischaU8@users.noreply.github.com> Date: Sat, 4 Nov 2023 20:01:28 +0100 Subject: card and code tools --- tools/gencards.py | 1 + tools/gencode.js | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 tools/gencode.js diff --git a/tools/gencards.py b/tools/gencards.py index 1d22e87..d4461ff 100644 --- a/tools/gencards.py +++ b/tools/gencards.py @@ -70,3 +70,4 @@ if __name__ == "__main__": read_cards("states") print("const CARDS = " + json.dumps(cards)) + print("if (typeof module !== 'undefined') module.exports = {CARDS}") diff --git a/tools/gencode.js b/tools/gencode.js new file mode 100644 index 0000000..e2522e7 --- /dev/null +++ b/tools/gencode.js @@ -0,0 +1,63 @@ +"use strict" + +let fs = require("fs") + +let pc = 0 + +function emit(line) { + ++pc + line[0] = "vm_" + line[0] + for (let i = 1; i < line.length; ++i) { + if (typeof line[i] === "string") { + if (line[i] === "all") + line[i] = 999 + if (line[i][0] === "(" && !line[i].match(/\)=>/)) + line[i] = "()=>" + line[i] + if (line[i][0] === "`") + line[i] = "()=>" + line[i] + } + } + console.log("\t[ " + line.join(", ") + " ],") +} + +console.log("// #region GENERATED EVENT CODE") +console.log("const CODE = []") +let first = false + +for (let line of fs.readFileSync("events.txt", "utf-8").split("\n")) { + line = line.trim() + if (line.length === 0 || line[0] === "#") + continue + if (line === "EOF") + break + line = line.split(" ") + switch (line[0]) { + case "CARD": + if (first++) { + emit(["return"]) + console.log("]") + } + console.log("") + console.log("CODE[" + line[1] + "] = [ // " + line.slice(3).join(" ")) + break + + case "log": + case "prompt": + emit([ line[0], line.slice(1).join(" ") ]) + break + + case "asm": + case "if": + case "while": + emit([ line[0], "()=>" + line.slice(1).join(" ") ]) + break + + default: + emit(line) + break + } +} + +emit(["return"]) +console.log("]") +console.log("// #endregion") -- cgit v1.2.3