Skip to content

Instantly share code, notes, and snippets.

@simon-tiger
Created June 3, 2021 14:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save simon-tiger/eb42ee462ca7241053f240964b0eb907 to your computer and use it in GitHub Desktop.
Save simon-tiger/eb42ee462ca7241053f240964b0eb907 to your computer and use it in GitHub Desktop.
const fs = require("fs");
const code = fs.readFileSync("program.txt", "utf8");
function run(code) {
let state = 0;
let replacement = { from: "", to: "" };
let escaping = false;
let output = "";
while (code.length > 0) {
const char = code[0];
code = code.slice(1);
if (char === "/" && !escaping) {
state = (state+1) % 3;
if (state === 0) {
code = code.replaceAll(replacement.from, replacement.to);
replacement = { from: "", to: "" };
}
} else if (char === "\\" && !escaping) {
escaping = true;
} else if (state === 0) {
output += char;
escaping = false;
} else if (state === 1) {
replacement.from += char;
escaping = false;
} else if (state === 2) {
replacement.to += char;
escaping = false;
}
}
console.log(output);
}
run(code);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment