diff options
Diffstat (limited to 'gencode.js')
-rw-r--r-- | gencode.js | 107 |
1 files changed, 0 insertions, 107 deletions
diff --git a/gencode.js b/gencode.js deleted file mode 100644 index 6e66a02..0000000 --- a/gencode.js +++ /dev/null @@ -1,107 +0,0 @@ -"use strict" - -let fs = require("fs") - -let pc = 0 - -function tokenize(s) { - let list = [] - let p = 0, - n = s.length - while (p < n) { - while (p < n && s[p] === " ") - ++p - if (p < n) { - let m = p - while (p < n && s[p] !== " ") { - let q = s[p++] - switch (q) { - case "(": - case "[": - case "{": - for (let x = 1; p < n && x > 0; ++p) { - switch (s[p]) { - case "(": - case "[": - case "{": - ++x - break - case ")": - case "]": - case "}": - --x - break - } - } - break - case '"': - case "'": - case "`": - while (p < n && s[p] !== q) - ++p - break - } - } - list.push(s.substring(m, p)) - } - } - return list -} - -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 = tokenize(line) - 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")
\ No newline at end of file |