diff --git a/index.html b/index.html index ee77b4d..cc09c14 100644 --- a/index.html +++ b/index.html @@ -4,7 +4,7 @@ - LocoBasic v0.1.2 + LocoBasic v0.1.6 diff --git a/locobasic.js b/locobasic.js index dfb3d0d..f75639c 100644 --- a/locobasic.js +++ b/locobasic.js @@ -1,8 +1,8 @@ (function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('ohm-js')) : - typeof define === 'function' && define.amd ? define(['exports', 'ohm-js'], factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.locobasic = {}, global.ohmJs)); -})(this, (function (exports, ohmJs) { 'use strict'; + typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('ohm-js')) : + typeof define === 'function' && define.amd ? define(['ohm-js'], factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.ohmJs)); +})(this, (function (ohmJs) { 'use strict'; /****************************************************************************** Copyright (c) Microsoft Corporation. @@ -36,6 +36,31 @@ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e; }; + // Parser.ts + class Parser { + constructor(grammarString, semanticsMap) { + this.ohmGrammar = ohmJs.grammar(grammarString); + this.ohmSemantics = this.ohmGrammar + .createSemantics() + .addOperation("eval", semanticsMap); + } + // Function to parse and evaluate an expression + parseAndEval(input) { + try { + const matchResult = this.ohmGrammar.match(input); + if (matchResult.succeeded()) { + return this.ohmSemantics(matchResult).eval(); + } + else { + return 'ERROR: Parsing failed: ' + matchResult.message; + } + } + catch (error) { + return 'ERROR: Parsing evaluator failed: ' + (error instanceof Error ? error.message : "unknown"); + } + } + } + // arithmetics.ts // const arithmetic = { @@ -774,77 +799,6 @@ ` }; - // parser.ts - // A simple parser for arithmetic expressions using Ohm - // - // Usage: - // node dist/locobasic.js input="?3 + 5 * (2 - 8)" - // node dist/locobasic.js fileName=dist/examples/example.bas - // node dist/locobasic.js example=euler - // - // [ npx ts-node parser.ts input="?3 + 5 * (2 - 8)" ] - const startConfig = { - debug: 0, - example: "", - fileName: "", - input: "", - debounceCompile: 800, - debounceExecute: 400 - }; - const examples = {}; - function dimArray(dims, initVal = 0) { - const createRecursiveArray = function (depth) { - const length = dims[depth] + 1, // +1 because of 0-based index - array = new Array(length); - depth += 1; - if (depth < dims.length) { // more dimensions? - for (let i = 0; i < length; i += 1) { - array[i] = createRecursiveArray(depth); // recursive call - } - } - else { // one dimension - array.fill(initVal); - } - return array; - }; - return createRecursiveArray(0); - } - const vm = { - _output: "", - _fnOnCls: (() => undefined), - dimArray: dimArray, - cls: () => { - vm._output = ""; - vm._fnOnCls(); - }, - print: (...args) => vm._output += args.join(''), - getOutput: () => vm._output, - setOutput: (str) => vm._output = str, - setOnCls: (fn) => vm._fnOnCls = fn - }; - class Parser { - constructor(grammarString, semanticsMap) { - this.ohmGrammar = ohmJs.grammar(grammarString); - this.ohmSemantics = this.ohmGrammar - .createSemantics() - .addOperation("eval", semanticsMap); - } - // Function to parse and evaluate an expression - parseAndEval(input) { - try { - const matchResult = this.ohmGrammar.match(input); - if (matchResult.succeeded()) { - return this.ohmSemantics(matchResult).eval(); - } - else { - return 'ERROR: Parsing failed: ' + matchResult.message; - } - } - catch (error) { - return 'ERROR: Parsing evaluator failed: ' + (error instanceof Error ? error.message : "unknown"); - } - } - } const variables = {}; const reJsKeyword = /^(arguments|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|eval|export|extends|false|finally|for|function|if|implements|import|in|instanceof|interface|let|new|null|package|private|protected|public|return|static|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)$/; function getVariable(name) { @@ -1307,149 +1261,296 @@ return getVariable(name); } }; - let arithmeticParser; - function compileScript(script) { - if (!arithmeticParser) { - arithmeticParser = new Parser(arithmetic.grammar, semantics); + class Semantics { + getSemantics() { + return semantics; + } + resetParser() { + resetParser(); } - resetParser(); - const compiledScript = arithmeticParser.parseAndEval(script); - return compiledScript; } - function executeScript(compiledScript) { - return __awaiter(this, void 0, void 0, function* () { - vm.setOutput(""); - if (compiledScript.startsWith("ERROR")) { - return "ERROR" + "\n"; - } - let output; - try { - const fnScript = new Function("_o", compiledScript); // eslint-disable-line no-new-func - const result = fnScript(vm) || ""; - if (result instanceof Promise) { - output = vm.getOutput() + (yield result); + + // core.ts + const vm = { + _output: "", + _fnOnCls: (() => undefined), + dimArray: (dims, initVal = 0) => { + const createRecursiveArray = function (depth) { + const length = dims[depth] + 1, // +1 because of 0-based index + array = new Array(length); + depth += 1; + if (depth < dims.length) { // more dimensions? + for (let i = 0; i < length; i += 1) { + array[i] = createRecursiveArray(depth); // recursive call + } } - else { - output = vm.getOutput() + result; + else { // one dimension + array.fill(initVal); } + return array; + }; + return createRecursiveArray(0); + }, + cls: () => { + vm._output = ""; + vm._fnOnCls(); + }, + print: (...args) => vm._output += args.join(''), + getOutput: () => vm._output, + setOutput: (str) => vm._output = str, + setOnCls: (fn) => vm._fnOnCls = fn + }; + class Core { + constructor() { + this.startConfig = { + debug: 0, + example: "", + fileName: "", + input: "", + debounceCompile: 800, + debounceExecute: 400 + }; + this.semantics = new Semantics(); + this.examples = {}; + this.vm = vm; + } + getConfigObject() { + return this.startConfig; + } + getConfig(name) { + return this.startConfig[name]; + } + getExampleObject() { + return this.examples; + } + setExample(name, script) { + this.examples[name] = script; + } + getExample(name) { + return this.examples[name]; + } + setOnCls(fn) { + vm.setOnCls(fn); + } + compileScript(script) { + if (!this.arithmeticParser) { + this.arithmeticParser = new Parser(arithmetic.grammar, this.semantics.getSemantics()); } - catch (error) { - output = "ERROR: "; - if (error instanceof Error) { - output += error.message; - const anyErr = error; - const lineNumber = anyErr.lineNumber; // only on FireFox - const columnNumber = anyErr.columnNumber; // only on FireFox - if (lineNumber || columnNumber) { - const errLine = lineNumber - 2; // for some reason line 0 is 2 - output += ` (line ${errLine}, column ${columnNumber})`; + this.semantics.resetParser(); + const compiledScript = this.arithmeticParser.parseAndEval(script); + return compiledScript; + } + executeScript(compiledScript) { + return __awaiter(this, void 0, void 0, function* () { + this.vm.setOutput(""); + if (compiledScript.startsWith("ERROR")) { + return "ERROR" + "\n"; + } + let output; + try { + const fnScript = new Function("_o", compiledScript); + const result = fnScript(this.vm) || ""; + if (result instanceof Promise) { + output = this.vm.getOutput() + (yield result); + } + else { + output = this.vm.getOutput() + result; } } - else { - output += "unknown"; + catch (error) { + output = "ERROR: "; + if (error instanceof Error) { + output += error.message; + const anyErr = error; + const lineNumber = anyErr.lineNumber; // only on FireFox + const columnNumber = anyErr.columnNumber; // only on FireFox + if (lineNumber || columnNumber) { + const errLine = lineNumber - 2; // for some reason line 0 is 2 + output += ` (line ${errLine}, column ${columnNumber})`; + } + } + else { + output += "unknown"; + } } - } - return output + "\n"; - }); - } - function debounce(func, delayPara) { - let timeoutId; - return function (...args) { - const context = this; - const delay = startConfig[delayPara]; - clearTimeout(timeoutId); - timeoutId = setTimeout(() => { - func.apply(context, args); - }, delay); - }; - } - function keepRunning(fn, timeout) { - const timerId = setTimeout(() => { }, timeout); - return (() => __awaiter(this, void 0, void 0, function* () { - fn(); - clearTimeout(timerId); - }))(); - } - function asyncDelay(fn, timeout) { - return (() => __awaiter(this, void 0, void 0, function* () { - const timerId = setTimeout(fn, timeout); - return timerId; - }))(); - } - let basicCm; - let compiledCm; - function getOutputText() { - const outputText = document.getElementById("outputText"); - return outputText.value; - } - function setOutputText(value) { - const outputText = document.getElementById("outputText"); - outputText.value = value; - } - function onExecuteButtonClick(_event) { - return __awaiter(this, void 0, void 0, function* () { - const compiledText = document.getElementById("compiledText"); - const compiledScript = compiledCm ? compiledCm.getValue() : compiledText.value; - const output = yield executeScript(compiledScript); - setOutputText(getOutputText() + output); - }); - } - function oncompiledTextChange(_event) { - const autoExecuteInput = document.getElementById("autoExecuteInput"); - if (autoExecuteInput.checked) { - const executeButton = window.document.getElementById("executeButton"); - executeButton.dispatchEvent(new Event('click')); + return output + "\n"; + }); } } - function onCompileButtonClick(_event) { - const basicText = document.getElementById("basicText"); - const compiledText = document.getElementById("compiledText"); - const input = compiledCm ? basicCm.getValue() : basicText.value; - const compiledScript = compileScript(input); - if (compiledCm) { - compiledCm.setValue(compiledScript); + + // Ui.ts + class Ui { + constructor(core) { + this.core = core; } - else { - compiledText.value = compiledScript; + debounce(func, delayPara) { + let timeoutId; + const core = this.core; + return function (...args) { + const context = this; + const delay = core.getConfig(delayPara); + clearTimeout(timeoutId); + timeoutId = setTimeout(() => { + func.apply(context, args); + }, delay); + }; + } + static asyncDelay(fn, timeout) { + return (() => __awaiter(this, void 0, void 0, function* () { + const timerId = setTimeout(fn, timeout); + return timerId; + }))(); + } + getOutputText() { + const outputText = document.getElementById("outputText"); + return outputText.value; + } + setOutputText(value) { + const outputText = document.getElementById("outputText"); + outputText.value = value; + } + onExecuteButtonClick(_event) { + return __awaiter(this, void 0, void 0, function* () { + const compiledText = document.getElementById("compiledText"); + const compiledScript = this.compiledCm ? this.compiledCm.getValue() : compiledText.value; + const output = yield this.core.executeScript(compiledScript); + this.setOutputText(this.getOutputText() + output); + }); + } + oncompiledTextChange(_event) { const autoExecuteInput = document.getElementById("autoExecuteInput"); if (autoExecuteInput.checked) { - const newEvent = new Event('change'); - compiledText.dispatchEvent(newEvent); + const executeButton = window.document.getElementById("executeButton"); + executeButton.dispatchEvent(new Event('click')); } } - } - function onbasicTextChange(_event) { - const autoCompileInput = document.getElementById("autoCompileInput"); - if (autoCompileInput.checked) { - const compileButton = window.document.getElementById("compileButton"); - compileButton.dispatchEvent(new Event('click')); + onCompileButtonClick(_event) { + const basicText = document.getElementById("basicText"); + const compiledText = document.getElementById("compiledText"); + const input = this.compiledCm ? this.basicCm.getValue() : basicText.value; + const compiledScript = this.core.compileScript(input); + if (this.compiledCm) { + this.compiledCm.setValue(compiledScript); + } + else { + compiledText.value = compiledScript; + const autoExecuteInput = document.getElementById("autoExecuteInput"); + if (autoExecuteInput.checked) { + const newEvent = new Event('change'); + compiledText.dispatchEvent(newEvent); + } + } } - } - function onExampleSelectChange(event) { - const exampleSelect = event.target; - const basicText = document.getElementById("basicText"); - const value = examples[exampleSelect.value]; - setOutputText(""); - if (basicCm) { - basicCm.setValue(value); + onbasicTextChange(_event) { + return __awaiter(this, void 0, void 0, function* () { + const autoCompileInput = document.getElementById("autoCompileInput"); + if (autoCompileInput.checked) { + const compileButton = window.document.getElementById("compileButton"); + compileButton.dispatchEvent(new Event('click')); + } + }); } - else { - basicText.value = value; - basicText.dispatchEvent(new Event('change')); + setExampleSelect(name) { + const exampleSelect = document.getElementById("exampleSelect"); + exampleSelect.value = name; } - } - function setExampleSelectOptions(examples) { - const exampleSelect = document.getElementById("exampleSelect"); - for (const key of Object.keys(examples)) { - const value = key; //examples[key]; - const option = window.document.createElement("option"); - option.value = value; - option.text = value; - option.title = value; - option.selected = false; - exampleSelect.add(option); + onExampleSelectChange(event) { + const exampleSelect = event.target; + const basicText = document.getElementById("basicText"); + const value = this.core.getExample(exampleSelect.value); + this.setOutputText(""); + if (this.basicCm) { + this.basicCm.setValue(value); + } + else { + basicText.value = value; + basicText.dispatchEvent(new Event('change')); + } + } + setExampleSelectOptions(examples) { + const exampleSelect = document.getElementById("exampleSelect"); + for (const key of Object.keys(examples)) { + const script = examples[key]; + const firstLine = script.slice(0, script.indexOf("\n")); + const option = window.document.createElement("option"); + option.value = key; + option.text = key; + option.title = firstLine; + option.selected = false; + exampleSelect.add(option); + } + } + fnDecodeUri(s) { + let decoded = ""; + try { + decoded = decodeURIComponent(s.replace(/\+/g, " ")); + } + catch (err) { + if (err instanceof Error) { + err.message += ": " + s; + } + console.error(err); + } + return decoded; + } + // https://stackoverflow.com/questions/901115/how-can-i-get-query-string-values-in-javascript + parseUri(urlQuery, config) { + const rSearch = /([^&=]+)=?([^&]*)/g, args = []; + let match; + while ((match = rSearch.exec(urlQuery)) !== null) { + const name = this.fnDecodeUri(match[1]), value = this.fnDecodeUri(match[2]); + if (value !== null && config[name] !== undefined) { + args.push(name + "=" + value); + } + } + return args; + } + onWindowLoad(_event) { + const basicText = window.document.getElementById("basicText"); + basicText.addEventListener('change', (event) => this.onbasicTextChange(event)); + const compiledText = window.document.getElementById("compiledText"); + compiledText.addEventListener('change', (event) => this.oncompiledTextChange(event)); + const compileButton = window.document.getElementById("compileButton"); + compileButton.addEventListener('click', (event) => this.onCompileButtonClick(event), false); + const executeButton = window.document.getElementById("executeButton"); + executeButton.addEventListener('click', (event) => this.onExecuteButtonClick(event), false); + const exampleSelect = window.document.getElementById("exampleSelect"); + exampleSelect.addEventListener('change', (event) => this.onExampleSelectChange(event)); + const WinCodeMirror = window.CodeMirror; + if (WinCodeMirror) { + this.basicCm = WinCodeMirror.fromTextArea(basicText, { + lineNumbers: true, + mode: 'javascript' + }); + this.basicCm.on('changes', this.debounce((event) => this.onbasicTextChange(event), "debounceCompile")); + this.compiledCm = WinCodeMirror.fromTextArea(compiledText, { + lineNumbers: true, + mode: 'javascript' + }); + this.compiledCm.on('changes', this.debounce((event) => this.oncompiledTextChange(event), "debounceExecute")); + } + Ui.asyncDelay(() => { + const core = this.core; + this.setExampleSelectOptions(core.getExampleObject()); + const example = this.core.getConfig("example"); + if (example) { + this.setExampleSelect(example); + } + exampleSelect.dispatchEvent(new Event('change')); + }, 10); } } + + // main.ts + // + // Usage: + // node dist/locobasic.js input="?3 + 5 * (2 - 8)" + // node dist/locobasic.js fileName=dist/examples/example.bas + // node dist/locobasic.js example=euler + // + // [ npx ts-node parser.ts input="?3 + 5 * (2 - 8)" ] + const core = new Core(); + let ui; function fnHereDoc(fn) { return String(fn). replace(/^[^/]+\/\*\S*/, ""). @@ -1460,10 +1561,11 @@ inputString = inputString.replace(/^\n/, "").replace(/\n$/, ""); // remove preceding and trailing newlines // beware of data files ending with newlines! (do not use trimEnd) if (!key) { // maybe "" - const matches = inputString.match(/^\s*\d*\s*(?:REM|rem|')\s*(\w+)/); + const firstLine = inputString.slice(0, inputString.indexOf("\n")); + const matches = firstLine.match(/^\s*\d*\s*(?:REM|rem|')\s*(\w+)/); key = matches ? matches[1] : "unknown"; } - examples[key] = inputString; + core.setExample(key, inputString); } let fs; let modulePath; @@ -1498,37 +1600,19 @@ } return config; } - function fnDecodeUri(s) { - let decoded = ""; - try { - decoded = decodeURIComponent(s.replace(/\+/g, " ")); - } - catch (err) { - if (err instanceof Error) { - err.message += ": " + s; - } - console.error(err); - } - return decoded; - } - // https://stackoverflow.com/questions/901115/how-can-i-get-query-string-values-in-javascript - function fnParseUri(urlQuery, config) { - const rSearch = /([^&=]+)=?([^&]*)/g, args = []; - let match; - while ((match = rSearch.exec(urlQuery)) !== null) { - const name = fnDecodeUri(match[1]), value = fnDecodeUri(match[2]); - if (value !== null && config[name] !== undefined) { - args.push(name + "=" + value); - } - } - return fnParseArgs(args, config); + function keepRunning(fn, timeout) { + const timerId = setTimeout(() => { }, timeout); + return (() => __awaiter(this, void 0, void 0, function* () { + fn(); + clearTimeout(timerId); + }))(); } function start(input) { if (input !== "") { - const compiledScript = compileScript(input); + const compiledScript = core.compileScript(input); console.log("INFO: Compiled:\n" + compiledScript + "\n"); return keepRunning(() => __awaiter(this, void 0, void 0, function* () { - const output = yield executeScript(compiledScript); + const output = yield core.executeScript(compiledScript); console.log(output); }), 5000); } @@ -1546,6 +1630,7 @@ } else { if (config.example) { + const examples = core.getExampleObject(); if (!Object.keys(examples).length) { return keepRunning(() => __awaiter(this, void 0, void 0, function* () { const jsFile = yield nodeReadFile("./dist/examples/examples.js"); @@ -1564,56 +1649,22 @@ start(input); } } + const config = core.getConfigObject(); if (typeof window !== "undefined") { window.cpcBasic = { addItem: addItem }; window.onload = () => { - const basicText = window.document.getElementById("basicText"); - basicText.addEventListener('change', onbasicTextChange); - const compiledText = window.document.getElementById("compiledText"); - compiledText.addEventListener('change', oncompiledTextChange); - const compileButton = window.document.getElementById("compileButton"); - compileButton.addEventListener('click', onCompileButtonClick, false); - const executeButton = window.document.getElementById("executeButton"); - executeButton.addEventListener('click', onExecuteButtonClick, false); - const exampleSelect = window.document.getElementById("exampleSelect"); - exampleSelect.addEventListener('change', onExampleSelectChange); - const WinCodeMirror = window.CodeMirror; - if (WinCodeMirror) { - //const debounceMs = 800; - basicCm = WinCodeMirror.fromTextArea(basicText, { - lineNumbers: true, - mode: 'javascript' - }); - basicCm.on('changes', debounce(onbasicTextChange, "debounceCompile")); - compiledCm = WinCodeMirror.fromTextArea(compiledText, { - lineNumbers: true, - mode: 'javascript' - }); - compiledCm.on('changes', debounce(oncompiledTextChange, "debounceExecute")); - } - vm.setOnCls(() => setOutputText("")); - return asyncDelay(() => { - setExampleSelectOptions(examples); - const config = fnParseUri(window.location.search.substring(1), startConfig); - if (config.example) { - const exampleSelect = document.getElementById("exampleSelect"); - exampleSelect.value = config.example; - } - //const input = examples[config.example as string]; - exampleSelect.dispatchEvent(new Event('change')); - }, 10); + ui = new Ui(core); + const args = ui.parseUri(window.location.search.substring(1), config); + fnParseArgs(args, config); + core.setOnCls(() => ui.setOutputText("")); + ui.onWindowLoad(new Event("onload")); }; } else { - main(fnParseArgs(global.process.argv.slice(2), startConfig)); + main(fnParseArgs(global.process.argv.slice(2), config)); } - const testParser = { - dimArray: dimArray - }; - - exports.testParser = testParser; })); //# sourceMappingURL=locobasic.js.map diff --git a/locobasic.js.map b/locobasic.js.map index 7758479..0052ce4 100644 --- a/locobasic.js.map +++ b/locobasic.js.map @@ -1 +1 @@ -{"version":3,"file":"locobasic.js","sources":["../src/arithmetic.ts","../src/parser.ts"],"sourcesContent":["// arithmetics.ts\n//\nexport const arithmetic = {\n grammar:\n `\n Arithmetic {\n Program\n = Line*\n\n Line\n = Label? Statements Comment? (eol | end)\n\n Label\n = label\n\n Statements\n = Statement (\":\" Statement)*\n\n Statement\n = Comment\n | Comparison\n | Cls\n | Data\n | Dim\n | End\n | ForLoop\n | Gosub\n | Next\n | On\n | Print\n | Read\n | Rem\n | Restore\n | Return\n | Stop\n | WhileLoop\n | Wend\n | ArrayAssign\n | Assign\n\n ArrayAssign\n = ArrayIdent \"=\" NumExp\n | StrArrayIdent \"=\" StrExp\n\n Abs\n = caseInsensitive<\"abs\"> \"(\" NumExp \")\"\n\n Asc\n = caseInsensitive<\"asc\"> \"(\" StrExp \")\"\n\n Atn\n = caseInsensitive<\"atn\"> \"(\" NumExp \")\"\n\n Assign\n = ident \"=\" NumExp\n | strIdent \"=\" StrExp\n\n Bin\n = caseInsensitive<\"bin$\"> \"(\" NumExp (\",\" NumExp)? \")\"\n\n Chr\n = caseInsensitive<\"chr$\"> \"(\" NumExp \")\"\n\n Cint\n = caseInsensitive<\"cint\"> \"(\" NumExp \")\"\n\n Cls\n = caseInsensitive<\"cls\">\n\n Comment\n = \"\\\\'\" partToEol\n\n Cos\n = caseInsensitive<\"cos\"> \"(\" NumExp \")\"\n\n DataItem\n = string | number\n\n Data\n = caseInsensitive<\"data\"> NonemptyListOf // TODO: also hex number?\n\n Dim\n = caseInsensitive<\"dim\"> NonemptyListOf\n\n End\n = caseInsensitive<\"end\">\n\n Exp\n = caseInsensitive<\"exp\"> \"(\" NumExp \")\"\n\n Fix\n = caseInsensitive<\"fix\"> \"(\" NumExp \")\"\n\n ForLoop\n = caseInsensitive<\"for\"> variable \"=\" NumExp caseInsensitive<\"to\"> NumExp (caseInsensitive<\"step\"> NumExp)?\n\n Gosub\n = caseInsensitive<\"gosub\"> label\n\n Hex\n = caseInsensitive<\"hex$\"> \"(\" NumExp (\",\" NumExp)? \")\"\n\n Int\n = caseInsensitive<\"int\"> \"(\" NumExp \")\"\n\n Left\n = caseInsensitive<\"left$\"> \"(\" StrExp \",\" NumExp \")\"\n\n Len\n = caseInsensitive<\"len\"> \"(\" StrExp \")\"\n\n Log\n = caseInsensitive<\"log\"> \"(\" NumExp \")\"\n\n Log10\n = caseInsensitive<\"log10\"> \"(\" NumExp \")\"\n\n Lower\n = caseInsensitive<\"lower$\"> \"(\" StrExp \")\"\n\n Max\n = caseInsensitive<\"max\"> \"(\" NonemptyListOf \")\"\n\n Mid\n = caseInsensitive<\"mid$\"> \"(\" StrExp \",\" NumExp (\",\" NumExp)? \")\"\n\n Min\n = caseInsensitive<\"min\"> \"(\" NonemptyListOf \")\"\n\n Pi\n = caseInsensitive<\"pi\">\n\n Next\n = caseInsensitive<\"next\"> ListOf\n\n On\n = caseInsensitive<\"on\"> NumExp caseInsensitive<\"gosub\"> NonemptyListOf\n\n Print\n = (caseInsensitive<\"print\"> | \"?\") PrintArgs? (\";\")?\n\n PrintArgs\n = PrintArg ((\",\" | \";\") PrintArg)*\n\n PrintArg\n = StrOrNumExp\n\n ReadItem\n = StrArrayIdent\n | ArrayIdent\n | strIdent\n | ident\n\n Read\n = caseInsensitive<\"read\"> NonemptyListOf\n\n Rem\n = caseInsensitive<\"Rem\"> partToEol\n\n Restore\n = caseInsensitive<\"Restore\"> label?\n\n Return\n = caseInsensitive<\"return\">\n\n Right\n = caseInsensitive<\"right$\"> \"(\" StrExp \",\" NumExp \")\"\n\n Rnd\n = caseInsensitive<\"rnd\"> \"(\" NumExp? \")\"\n \n Round\n = caseInsensitive<\"round\"> \"(\" NumExp (\",\" NumExp)? \")\"\n\n Sgn\n = caseInsensitive<\"sgn\"> \"(\" NumExp \")\"\n\n Sin\n = caseInsensitive<\"sin\"> \"(\" NumExp \")\"\n\n Space2\n = caseInsensitive<\"space$\"> \"(\" NumExp \")\"\n\n Sqr\n = caseInsensitive<\"sqr\"> \"(\" NumExp \")\"\n\n Stop\n = caseInsensitive<\"stop\">\n\n Str\n = caseInsensitive<\"str$\"> \"(\" NumExp \")\"\n\n String2\n = caseInsensitive<\"string$\"> \"(\" NumExp \",\" StrExp \")\"\n\n Tan\n = caseInsensitive<\"tan\"> \"(\" NumExp \")\"\n\n Time\n = caseInsensitive<\"time\">\n\n Upper\n = caseInsensitive<\"upper$\"> \"(\" StrExp \")\"\n\n Val\n = caseInsensitive<\"val\"> \"(\" StrExp \")\"\n\n Wend\n = caseInsensitive<\"wend\">\n\n WhileLoop\n = caseInsensitive<\"while\"> StrOrNumExp\n\n Comparison\n = caseInsensitive<\"if\"> StrOrNumExp caseInsensitive<\"then\"> Statements (caseInsensitive<\"else\"> Statements)?\n\n StrExp\n = StrOrExp\n\n StrOrExp\n = StrAndExp caseInsensitive<\"or\"> StrOrExp -- or\n | StrAndExp\n\n StrAndExp\n = StrCmpExp caseInsensitive<\"and\"> StrAndExp -- and\n | StrCmpExp\n\n StrCmpExp\n = StrCmpExp \"=\" StrAddExp -- eq\n | StrCmpExp \"<>\" StrAddExp -- ne\n | StrAddExp\n\n StrAddExp\n = StrAddExp \"+\" StrPriExp -- plus\n | StrPriExp\n\n StrPriExp\n = \"(\" StrExp \")\" -- paren\n | Bin\n | Chr\n | Hex\n | Left\n | Lower\n | Mid\n | Right\n | Space2\n | Str\n | String2\n | Upper\n | StrArrayIdent\n | strIdent\n | string\n\n StrOrNumExp\n = StrExp | NumExp\n\n NumExp\n = XorExp\n\n XorExp\n = OrExp caseInsensitive<\"xor\"> XorExp -- xor\n | OrExp\n\n OrExp\n = AndExp caseInsensitive<\"or\"> OrExp -- or\n | AndExp\n\n AndExp\n = NotExp caseInsensitive<\"and\"> AndExp -- and\n | NotExp\n\n NotExp\n = caseInsensitive<\"not\"> NotExp -- not\n | CmpExp\n\n CmpExp\n = CmpExp \"=\" AddExp -- eq\n | CmpExp \"<>\" AddExp -- ne\n | CmpExp \"<\" AddExp -- lt\n | CmpExp \"<=\" AddExp -- le\n | CmpExp \">\" AddExp -- gt\n | CmpExp \">=\" AddExp -- ge\n | AddExp\n\n AddExp\n = AddExp \"+\" ModExp -- plus\n | AddExp \"-\" ModExp -- minus\n | ModExp\n\n ModExp\n = ModExp caseInsensitive<\"mod\"> DivExp -- mod\n | DivExp\n\n DivExp\n = DivExp \"\\\\\\\\\" MulExp -- div\n | MulExp\n\n MulExp\n = MulExp \"*\" ExpExp -- times\n | MulExp \"/\" ExpExp -- divide\n | ExpExp\n\n ExpExp\n = PriExp \"^\" ExpExp -- power\n | PriExp\n\n PriExp\n = \"(\" NumExp \")\" -- paren\n | \"+\" PriExp -- pos\n | \"-\" PriExp -- neg\n | ArrayIdent\n | ident\n | number\n | Abs\n | Asc\n | Atn\n | Cint\n | Cos\n | Exp\n | Fix\n | Int\n | Len\n | Log\n | Log10\n | Max\n | Min\n | Pi\n | Rnd\n | Round\n | Sgn\n | Sin\n | Sqr\n | Tan\n | Time\n | Val\n\n\n ArrayArgs\n = NonemptyListOf\n\n ArrayIdent\n = ident \"(\" ArrayArgs \")\"\n\n StrArrayIdent\n = strIdent \"(\" ArrayArgs \")\"\n\n DimArrayIdent\n = ident \"(\" ArrayArgs \")\"\n | strIdent \"(\" ArrayArgs \")\"\n\n keyword\n = abs | after | and | asc | atn | auto | bin | border | break\n | call | cat | chain | chr | cint | clear | clg | closein | closeout | cls | cont | copychr | cos | creal | cursor\n | data | dec | def | defint | defreal | defstr | deg | delete | derr | di | dim | draw | drawr\n | edit | ei | else | end2 | ent | env | eof | erase | erl | err | error | every | exp | fill | fix | fn | for | frame | fre | gosub | goto | graphics\n | hex | himem | if | ink | inkey | inp | input | instr | int | joy | key | left | len | let | line | list | load | locate | log | log10 | lower2\n | mask | max | memory | merge | mid | min | mod | mode | move | mover | new | next | not | on | openin | openout | or | origin | out\n | paper | peek | pen | pi | plot | plotr | poke | pos | print\n | rad | randomize | read | release | rem | remain | renum | restore | resume | return | right | rnd | round | run\n | save | sgn | sin | sound | space2 | spc | speed | sq | sqr | step | stop | str | string2 | swap | symbol\n | tab | tag | tagoff | tan | test | testr | then | time | to | troff | tron | unt | upper2 | using\n | val | vpos | wait | wend | while | width | window | write | xor | xpos | ypos | zone\n\n\n abs\n = caseInsensitive<\"abs\"> ~identPart\n after\n = caseInsensitive<\"after\"> ~identPart\n and\n = caseInsensitive<\"and\"> ~identPart\n asc\n = caseInsensitive<\"asc\"> ~identPart\n atn\n = caseInsensitive<\"atn\"> ~identPart\n auto\n = caseInsensitive<\"auto\"> ~identPart\n bin\n = caseInsensitive<\"bin$\"> ~identPart\n border\n = caseInsensitive<\"border\"> ~identPart\n break\n = caseInsensitive<\"break\"> ~identPart\n call\n = caseInsensitive<\"call\"> ~identPart\n cat\n = caseInsensitive<\"cat\"> ~identPart\n chain\n = caseInsensitive<\"chain\"> ~identPart\n chr\n = caseInsensitive<\"chr$\"> ~identPart\n cint\n = caseInsensitive<\"cint\"> ~identPart\n clear\n = caseInsensitive<\"clear\"> ~identPart\n clg\n = caseInsensitive<\"clg\"> ~identPart\n closein\n = caseInsensitive<\"closein\"> ~identPart\n closeout\n = caseInsensitive<\"closeout\"> ~identPart\n cls\n = caseInsensitive<\"cls\"> ~identPart\n cont\n = caseInsensitive<\"cont\"> ~identPart\n copychr\n = caseInsensitive<\"copychr$\"> ~identPart\n cos\n = caseInsensitive<\"cos\"> ~identPart\n creal\n = caseInsensitive<\"creal\"> ~identPart\n cursor\n = caseInsensitive<\"cursor\"> ~identPart\n data\n = caseInsensitive<\"data\"> ~identPart\n dec\n = caseInsensitive<\"dec\"> ~identPart\n def\n = caseInsensitive<\"def\"> ~identPart\n defint\n = caseInsensitive<\"defint\"> ~identPart\n defreal\n = caseInsensitive<\"defreal\"> ~identPart\n defstr\n = caseInsensitive<\"defstr\"> ~identPart\n deg\n = caseInsensitive<\"deg\"> ~identPart\n delete\n = caseInsensitive<\"delete\"> ~identPart\n derr\n = caseInsensitive<\"derr\"> ~identPart\n di\n = caseInsensitive<\"di\"> ~identPart\n dim\n = caseInsensitive<\"dim\"> ~identPart\n draw\n = caseInsensitive<\"draw\"> ~identPart\n drawr\n = caseInsensitive<\"drawr\"> ~identPart\n edit\n = caseInsensitive<\"edit\"> ~identPart\n ei\n = caseInsensitive<\"ei\"> ~identPart\n else\n = caseInsensitive<\"else\"> ~identPart\n end2\n = caseInsensitive<\"end\"> ~identPart\n ent\n = caseInsensitive<\"ent\"> ~identPart\n env\n = caseInsensitive<\"env\"> ~identPart\n eof\n = caseInsensitive<\"eof\"> ~identPart\n erase\n = caseInsensitive<\"erase\"> ~identPart\n erl\n = caseInsensitive<\"erl\"> ~identPart\n err\n = caseInsensitive<\"err\"> ~identPart\n error\n = caseInsensitive<\"error\"> ~identPart\n every\n = caseInsensitive<\"every\"> ~identPart\n exp\n = caseInsensitive<\"exp\"> ~identPart\n fill\n = caseInsensitive<\"fill\"> ~identPart\n fix\n = caseInsensitive<\"fix\"> ~identPart\n fn\n = caseInsensitive<\"fn\"> ~identPart\n for\n = caseInsensitive<\"for\"> ~identPart\n frame\n = caseInsensitive<\"frame\"> ~identPart\n fre\n = caseInsensitive<\"fre\"> ~identPart\n gosub\n = caseInsensitive<\"gosub\"> ~identPart\n goto\n = caseInsensitive<\"goto\"> ~identPart\n graphics\n = caseInsensitive<\"graphics\"> ~identPart\n hex\n = caseInsensitive<\"hex$\"> ~identPart\n himem\n = caseInsensitive<\"himem\"> ~identPart\n if\n = caseInsensitive<\"if\"> ~identPart\n ink\n = caseInsensitive<\"ink\"> ~identPart\n inkey\n = caseInsensitive<\"inkey\"> ~identPart\n | caseInsensitive<\"inkey$\"> ~identPart\n inp\n = caseInsensitive<\"inp\"> ~identPart\n input\n = caseInsensitive<\"input\"> ~identPart\n instr\n = caseInsensitive<\"instr\"> ~identPart\n int\n = caseInsensitive<\"int\"> ~identPart\n joy\n = caseInsensitive<\"joy\"> ~identPart\n key\n = caseInsensitive<\"key\"> ~identPart\n left\n = caseInsensitive<\"left$\"> ~identPart\n len\n = caseInsensitive<\"len\"> ~identPart\n let\n = caseInsensitive<\"let\"> ~identPart\n line\n = caseInsensitive<\"line\"> ~identPart\n list\n = caseInsensitive<\"list\"> ~identPart\n load\n = caseInsensitive<\"load\"> ~identPart\n locate\n = caseInsensitive<\"locate\"> ~identPart\n log\n = caseInsensitive<\"log\"> ~identPart\n log10\n = caseInsensitive<\"log10\"> ~identPart\n lower2\n = caseInsensitive<\"lower$\"> ~identPart\n mask\n = caseInsensitive<\"mask\"> ~identPart\n max\n = caseInsensitive<\"max\"> ~identPart\n memory\n = caseInsensitive<\"memory\"> ~identPart\n merge\n = caseInsensitive<\"merge\"> ~identPart\n mid\n = caseInsensitive<\"mid$\"> ~identPart\n min\n = caseInsensitive<\"min\"> ~identPart\n mod\n = caseInsensitive<\"mod\"> ~identPart\n mode\n = caseInsensitive<\"mode\"> ~identPart\n move\n = caseInsensitive<\"move\"> ~identPart\n mover\n = caseInsensitive<\"mover\"> ~identPart\n new\n = caseInsensitive<\"new\"> ~identPart\n next\n = caseInsensitive<\"next\"> ~identPart\n not\n = caseInsensitive<\"not\"> ~identPart\n on\n = caseInsensitive<\"on\"> ~identPart\n openin\n = caseInsensitive<\"openin\"> ~identPart\n openout\n = caseInsensitive<\"openout\"> ~identPart\n or\n = caseInsensitive<\"or\"> ~identPart\n origin\n = caseInsensitive<\"origin\"> ~identPart\n out\n = caseInsensitive<\"out\"> ~identPart\n paper\n = caseInsensitive<\"paper\"> ~identPart\n peek\n = caseInsensitive<\"peek\"> ~identPart\n pen\n = caseInsensitive<\"pen\"> ~identPart\n pi\n = caseInsensitive<\"pi\"> ~identPart\n plot\n = caseInsensitive<\"plot\"> ~identPart\n plotr\n = caseInsensitive<\"plotr\"> ~identPart\n poke\n = caseInsensitive<\"poke\"> ~identPart\n pos\n = caseInsensitive<\"pos\"> ~identPart\n print\n = caseInsensitive<\"print\"> ~identPart\n rad\n = caseInsensitive<\"rad\"> ~identPart\n randomize\n = caseInsensitive<\"randomize\"> ~identPart\n read\n = caseInsensitive<\"read\"> ~identPart\n release\n = caseInsensitive<\"release\"> ~identPart\n rem\n = caseInsensitive<\"rem\"> ~identPart\n remain\n = caseInsensitive<\"remain\"> ~identPart\n renum\n = caseInsensitive<\"renum\"> ~identPart\n restore\n = caseInsensitive<\"restore\"> ~identPart\n resume\n = caseInsensitive<\"resume\"> ~identPart\n return\n = caseInsensitive<\"return\"> ~identPart\n right\n = caseInsensitive<\"right$\"> ~identPart\n rnd\n = caseInsensitive<\"rnd\"> ~identPart\n round\n = caseInsensitive<\"round\"> ~identPart\n run\n = caseInsensitive<\"run\"> ~identPart\n save\n = caseInsensitive<\"save\"> ~identPart\n sgn\n = caseInsensitive<\"sgn\"> ~identPart\n sin\n = caseInsensitive<\"sin\"> ~identPart\n sound\n = caseInsensitive<\"sound\"> ~identPart\n space2\n = caseInsensitive<\"space\"> ~identPart\n spc\n = caseInsensitive<\"spc\"> ~identPart\n speed\n = caseInsensitive<\"speed\"> ~identPart\n sq\n = caseInsensitive<\"sq\"> ~identPart\n sqr\n = caseInsensitive<\"sqr\"> ~identPart\n step\n = caseInsensitive<\"step\"> ~identPart\n stop\n = caseInsensitive<\"stop\"> ~identPart\n str\n = caseInsensitive<\"str$\"> ~identPart\n string2\n = caseInsensitive<\"string$\"> ~identPart\n swap\n = caseInsensitive<\"swap\"> ~identPart\n symbol\n = caseInsensitive<\"symbol\"> ~identPart\n tab\n = caseInsensitive<\"tab\"> ~identPart\n tag\n = caseInsensitive<\"tag\"> ~identPart\n tagoff\n = caseInsensitive<\"tagoff\"> ~identPart\n tan\n = caseInsensitive<\"tan\"> ~identPart\n test\n = caseInsensitive<\"test\"> ~identPart\n testr\n = caseInsensitive<\"testr\"> ~identPart\n then\n = caseInsensitive<\"then\"> ~identPart\n time\n = caseInsensitive<\"time\"> ~identPart\n to\n = caseInsensitive<\"to\"> ~identPart\n troff\n = caseInsensitive<\"troff\"> ~identPart\n tron\n = caseInsensitive<\"tron\"> ~identPart\n unt\n = caseInsensitive<\"unt\"> ~identPart\n upper2\n = caseInsensitive<\"upper$\"> ~identPart\n using\n = caseInsensitive<\"using\"> ~identPart\n val\n = caseInsensitive<\"val\"> ~identPart\n vpos\n = caseInsensitive<\"vpos\"> ~identPart\n wait\n = caseInsensitive<\"wait\"> ~identPart\n wend\n = caseInsensitive<\"wend\"> ~identPart\n while\n = caseInsensitive<\"while\"> ~identPart\n width\n = caseInsensitive<\"width\"> ~identPart\n window\n = caseInsensitive<\"window\"> ~identPart\n write\n = caseInsensitive<\"write\"> ~identPart\n xor\n = caseInsensitive<\"xor\"> ~identPart\n xpos\n = caseInsensitive<\"xpos\"> ~identPart\n ypos\n = caseInsensitive<\"ypos\"> ~identPart\n zone\n = caseInsensitive<\"zone\"> ~identPart\n\n\n ident (an identifier) =\n ~keyword identName\n\n identName = identStart identPart*\n\n identStart = letter\n\n identPart = identStart | digit\n\n variable = ident\n\n strIdent\n = ~keyword identName (\"$\")\n\n binaryDigit = \"0\"..\"1\"\n\n decimalValue (decimal number)\n = digit* \".\" digit+ -- fract\n | digit+ -- whole\n\n hexValue\n = \"&\" hexDigit+\n\n binaryValue\n = caseInsensitive<\"&x\"> binaryDigit+\n\n number (a number)\n = decimalValue\n | hexValue\n | binaryValue\n\n partToEol\n = (~eol any)*\n\n string = \"\\\\\"\" (\"\\\\\\\\\\\\\"\" | (~\"\\\\\"\" any))* \"\\\\\"\"\n\n label = digit+\n\n space := \" \" | \"\\t\"\n\n eol (end of line)\n = \"\\\\n\"\n }\n `\n};\n","// parser.ts\n// A simple parser for arithmetic expressions using Ohm\n//\n// Usage:\n// node dist/locobasic.js input=\"?3 + 5 * (2 - 8)\"\n// node dist/locobasic.js fileName=dist/examples/example.bas\n// node dist/locobasic.js example=euler\n//\n// [ npx ts-node parser.ts input=\"?3 + 5 * (2 - 8)\" ]\n\nimport { ActionDict, Grammar, grammar, Node, Semantics } from \"ohm-js\";\nimport { arithmetic } from \"./arithmetic\";\n\nexport type ConfigEntryType = string | number | boolean;\n\nexport type ConfigType = Record;\n\nconst startConfig: ConfigType = {\n\tdebug: 0,\n\texample: \"\",\n\tfileName: \"\",\n\tinput: \"\",\n\tdebounceCompile: 800,\n\tdebounceExecute: 400\n};\n\n\nconst examples: Record = {};\n\n\ntype VariableValue = string | number | Function | [] | VariableValue[]; // eslint-disable-line @typescript-eslint/ban-types\n\nfunction dimArray(dims: number[], initVal: string | number = 0) {\n\tconst createRecursiveArray = function (depth: number) {\n\t\tconst length = dims[depth] + 1, // +1 because of 0-based index\n\t\t\tarray: VariableValue[] = new Array(length);\n\n\t\tdepth += 1;\n\t\tif (depth < dims.length) { // more dimensions?\n\t\t\tfor (let i = 0; i < length; i += 1) {\n\t\t\t\tarray[i] = createRecursiveArray(depth); // recursive call\n\t\t\t}\n\t\t} else { // one dimension\n\t\t\tarray.fill(initVal);\n\t\t}\n\t\treturn array;\n\t};\n\treturn createRecursiveArray(0);\n}\n\nconst vm = {\n\t_output: \"\",\n\t_fnOnCls: (() => undefined) as () => void,\n\tdimArray: dimArray,\n\tcls: () => {\n\t\tvm._output = \"\";\n\t\tvm._fnOnCls();\n\t},\n\tprint: (...args: string[]) => vm._output += args.join(''),\n\n\tgetOutput: () => vm._output,\n\tsetOutput: (str: string) => vm._output = str,\n\tsetOnCls: (fn: () => void) => vm._fnOnCls = fn\n}\n\nclass Parser {\n\tprivate readonly ohmGrammar: Grammar;\n\tprivate readonly ohmSemantics: Semantics;\n\n\tconstructor(grammarString: string, semanticsMap: ActionDict) {\n\t\tthis.ohmGrammar = grammar(grammarString);\n\t\tthis.ohmSemantics = this.ohmGrammar\n\t\t\t.createSemantics()\n\t\t\t.addOperation(\"eval\", semanticsMap);\n\t}\n\n\t// Function to parse and evaluate an expression\n\tparseAndEval(input: string) {\n\t\ttry {\n\t\t\tconst matchResult = this.ohmGrammar.match(input);\n\t\t\tif (matchResult.succeeded()) {\n\t\t\t\treturn this.ohmSemantics(matchResult).eval();\n\t\t\t} else {\n\t\t\t\treturn 'ERROR: Parsing failed: ' + matchResult.message;\n\t\t\t}\n\t\t} catch (error) {\n\t\t\treturn 'ERROR: Parsing evaluator failed: ' + (error instanceof Error ? error.message : \"unknown\");\n\t\t}\n\t}\n}\n\nconst variables: Record = {};\n\nconst reJsKeyword = /^(arguments|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|eval|export|extends|false|finally|for|function|if|implements|import|in|instanceof|interface|let|new|null|package|private|protected|public|return|static|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)$/;\n\nfunction getVariable(name: string) {\n\tname = name.toLowerCase();\n\tif (reJsKeyword.test(name)) {\n\t\tname = `_${name}`;\n\t}\n\n\tvariables[name] = (variables[name] || 0) + 1;\n\treturn name;\n}\n\nfunction deleteAllItems(items: Record) {\n\tfor (const name in items) { // eslint-disable-line guard-for-in\n\t\tdelete items[name];\n\t}\n}\n\ntype DefinedLabelEntryType = {\n\tlabel: string,\n\tfirst: number,\n\tlast: number,\n\tdataIndex: number\n}\n\ntype GosubLabelEntryType = {\n\tcount: number\n}\n\nconst definedLabels: DefinedLabelEntryType[] = [];\nconst gosubLabels: Record = {};\nlet lineIndex = 0;\n\nconst dataList: (string | number)[] = [];\nconst restoreMap: Record = {};\n\nfunction addDefinedLabel(label: string, line: number) {\n\tdefinedLabels.push({\n\t\tlabel,\n\t\tfirst: line,\n\t\tlast: -1,\n\t\tdataIndex: -1\n\t});\n}\n\nfunction addGosubLabel(label: string) {\n\tgosubLabels[label] = gosubLabels[label] || {\n\t\tcount: 0\n\t};\n\n\tgosubLabels[label].count = (gosubLabels[label].count || 0) + 1;\n}\n\nfunction addRestoreLabel(label: string) {\n\trestoreMap[label] = -1;\n}\n\nfunction resetParser() {\n\tdeleteAllItems(variables);\n\tdefinedLabels.length = 0;\n\tdeleteAllItems(gosubLabels);\n\tlineIndex = 0;\n\tdataList.length = 0;\n\tdeleteAllItems(restoreMap);\n}\n\nfunction evalChildren(children: Node[]) {\n\treturn children.map(c => c.eval());\n}\n\n// Semantics to evaluate an arithmetic expression\nconst semantics: ActionDict = {\n\tProgram(lines: Node) {\n\t\tconst lineList = evalChildren(lines.children);\n\n\t\tconst variabeList = Object.keys(variables);\n\t\tconst varStr = variabeList.length ? \"let \" + variabeList.map((v) => v.endsWith(\"$\") ? `${v} = \"\"` : `${v} = 0`).join(\", \") + \";\\n\" : \"\";\n\n\t\t// find subroutines\n\t\tlet subFirst: DefinedLabelEntryType | undefined;\n\t\tfor (let index = 0; index < definedLabels.length; index += 1) {\n\t\t\tconst item = definedLabels[index];\n\t\t\tif (gosubLabels[item.label]) {\n\t\t\t\tsubFirst = item;\n\t\t\t}\n\n\t\t\tif (subFirst && item.last >= 0) {\n\t\t\t\tconst first = subFirst.first;\n\t\t\t\tconst indent = lineList[first].search(/\\S|$/);\n\t\t\t\tconst indentStr = \" \".repeat(indent);\n\n\t\t\t\tfor (let i = first; i <= item.last; i += 1) {\n\t\t\t\t\tlineList[i] = \" \" + lineList[i]; // ident\n\t\t\t\t}\n\n\t\t\t\tlineList[first] = `${indentStr}function _${subFirst.label}() {${indentStr}\\n` + lineList[first];\n\t\t\t\tlineList[item.last] += `\\n${indentStr}` + \"}\"; //TS issue when using the following? `\\n${indentStr}};`\n\t\t\t\tsubFirst = undefined;\n\t\t\t}\n\n\t\t\tif (restoreMap[item.label] === -1) {\n\t\t\t\trestoreMap[item.label] = item.dataIndex;\n\t\t\t}\n\t\t}\n\n\t\tif (dataList.length) {\n\t\t\tlineList.unshift(`const _data = _getData();\\nconst _restoreMap = _getRestore();\\nlet _dataPrt = 0;`);\n\t\t\tlineList.push(`function _getData() {\\nreturn [\\n${dataList.join(\",\\n\")}\\n];\\n}`);\n\t\t\tlineList.push(`function _getRestore() {\\nreturn [\\n${JSON.stringify(restoreMap)}\\n];\\n}`);\n\t\t}\n\n\t\tconst lineStr = lineList.join('\\n');\n\t\treturn varStr + lineStr;\n\t},\n\n\tLine(label: Node, stmts: Node, comment: Node, _eol: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\tconst labelStr = label.sourceString;\n\n\t\tif (labelStr) {\n\t\t\taddDefinedLabel(labelStr, lineIndex);\n\t\t}\n\n\t\tconst lineStr = stmts.eval();\n\n\t\tif (lineStr === \"return\") {\n\t\t\tif (definedLabels.length) {\n\t\t\t\tconst lastLabelItem = definedLabels[definedLabels.length - 1];\n\t\t\t\tlastLabelItem.last = lineIndex;\n\t\t\t}\n\t\t}\n\n\t\tconst commentStr = comment.sourceString ? `; //${comment.sourceString.substring(1)}` : \"\";\n\t\tconst semi = lineStr === \"\" || lineStr.endsWith(\"{\") || lineStr.startsWith(\"//\") || commentStr ? \"\" : \";\";\n\t\tlineIndex += 1;\n\t\treturn lineStr + commentStr + semi;\n\t},\n\n\tStatements(stmt: Node, _stmtSep: Node, stmts: Node) {\n\t\treturn [stmt.eval(), ...evalChildren(stmts.children)].join('; ');\n\t\t//TODO: return [stmt.eval(), ...evalChildren(stmts.children)].map((e) => e.endsWith(\"{\") ? e : `${e};`).join(' ');\n\t},\n\n\tArrayAssign(ident: Node, _op: Node, e: Node): string {\n\t\treturn `${ident.eval()} = ${e.eval()}`;\n\t},\n\n\tAssign(ident: Node, _op: Node, e: Node): string {\n\t\tconst name = ident.sourceString;\n\t\tconst name2 = getVariable(name);\n\t\tconst value = e.eval();\n\t\treturn `${name2} = ${value}`;\n\t},\n\n\tPrintArgs(arg: Node, _printSep: Node, args: Node) {\n\t\treturn [arg.eval(), ...evalChildren(args.children)].join(', ');\n\t},\n\tPrint(_printLit: Node, params: Node, semi: Node) {\n\t\tconst paramStr = params.child(0)?.eval() || \"\";\n\n\t\tlet newlineStr = \"\";\n\t\tif (!semi.sourceString) {\n\t\t\tnewlineStr = paramStr ? ` + \"\\\\n\"` : `\"\\\\n\"`;\n\t\t}\n\t\treturn `_o.print(${paramStr}${newlineStr})`;\n\t},\n\n\tAbs(_absLit: Node, _open: Node, e: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `Math.abs(${e.eval()})`;\n\t},\n\n\tAsc(_ascLit: Node, _open: Node, e: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `(${e.eval()}).charCodeAt(0)`;\n\t},\n\n\tAtn(_atnLit: Node, _open: Node, e: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `Math.atan(${e.eval()})`;\n\t},\n\n\tBin(_binLit: Node, _open: Node, e: Node, _comma: Node, n: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\tconst pad = n.child(0)?.eval();\n\t\tconst padStr = pad !== undefined ? `.padStart(${pad} || 0, \"0\")` : '';\n\t\treturn `(${e.eval()}).toString(2).toUpperCase()${padStr}`;\n\t},\n\n\tChr(_chrLit: Node, _open: Node, e: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `String.fromCharCode(${e.eval()})`;\n\t},\n\n\tComment(_commentLit: Node, remain: Node) {\n\t\treturn `//${remain.sourceString}`;\n\t},\n\n\tCos(_cosLit: Node, _open: Node, e: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `Math.cos(${e.eval()})`;\n\t},\n\n\tData(_datalit: Node, args: Node) {\n\t\tconst argList = args.asIteration().children.map(c => c.eval());\n\t\tconst dataIndex = dataList.length;\n\n\t\tif (definedLabels.length) {\n\t\t\tconst currentLabel = definedLabels[definedLabels.length - 1];\n\t\t\tcurrentLabel.dataIndex = dataIndex;\n\t\t}\n\n\t\tdataList.push(argList.join(\", \"));\n\t\treturn \"\";\n\t},\n\n\tDim(_dimLit: Node, arrayIdents: Node) {\n\t\tconst argList = arrayIdents.asIteration().children.map(c => c.eval());\n\t\tconst results: string[] = [];\n\n\t\tfor (const arg of argList) {\n\t\t\tconst [ident, ...indices] = arg;\n\t\t\tconst initValStr = ident.endsWith(\"$\") ? ', \"\"' : '';\n\t\t\tresults.push(`${ident} = _o.dimArray([${indices}]${initValStr})`); // automatically joined with comma\n\t\t}\n\n\t\treturn results.join(\"; \");\n\t},\n\n\tCint(_cintLit: Node, _open: Node, e: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `Math.round(${e.eval()})`;\n\t},\n\n\tCls(_clsLit: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `_o.cls()`;\n\t},\n\n\tComparison(_iflit: Node, condExp: Node, _thenLit: Node, thenStat: Node, elseLit: Node, elseStat: Node) {\n\t\tconst cond = condExp.eval();\n\t\tconst thSt = thenStat.eval();\n\n\t\tlet result = `if (${cond}) {\\n${thSt}\\n}`; // put in newlines to also allow line comments\n\t\tif (elseLit.sourceString) {\n\t\t\tconst elseSt = evalChildren(elseStat.children).join('; ');\n\t\t\tresult += ` else {\\n${elseSt}\\n}`;\n\t\t}\n\n\t\treturn result;\n\t},\n\n\tEnd(_endLit: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `return \"end\"`;\n\t},\n\n\tExp(_expLit: Node, _open: Node, e: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `Math.exp(${e.eval()})`;\n\t},\n\n\tFix(_fixLit: Node, _open: Node, e: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `Math.trunc(${e.eval()})`;\n\t},\n\n\tForLoop(_forLit: Node, variable: Node, _eqSign: Node, start: Node, _dirLit: Node, end: Node, _stepLit: Node, step: Node) {\n\t\tconst varExp = variable.eval();\n\t\tconst startExp = start.eval();\n\t\tconst endExp = end.eval();\n\t\tconst stepExp = step.child(0)?.eval() || \"1\";\n\n\t\tconst stepAsNum = Number(stepExp);\n\n\t\tlet cmpSt = \"\";\n\t\tif (isNaN(stepAsNum)) {\n\t\t\tcmpSt = `${stepExp} >= 0 ? ${varExp} <= ${endExp} : ${varExp} >= ${endExp}`\n\t\t} else {\n\t\t\tcmpSt = stepExp >= 0 ? `${varExp} <= ${endExp}` : `${varExp} >= ${endExp}`;\n\t\t}\n\n\t\tconst result = `for (${varExp} = ${startExp}; ${cmpSt}; ${varExp} += ${stepExp}) {`;\n\n\t\treturn result;\n\t},\n\n\tGosub(_gosubLit: Node, e: Node) {\n\t\tconst labelStr = e.sourceString;\n\t\taddGosubLabel(labelStr);\n\n\t\treturn `_${labelStr}()`;\n\t},\n\n\tHex(_hexLit: Node, _open: Node, e: Node, _comma: Node, n: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\tconst pad = n.child(0)?.eval();\n\t\tconst padStr = pad !== undefined ? `.padStart(${pad} || 0, \"0\")` : '';\n\t\treturn `(${e.eval()}).toString(16).toUpperCase()${padStr}`;\n\t},\n\n\tInt(_intLit: Node, _open: Node, e: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `Math.floor(${e.eval()})`;\n\t},\n\n\tLeft(_leftLit: Node, _open: Node, e1: Node, _comma: Node, e2: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `(${e1.eval()}).slice(0, ${e2.eval()})`;\n\t},\n\n\tLen(_lenLit: Node, _open: Node, e: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `(${e.eval()}).length`;\n\t},\n\n\tLog(_logLit: Node, _open: Node, e: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `Math.log(${e.eval()})`;\n\t},\n\n\tLog10(_log10Lit: Node, _open: Node, e: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `Math.log10(${e.eval()})`;\n\t},\n\n\tLower(_lowerLit: Node, _open: Node, e: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `(${e.eval()}).toLowerCase()`;\n\t},\n\n\tMax(_maxLit: Node, _open: Node, args: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\tconst argList = args.asIteration().children.map(c => c.eval()); // see also: ArrayArgs\n\t\treturn `Math.max(${argList})`;\n\t},\n\n\tMid(_midLit: Node, _open: Node, e1: Node, _comma1: Node, e2: Node, _comma2: Node, e3: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\tconst length = e3.child(0)?.eval();\n\t\tconst lengthStr = length === undefined ? \"\" : `, ${length}`;\n\t\treturn `(${e1.eval()}).substr(${e2.eval()} - 1${lengthStr})`;\n\t},\n\n\tMin(_minLit: Node, _open: Node, args: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\tconst argList = args.asIteration().children.map(c => c.eval()); // see also: ArrayArgs\n\t\treturn `Math.min(${argList})`;\n\t},\n\n\tNext(_nextLit: Node, variables: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\tconst argList = variables.asIteration().children.map(c => c.eval());\n\t\tif (!argList.length) {\n\t\t\targList.push(\"_any\");\n\t\t}\n\t\treturn '}'.repeat(argList.length);\n\t},\n\n\tOn(_nLit: Node, e1: Node, _gosubLit: Node, args: Node) {\n\t\tconst index = e1.eval();\n\t\tconst argList = args.asIteration().children.map(c => c.sourceString);\n\n\t\tfor (let i = 0; i < argList.length; i += 1) {\n\t\t\taddGosubLabel(argList[i]);\n\t\t}\n\n\t\treturn `[${argList.map((label) => `_${label}`).join(\",\")}]?.[${index} - 1]()`; // 1-based index\n\t},\n\n\tPi(_piLit: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn \"Math.PI\";\n\t},\n\n\tRead(_readlit: Node, args: Node) {\n\t\tconst argList = args.asIteration().children.map(c => c.eval());\n\t\tconst results: string[] = [];\n\t\tfor (const ident of argList) {\n\t\t\tresults.push(`${ident} = _data[_dataPrt++]`);\n\t\t}\n\t\treturn results.join(\"; \");\n\t},\n\n\tRem(_remLit: Node, remain: Node) {\n\t\treturn `// ${remain.sourceString}`;\n\t},\n\n\tRestore(_restoreLit: Node, e: Node) {\n\t\tconst labelStr = e.sourceString || \"0\";\n\t\taddRestoreLabel(labelStr);\n\n\t\treturn `_dataPtr = _restoreMap[${labelStr}]`;\n\t},\n\n\tReturn(_returnLit: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn \"return\";\n\t},\n\n\tRight(_rightLit: Node, _open: Node, e1: Node, _comma: Node, e2: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `(${e1.eval()}).slice(-${e2.eval()})`;\n\t},\n\n\tRnd(_rndLit: Node, _open: Node, _e: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\t// args are ignored\n\t\treturn `Math.random()`;\n\t},\n\n\tRound(_roundLit: Node, _open: Node, e: Node, _comma: Node, e2: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\tconst dec = e2.child(0)?.eval();\n\t\tif (dec) {\n\t\t\treturn `(Math.round(${e.eval()} * Math.pow(10, ${dec})) / Math.pow(10, ${dec}))`;\n\t\t}\n\t\treturn `Math.round(${e.eval()})`;\n\t\t// A better way to avoid rounding errors: https://www.jacklmoore.com/notes/rounding-in-javascript\n\t},\n\n\tSgn(_sgnLit: Node, _open: Node, e: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `Math.sign(${e.eval()})`;\n\t},\n\n\tSin(_sinLit: Node, _open: Node, e: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `Math.sin(${e.eval()})`;\n\t},\n\n\tSpace2(_stringLit: Node, _open: Node, len: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `\" \".repeat(${len.eval()})`;\n\t},\n\n\tSqr(_sqrLit: Node, _open: Node, e: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `Math.sqrt(${e.eval()})`;\n\t},\n\n\tStop(_stopLit: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `return \"stop\"`;\n\t},\n\n\tStr(_strLit: Node, _open: Node, e: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `String(${e.eval()})`; // TODO: additional space for n>0?\n\t},\n\n\tString2(_stringLit: Node, _open: Node, len: Node, _commaLit: Node, chr: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\t// Note: String$: we only support second parameter as string; we do not use charAt(0) to get just one char\n\t\treturn `(${chr.eval()}).repeat(${len.eval()})`;\n\t},\n\n\tTan(_tanLit: Node, _open: Node, e: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `Math.tan(${e.eval()})`;\n\t},\n\n\tTime(_timeLit: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `Date.now()`; // TODO; or *300/1000\n\t},\n\n\tUpper(_upperLit: Node, _open: Node, e: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `(${e.eval()}).toUpperCase()`;\n\t},\n\n\tVal(_upperLit: Node, _open: Node, e: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\tconst numPattern = /^\"[\\\\+\\\\-]?\\d*\\.?\\d+(?:[Ee][\\\\+\\\\-]?\\d+)?\"$/;\n\t\tconst numStr = String(e.eval());\n\n\t\tif (numPattern.test(numStr)) {\n\t\t\treturn `Number(${numStr})`; // for non-hex/bin number strings we can use this simple version\n\t\t}\n\t\treturn `Number((${numStr}).replace(\"&x\", \"0b\").replace(\"&\", \"0x\"))`;\n\t},\n\n\tWend(_wendLit: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn '}';\n\t},\n\n\tWhileLoop(_whileLit: Node, e: Node) {\n\t\tconst cond = e.eval();\n\t\treturn `while (${cond}) {`;\n\t},\n\n\tStrOrNumExp(e: Node) {\n\t\treturn String(e.eval());\n\t},\n\n\tXorExp_xor(a: Node, _op: Node, b: Node) {\n\t\treturn `${a.eval()} ^ ${b.eval()}`;\n\t},\n\n\tOrExp_or(a: Node, _op: Node, b: Node) {\n\t\treturn `${a.eval()} | ${b.eval()}`;\n\t},\n\n\tAndExp_and(a: Node, _op: Node, b: Node) {\n\t\treturn `${a.eval()} & ${b.eval()}`;\n\t},\n\n\tNotExp_not(_op: Node, e: Node) {\n\t\treturn `~(${e.eval()})`;\n\t},\n\n\tCmpExp_eq(a: Node, _op: Node, b: Node) {\n\t\treturn `${a.eval()} === ${b.eval()} ? -1 : 0`;\n\t},\n\tCmpExp_ne(a: Node, _op: Node, b: Node) {\n\t\treturn `${a.eval()} !== ${b.eval()} ? -1 : 0`;\n\t},\n\tCmpExp_lt(a: Node, _op: Node, b: Node) {\n\t\treturn `${a.eval()} < ${b.eval()} ? -1 : 0`;\n\t},\n\tCmpExp_le(a: Node, _op: Node, b: Node) {\n\t\treturn `${a.eval()} <= ${b.eval()} ? -1 : 0`;\n\t},\n\tCmpExp_gt(a: Node, _op: Node, b: Node) {\n\t\treturn `${a.eval()} > ${b.eval()} ? -1 : 0`;\n\t},\n\tCmpExp_ge(a: Node, _op: Node, b: Node) {\n\t\treturn `${a.eval()} >= ${b.eval()} ? -1 : 0`;\n\t},\n\n\tAddExp_plus(a: Node, _op: Node, b: Node) {\n\t\treturn `${a.eval()} + ${b.eval()}`;\n\t},\n\tAddExp_minus(a: Node, _op: Node, b: Node) {\n\t\treturn `${a.eval()} - ${b.eval()}`;\n\t},\n\n\tModExp_mod(a: Node, _op: Node, b: Node) {\n\t\treturn `${a.eval()} % ${b.eval()}`;\n\t},\n\n\tDivExp_div(a: Node, _op: Node, b: Node) {\n\t\treturn `(${a.eval()} / ${b.eval()}) | 0`;\n\t},\n\n\tMulExp_times(a: Node, _op: Node, b: Node) {\n\t\treturn `${a.eval()} * ${b.eval()}`;\n\t},\n\tMulExp_divide(a: Node, _op: Node, b: Node) {\n\t\treturn `${a.eval()} / ${b.eval()}`;\n\t},\n\n\tExpExp_power(a: Node, _: Node, b: Node) {\n\t\treturn `Math.pow(${a.eval()}, ${b.eval()})`;\n\t},\n\n\tPriExp_paren(_open: Node, e: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `(${e.eval()})`;\n\t},\n\tPriExp_pos(_op: Node, e: Node) {\n\t\treturn String(e.eval());\n\t},\n\tPriExp_neg(_op: Node, e: Node) {\n\t\treturn `-${e.eval()}`;\n\t},\n\n\tStrCmpExp_eq(a: Node, _op: Node, b: Node) {\n\t\treturn `${a.eval()} === ${b.eval()} ? -1 : 0`;\n\t},\n\tStrCmpExp_ne(a: Node, _op: Node, b: Node) {\n\t\treturn `${a.eval()} !== ${b.eval()} ? -1 : 0`;\n\t},\n\n\tStrAddExp_plus(a: Node, _op: Node, b: Node) {\n\t\treturn `${a.eval()} + ${b.eval()}`;\n\t},\n\n\tStrPriExp_paren(_open: Node, e: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `(${e.eval()})`;\n\t},\n\n\tArrayArgs(args: Node) {\n\t\treturn args.asIteration().children.map(c => String(c.eval()));\n\t},\n\n\tArrayIdent(ident: Node, _open: Node, e: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `${ident.eval()}[${e.eval().join(\"][\")}]`;\n\t},\n\n\tStrArrayIdent(ident: Node, _open: Node, e: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `${ident.eval()}[${e.eval().join(\"][\")}]`;\n\t},\n\n\tDimArrayIdent(ident: Node, _open: Node, indices: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn [ident.eval(), ...indices.eval()]; //TTT\n\t},\n\n\tdecimalValue(value: Node) {\n\t\treturn value.sourceString;\n\t},\n\n\thexValue(_prefix: Node, value: Node) {\n\t\treturn `0x${value.sourceString}`;\n\t},\n\n\tbinaryValue(_prefix: Node, value: Node) {\n\t\treturn `0b${value.sourceString}`;\n\t},\n\n\tstring(_quote1: Node, e: Node, _quote2: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `\"${e.sourceString}\"`;\n\t},\n\n\tident(ident: Node) {\n\t\tconst name = ident.sourceString;\n\t\treturn getVariable(name);\n\t},\n\n\tstrIdent(ident: Node, typeSuffix: Node) {\n\t\tconst name = ident.sourceString + typeSuffix.sourceString;\n\t\treturn getVariable(name);\n\t}\n};\n\n\nlet arithmeticParser: Parser;\n\nfunction compileScript(script: string) {\n\tif (!arithmeticParser) {\n\t\tarithmeticParser = new Parser(arithmetic.grammar, semantics);\n\t}\n\tresetParser();\n\n\tconst compiledScript = arithmeticParser.parseAndEval(script);\n\treturn compiledScript;\n}\n\nasync function executeScript(compiledScript: string) {\n\tvm.setOutput(\"\");\n\n\tif (compiledScript.startsWith(\"ERROR\")) {\n\t\treturn \"ERROR\" + \"\\n\";\n\t}\n\n\tlet output: string;\n\ttry {\n\t\tconst fnScript = new Function(\"_o\", compiledScript); // eslint-disable-line no-new-func\n\t\tconst result = fnScript(vm) || \"\";\n\t\tif (result instanceof Promise) {\n\t\t\toutput = vm.getOutput() + await result;\n\t\t} else {\n\t\t\toutput = vm.getOutput() + result;\n\t\t}\n\n\t} catch (error) {\n\t\toutput = \"ERROR: \";\n\t\tif (error instanceof Error) {\n\t\t\toutput += error.message;\n\n\t\t\tconst anyErr = error as any;\n\t\t\tconst lineNumber = anyErr.lineNumber; // only on FireFox\n\t\t\tconst columnNumber = anyErr.columnNumber; // only on FireFox\n\n\t\t\tif (lineNumber || columnNumber) {\n\t\t\t\tconst errLine = lineNumber - 2; // for some reason line 0 is 2\n\t\t\t\toutput += ` (line ${errLine}, column ${columnNumber})`;\n\t\t\t}\n\t\t} else {\n\t\t\toutput += \"unknown\";\n\t\t}\n\t}\n\treturn output + \"\\n\";\n}\n\n\nfunction debounce(func: T, delayPara: string): (...args: any[]) => void {\n\tlet timeoutId: ReturnType;\n\treturn function (this: any, ...args: any[]) {\n\t\tconst context = this;\n\t\tconst delay = startConfig[delayPara] as number;\n\t\tclearTimeout(timeoutId);\n\t\ttimeoutId = setTimeout(() => {\n\t\t\tfunc.apply(context, args);\n\t\t}, delay);\n\t};\n}\n\nfunction keepRunning(fn: Function, timeout: number) {\n\tconst timerId = setTimeout(() => { }, timeout);\n\treturn (async () => {\n\t\tfn();\n\t\tclearTimeout(timerId);\n\t})();\n}\n\nfunction asyncDelay(fn: Function, timeout: number) {\n\treturn (async () => {\n\t\tconst timerId = setTimeout(fn, timeout);\n\t\treturn timerId;\n\t})();\n}\n\n\nlet basicCm: any;\nlet compiledCm: any;\n\nfunction getOutputText() {\n\tconst outputText = document.getElementById(\"outputText\") as HTMLTextAreaElement;\n\treturn outputText.value;\n}\n\nfunction setOutputText(value: string) {\n\tconst outputText = document.getElementById(\"outputText\") as HTMLTextAreaElement;\n\toutputText.value = value;\n}\n\nasync function onExecuteButtonClick(_event: Event) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\tconst compiledText = document.getElementById(\"compiledText\") as HTMLTextAreaElement;\n\n\tconst compiledScript = compiledCm ? compiledCm.getValue() : compiledText.value;\n\n\tconst output = await executeScript(compiledScript);\n\n\tsetOutputText(getOutputText() + output);\n}\n\nfunction oncompiledTextChange(_event: Event) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\tconst autoExecuteInput = document.getElementById(\"autoExecuteInput\") as HTMLInputElement;\n\tif (autoExecuteInput.checked) {\n\t\tconst executeButton = window.document.getElementById(\"executeButton\") as HTMLButtonElement;\n\t\texecuteButton.dispatchEvent(new Event('click'));\n\t}\n}\n\nfunction onCompileButtonClick(_event: Event) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\tconst basicText = document.getElementById(\"basicText\") as HTMLTextAreaElement;\n\tconst compiledText = document.getElementById(\"compiledText\") as HTMLTextAreaElement;\n\tconst input = compiledCm ? basicCm.getValue() : basicText.value;\n\tconst compiledScript = compileScript(input);\n\n\tif (compiledCm) {\n\t\tcompiledCm.setValue(compiledScript);\n\t} else {\n\t\tcompiledText.value = compiledScript;\n\t\tconst autoExecuteInput = document.getElementById(\"autoExecuteInput\") as HTMLInputElement;\n\t\tif (autoExecuteInput.checked) {\n\t\t\tconst newEvent = new Event('change');\n\t\t\tcompiledText.dispatchEvent(newEvent);\n\t\t}\n\t}\n}\n\nfunction onbasicTextChange(_event: Event) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\tconst autoCompileInput = document.getElementById(\"autoCompileInput\") as HTMLInputElement;\n\tif (autoCompileInput.checked) {\n\t\tconst compileButton = window.document.getElementById(\"compileButton\") as HTMLButtonElement;\n\t\tcompileButton.dispatchEvent(new Event('click'));\n\t}\n}\n\nfunction onExampleSelectChange(event: Event) {\n\tconst exampleSelect = event.target as HTMLSelectElement;\n\n\tconst basicText = document.getElementById(\"basicText\") as HTMLTextAreaElement;\n\tconst value = examples[exampleSelect.value];\n\n\tsetOutputText(\"\");\n\n\tif (basicCm) {\n\t\tbasicCm.setValue(value);\n\t} else {\n\t\tbasicText.value = value;\n\t\tbasicText.dispatchEvent(new Event('change'));\n\t}\n}\n\n\nfunction setExampleSelectOptions(examples: Record) {\n\tconst exampleSelect = document.getElementById(\"exampleSelect\") as HTMLSelectElement;\n\n\tfor (const key of Object.keys(examples)) {\n\t\tconst value = key; //examples[key];\n\t\tconst option = window.document.createElement(\"option\");\n\n\t\toption.value = value;\n\t\toption.text = value;\n\t\toption.title = value;\n\t\toption.selected = false;\n\t\texampleSelect.add(option);\n\t}\n}\n\n\nfunction fnHereDoc(fn: () => void) {\n\treturn String(fn).\n\t\treplace(/^[^/]+\\/\\*\\S*/, \"\").\n\t\treplace(/\\*\\/[^/]+$/, \"\");\n}\n\nfunction addItem(key: string, input: string | (() => void)) {\n\tlet inputString = (typeof input !== \"string\") ? fnHereDoc(input) : input;\n\tinputString = inputString.replace(/^\\n/, \"\").replace(/\\n$/, \"\"); // remove preceding and trailing newlines\n\t// beware of data files ending with newlines! (do not use trimEnd)\n\n\tif (!key) { // maybe \"\"\n\t\tconst matches = inputString.match(/^\\s*\\d*\\s*(?:REM|rem|')\\s*(\\w+)/);\n\t\tkey = matches ? matches[1] : \"unknown\";\n\t}\n\n\texamples[key] = inputString;\n}\n\n\n\ninterface NodeFs {\n\t//readFile: (name: string, encoding: string, fn: (res: any) => void) => any\n\tpromises: any;\n}\n\nlet fs: NodeFs;\nlet modulePath: string;\n\ndeclare function require(name: string): any;\n\nasync function nodeReadFile(name: string): Promise {\n\tif (!fs) {\n\t\tfs = require(\"fs\");\n\t}\n\n\tif (!module) {\n\t\tmodule = require(\"module\");\n\t\tmodulePath = (module as any).path || \"\";\n\n\t\tif (!modulePath) {\n\t\t\tconsole.warn(\"nodeReadFile: Cannot determine module path\");\n\t\t}\n\t}\n\treturn fs.promises.readFile(name, \"utf8\");\n}\n\nfunction fnParseArgs(args: string[], config: ConfigType) {\n\tfor (let i = 0; i < args.length; i += 1) {\n\t\tconst [name, ...valueParts] = args[i].split(\"=\"),\n\t\t\tnameType = typeof config[name];\n\n\t\tlet value: ConfigEntryType = valueParts.join(\"=\");\n\t\tif (value !== undefined) {\n\t\t\tif (nameType === \"boolean\") {\n\t\t\t\tvalue = (value === \"true\");\n\t\t\t} else if (nameType === \"number\") {\n\t\t\t\tvalue = Number(value);\n\t\t\t}\n\t\t\tconfig[name] = value;\n\t\t}\n\t}\n\treturn config;\n}\n\nfunction fnDecodeUri(s: string) {\n\tlet decoded = \"\";\n\n\ttry {\n\t\tdecoded = decodeURIComponent(s.replace(/\\+/g, \" \"));\n\t} catch (err) {\n\t\tif (err instanceof Error) {\n\t\t\terr.message += \": \" + s;\n\t\t}\n\t\tconsole.error(err);\n\t}\n\treturn decoded;\n}\n\n// https://stackoverflow.com/questions/901115/how-can-i-get-query-string-values-in-javascript\nfunction fnParseUri(urlQuery: string, config: ConfigType) {\n\tconst rSearch = /([^&=]+)=?([^&]*)/g,\n\t\targs: string[] = [];\n\n\tlet match: RegExpExecArray | null;\n\n\twhile ((match = rSearch.exec(urlQuery)) !== null) {\n\t\tconst name = fnDecodeUri(match[1]),\n\t\t\tvalue = fnDecodeUri(match[2]);\n\n\t\tif (value !== null && config[name] !== undefined) {\n\t\t\targs.push(name + \"=\" + value);\n\t\t}\n\t}\n\treturn fnParseArgs(args, config);\n}\n\nfunction start(input: string) {\n\tif (input !== \"\") {\n\t\tconst compiledScript = compileScript(input);\n\n\t\tconsole.log(\"INFO: Compiled:\\n\" + compiledScript + \"\\n\");\n\n\t\treturn keepRunning(async () => {\n\t\t\tconst output = await executeScript(compiledScript);\n\t\t\tconsole.log(output);\n\t\t}, 5000);\n\t} else {\n\t\tconsole.log(\"No input\");\n\t}\n}\n\nfunction main(config: ConfigType) {\n\tlet input = (config.input as string) || \"\";\n\n\tif (config.fileName) {\n\t\treturn keepRunning(async () => {\n\t\t\tinput = await nodeReadFile(config.fileName as string);\n\t\t\tstart(input);\n\t\t}, 5000);\n\t} else {\n\t\tif (config.example) {\n\t\t\tif (!Object.keys(examples).length) {\n\t\t\t\treturn keepRunning(async () => {\n\t\t\t\t\tconst jsFile = await nodeReadFile(\"./dist/examples/examples.js\");\n\t\t\t\t\t// ?? require('./examples/examples.js');\n\t\t\t\t\tconst fnScript = new Function(\"cpcBasic\", jsFile);\n\t\t\t\t\tfnScript({\n\t\t\t\t\t\taddItem: addItem\n\t\t\t\t\t});\n\n\t\t\t\t\tinput = examples[config.example as string];\n\t\t\t\t\tstart(input);\n\t\t\t\t}, 5000);\n\t\t\t}\n\t\t\tinput += examples[config.example as string];\n\t\t}\n\t\tconsole.log(\"start\");\n\t\tstart(input);\n\t}\n}\n\nif (typeof window !== \"undefined\") {\n\t(window as any).cpcBasic = {\n\t\taddItem: addItem\n\t};\n\twindow.onload = () => {\n\t\tconst basicText = window.document.getElementById(\"basicText\") as HTMLTextAreaElement;\n\t\tbasicText.addEventListener('change', onbasicTextChange);\n\n\t\tconst compiledText = window.document.getElementById(\"compiledText\") as HTMLTextAreaElement;\n\t\tcompiledText.addEventListener('change', oncompiledTextChange);\n\n\t\tconst compileButton = window.document.getElementById(\"compileButton\") as HTMLButtonElement;\n\t\tcompileButton.addEventListener('click', onCompileButtonClick, false);\n\n\t\tconst executeButton = window.document.getElementById(\"executeButton\") as HTMLButtonElement;\n\t\texecuteButton.addEventListener('click', onExecuteButtonClick, false);\n\n\t\tconst exampleSelect = window.document.getElementById(\"exampleSelect\") as HTMLSelectElement;\n\t\texampleSelect.addEventListener('change', onExampleSelectChange);\n\n\t\tconst WinCodeMirror = (window as any).CodeMirror;\n\t\tif (WinCodeMirror) {\n\t\t\t//const debounceMs = 800;\n\t\t\tbasicCm = WinCodeMirror.fromTextArea(basicText, {\n\t\t\t\tlineNumbers: true,\n\t\t\t\tmode: 'javascript'\n\t\t\t});\n\t\t\tbasicCm.on('changes', debounce(onbasicTextChange, \"debounceCompile\"));\n\n\t\t\tcompiledCm = WinCodeMirror.fromTextArea(compiledText, {\n\t\t\t\tlineNumbers: true,\n\t\t\t\tmode: 'javascript'\n\t\t\t});\n\t\t\tcompiledCm.on('changes', debounce(oncompiledTextChange, \"debounceExecute\"));\n\t\t}\n\n\t\tvm.setOnCls(() => setOutputText(\"\"));\n\n\t\treturn asyncDelay(() => {\n\t\t\tsetExampleSelectOptions(examples);\n\t\t\tconst config = fnParseUri(window.location.search.substring(1), startConfig);\n\t\t\tif (config.example) {\n\t\t\t\tconst exampleSelect = document.getElementById(\"exampleSelect\") as HTMLSelectElement;\n\t\t\t\texampleSelect.value = config.example as string;\n\t\t\t}\n\t\t\t//const input = examples[config.example as string];\n\t\t\texampleSelect.dispatchEvent(new Event('change'));\n\t\t}, 10);\n\t};\n} else {\n\tmain(fnParseArgs(global.process.argv.slice(2), startConfig));\n}\n\nexport const testParser = {\n\tdimArray: dimArray\n};\n"],"names":["grammar"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"locobasic.js","sources":["../src/Parser.ts","../src/arithmetic.ts","../src/Semantics.ts","../src/Core.ts","../src/Ui.ts","../src/main.ts"],"sourcesContent":["// Parser.ts\n\nimport { type ActionDict, type Grammar, type Semantics, grammar } from \"ohm-js\";\n\nexport class Parser {\n\tprivate readonly ohmGrammar: Grammar;\n\tprivate readonly ohmSemantics: Semantics;\n\n\tconstructor(grammarString: string, semanticsMap: ActionDict) {\n\t\tthis.ohmGrammar = grammar(grammarString);\n\t\tthis.ohmSemantics = this.ohmGrammar\n\t\t\t.createSemantics()\n\t\t\t.addOperation(\"eval\", semanticsMap);\n\t}\n\n\t// Function to parse and evaluate an expression\n\tparseAndEval(input: string) {\n\t\ttry {\n\t\t\tconst matchResult = this.ohmGrammar.match(input);\n\t\t\tif (matchResult.succeeded()) {\n\t\t\t\treturn this.ohmSemantics(matchResult).eval();\n\t\t\t} else {\n\t\t\t\treturn 'ERROR: Parsing failed: ' + matchResult.message;\n\t\t\t}\n\t\t} catch (error) {\n\t\t\treturn 'ERROR: Parsing evaluator failed: ' + (error instanceof Error ? error.message : \"unknown\");\n\t\t}\n\t}\n}\n","// arithmetics.ts\n//\nexport const arithmetic = {\n grammar:\n `\n Arithmetic {\n Program\n = Line*\n\n Line\n = Label? Statements Comment? (eol | end)\n\n Label\n = label\n\n Statements\n = Statement (\":\" Statement)*\n\n Statement\n = Comment\n | Comparison\n | Cls\n | Data\n | Dim\n | End\n | ForLoop\n | Gosub\n | Next\n | On\n | Print\n | Read\n | Rem\n | Restore\n | Return\n | Stop\n | WhileLoop\n | Wend\n | ArrayAssign\n | Assign\n\n ArrayAssign\n = ArrayIdent \"=\" NumExp\n | StrArrayIdent \"=\" StrExp\n\n Abs\n = caseInsensitive<\"abs\"> \"(\" NumExp \")\"\n\n Asc\n = caseInsensitive<\"asc\"> \"(\" StrExp \")\"\n\n Atn\n = caseInsensitive<\"atn\"> \"(\" NumExp \")\"\n\n Assign\n = ident \"=\" NumExp\n | strIdent \"=\" StrExp\n\n Bin\n = caseInsensitive<\"bin$\"> \"(\" NumExp (\",\" NumExp)? \")\"\n\n Chr\n = caseInsensitive<\"chr$\"> \"(\" NumExp \")\"\n\n Cint\n = caseInsensitive<\"cint\"> \"(\" NumExp \")\"\n\n Cls\n = caseInsensitive<\"cls\">\n\n Comment\n = \"\\\\'\" partToEol\n\n Cos\n = caseInsensitive<\"cos\"> \"(\" NumExp \")\"\n\n DataItem\n = string | number\n\n Data\n = caseInsensitive<\"data\"> NonemptyListOf // TODO: also hex number?\n\n Dim\n = caseInsensitive<\"dim\"> NonemptyListOf\n\n End\n = caseInsensitive<\"end\">\n\n Exp\n = caseInsensitive<\"exp\"> \"(\" NumExp \")\"\n\n Fix\n = caseInsensitive<\"fix\"> \"(\" NumExp \")\"\n\n ForLoop\n = caseInsensitive<\"for\"> variable \"=\" NumExp caseInsensitive<\"to\"> NumExp (caseInsensitive<\"step\"> NumExp)?\n\n Gosub\n = caseInsensitive<\"gosub\"> label\n\n Hex\n = caseInsensitive<\"hex$\"> \"(\" NumExp (\",\" NumExp)? \")\"\n\n Int\n = caseInsensitive<\"int\"> \"(\" NumExp \")\"\n\n Left\n = caseInsensitive<\"left$\"> \"(\" StrExp \",\" NumExp \")\"\n\n Len\n = caseInsensitive<\"len\"> \"(\" StrExp \")\"\n\n Log\n = caseInsensitive<\"log\"> \"(\" NumExp \")\"\n\n Log10\n = caseInsensitive<\"log10\"> \"(\" NumExp \")\"\n\n Lower\n = caseInsensitive<\"lower$\"> \"(\" StrExp \")\"\n\n Max\n = caseInsensitive<\"max\"> \"(\" NonemptyListOf \")\"\n\n Mid\n = caseInsensitive<\"mid$\"> \"(\" StrExp \",\" NumExp (\",\" NumExp)? \")\"\n\n Min\n = caseInsensitive<\"min\"> \"(\" NonemptyListOf \")\"\n\n Pi\n = caseInsensitive<\"pi\">\n\n Next\n = caseInsensitive<\"next\"> ListOf\n\n On\n = caseInsensitive<\"on\"> NumExp caseInsensitive<\"gosub\"> NonemptyListOf\n\n Print\n = (caseInsensitive<\"print\"> | \"?\") PrintArgs? (\";\")?\n\n PrintArgs\n = PrintArg ((\",\" | \";\") PrintArg)*\n\n PrintArg\n = StrOrNumExp\n\n ReadItem\n = StrArrayIdent\n | ArrayIdent\n | strIdent\n | ident\n\n Read\n = caseInsensitive<\"read\"> NonemptyListOf\n\n Rem\n = caseInsensitive<\"Rem\"> partToEol\n\n Restore\n = caseInsensitive<\"Restore\"> label?\n\n Return\n = caseInsensitive<\"return\">\n\n Right\n = caseInsensitive<\"right$\"> \"(\" StrExp \",\" NumExp \")\"\n\n Rnd\n = caseInsensitive<\"rnd\"> \"(\" NumExp? \")\"\n \n Round\n = caseInsensitive<\"round\"> \"(\" NumExp (\",\" NumExp)? \")\"\n\n Sgn\n = caseInsensitive<\"sgn\"> \"(\" NumExp \")\"\n\n Sin\n = caseInsensitive<\"sin\"> \"(\" NumExp \")\"\n\n Space2\n = caseInsensitive<\"space$\"> \"(\" NumExp \")\"\n\n Sqr\n = caseInsensitive<\"sqr\"> \"(\" NumExp \")\"\n\n Stop\n = caseInsensitive<\"stop\">\n\n Str\n = caseInsensitive<\"str$\"> \"(\" NumExp \")\"\n\n String2\n = caseInsensitive<\"string$\"> \"(\" NumExp \",\" StrExp \")\"\n\n Tan\n = caseInsensitive<\"tan\"> \"(\" NumExp \")\"\n\n Time\n = caseInsensitive<\"time\">\n\n Upper\n = caseInsensitive<\"upper$\"> \"(\" StrExp \")\"\n\n Val\n = caseInsensitive<\"val\"> \"(\" StrExp \")\"\n\n Wend\n = caseInsensitive<\"wend\">\n\n WhileLoop\n = caseInsensitive<\"while\"> StrOrNumExp\n\n Comparison\n = caseInsensitive<\"if\"> StrOrNumExp caseInsensitive<\"then\"> Statements (caseInsensitive<\"else\"> Statements)?\n\n StrExp\n = StrOrExp\n\n StrOrExp\n = StrAndExp caseInsensitive<\"or\"> StrOrExp -- or\n | StrAndExp\n\n StrAndExp\n = StrCmpExp caseInsensitive<\"and\"> StrAndExp -- and\n | StrCmpExp\n\n StrCmpExp\n = StrCmpExp \"=\" StrAddExp -- eq\n | StrCmpExp \"<>\" StrAddExp -- ne\n | StrAddExp\n\n StrAddExp\n = StrAddExp \"+\" StrPriExp -- plus\n | StrPriExp\n\n StrPriExp\n = \"(\" StrExp \")\" -- paren\n | Bin\n | Chr\n | Hex\n | Left\n | Lower\n | Mid\n | Right\n | Space2\n | Str\n | String2\n | Upper\n | StrArrayIdent\n | strIdent\n | string\n\n StrOrNumExp\n = StrExp | NumExp\n\n NumExp\n = XorExp\n\n XorExp\n = OrExp caseInsensitive<\"xor\"> XorExp -- xor\n | OrExp\n\n OrExp\n = AndExp caseInsensitive<\"or\"> OrExp -- or\n | AndExp\n\n AndExp\n = NotExp caseInsensitive<\"and\"> AndExp -- and\n | NotExp\n\n NotExp\n = caseInsensitive<\"not\"> NotExp -- not\n | CmpExp\n\n CmpExp\n = CmpExp \"=\" AddExp -- eq\n | CmpExp \"<>\" AddExp -- ne\n | CmpExp \"<\" AddExp -- lt\n | CmpExp \"<=\" AddExp -- le\n | CmpExp \">\" AddExp -- gt\n | CmpExp \">=\" AddExp -- ge\n | AddExp\n\n AddExp\n = AddExp \"+\" ModExp -- plus\n | AddExp \"-\" ModExp -- minus\n | ModExp\n\n ModExp\n = ModExp caseInsensitive<\"mod\"> DivExp -- mod\n | DivExp\n\n DivExp\n = DivExp \"\\\\\\\\\" MulExp -- div\n | MulExp\n\n MulExp\n = MulExp \"*\" ExpExp -- times\n | MulExp \"/\" ExpExp -- divide\n | ExpExp\n\n ExpExp\n = PriExp \"^\" ExpExp -- power\n | PriExp\n\n PriExp\n = \"(\" NumExp \")\" -- paren\n | \"+\" PriExp -- pos\n | \"-\" PriExp -- neg\n | ArrayIdent\n | ident\n | number\n | Abs\n | Asc\n | Atn\n | Cint\n | Cos\n | Exp\n | Fix\n | Int\n | Len\n | Log\n | Log10\n | Max\n | Min\n | Pi\n | Rnd\n | Round\n | Sgn\n | Sin\n | Sqr\n | Tan\n | Time\n | Val\n\n\n ArrayArgs\n = NonemptyListOf\n\n ArrayIdent\n = ident \"(\" ArrayArgs \")\"\n\n StrArrayIdent\n = strIdent \"(\" ArrayArgs \")\"\n\n DimArrayIdent\n = ident \"(\" ArrayArgs \")\"\n | strIdent \"(\" ArrayArgs \")\"\n\n keyword\n = abs | after | and | asc | atn | auto | bin | border | break\n | call | cat | chain | chr | cint | clear | clg | closein | closeout | cls | cont | copychr | cos | creal | cursor\n | data | dec | def | defint | defreal | defstr | deg | delete | derr | di | dim | draw | drawr\n | edit | ei | else | end2 | ent | env | eof | erase | erl | err | error | every | exp | fill | fix | fn | for | frame | fre | gosub | goto | graphics\n | hex | himem | if | ink | inkey | inp | input | instr | int | joy | key | left | len | let | line | list | load | locate | log | log10 | lower2\n | mask | max | memory | merge | mid | min | mod | mode | move | mover | new | next | not | on | openin | openout | or | origin | out\n | paper | peek | pen | pi | plot | plotr | poke | pos | print\n | rad | randomize | read | release | rem | remain | renum | restore | resume | return | right | rnd | round | run\n | save | sgn | sin | sound | space2 | spc | speed | sq | sqr | step | stop | str | string2 | swap | symbol\n | tab | tag | tagoff | tan | test | testr | then | time | to | troff | tron | unt | upper2 | using\n | val | vpos | wait | wend | while | width | window | write | xor | xpos | ypos | zone\n\n\n abs\n = caseInsensitive<\"abs\"> ~identPart\n after\n = caseInsensitive<\"after\"> ~identPart\n and\n = caseInsensitive<\"and\"> ~identPart\n asc\n = caseInsensitive<\"asc\"> ~identPart\n atn\n = caseInsensitive<\"atn\"> ~identPart\n auto\n = caseInsensitive<\"auto\"> ~identPart\n bin\n = caseInsensitive<\"bin$\"> ~identPart\n border\n = caseInsensitive<\"border\"> ~identPart\n break\n = caseInsensitive<\"break\"> ~identPart\n call\n = caseInsensitive<\"call\"> ~identPart\n cat\n = caseInsensitive<\"cat\"> ~identPart\n chain\n = caseInsensitive<\"chain\"> ~identPart\n chr\n = caseInsensitive<\"chr$\"> ~identPart\n cint\n = caseInsensitive<\"cint\"> ~identPart\n clear\n = caseInsensitive<\"clear\"> ~identPart\n clg\n = caseInsensitive<\"clg\"> ~identPart\n closein\n = caseInsensitive<\"closein\"> ~identPart\n closeout\n = caseInsensitive<\"closeout\"> ~identPart\n cls\n = caseInsensitive<\"cls\"> ~identPart\n cont\n = caseInsensitive<\"cont\"> ~identPart\n copychr\n = caseInsensitive<\"copychr$\"> ~identPart\n cos\n = caseInsensitive<\"cos\"> ~identPart\n creal\n = caseInsensitive<\"creal\"> ~identPart\n cursor\n = caseInsensitive<\"cursor\"> ~identPart\n data\n = caseInsensitive<\"data\"> ~identPart\n dec\n = caseInsensitive<\"dec\"> ~identPart\n def\n = caseInsensitive<\"def\"> ~identPart\n defint\n = caseInsensitive<\"defint\"> ~identPart\n defreal\n = caseInsensitive<\"defreal\"> ~identPart\n defstr\n = caseInsensitive<\"defstr\"> ~identPart\n deg\n = caseInsensitive<\"deg\"> ~identPart\n delete\n = caseInsensitive<\"delete\"> ~identPart\n derr\n = caseInsensitive<\"derr\"> ~identPart\n di\n = caseInsensitive<\"di\"> ~identPart\n dim\n = caseInsensitive<\"dim\"> ~identPart\n draw\n = caseInsensitive<\"draw\"> ~identPart\n drawr\n = caseInsensitive<\"drawr\"> ~identPart\n edit\n = caseInsensitive<\"edit\"> ~identPart\n ei\n = caseInsensitive<\"ei\"> ~identPart\n else\n = caseInsensitive<\"else\"> ~identPart\n end2\n = caseInsensitive<\"end\"> ~identPart\n ent\n = caseInsensitive<\"ent\"> ~identPart\n env\n = caseInsensitive<\"env\"> ~identPart\n eof\n = caseInsensitive<\"eof\"> ~identPart\n erase\n = caseInsensitive<\"erase\"> ~identPart\n erl\n = caseInsensitive<\"erl\"> ~identPart\n err\n = caseInsensitive<\"err\"> ~identPart\n error\n = caseInsensitive<\"error\"> ~identPart\n every\n = caseInsensitive<\"every\"> ~identPart\n exp\n = caseInsensitive<\"exp\"> ~identPart\n fill\n = caseInsensitive<\"fill\"> ~identPart\n fix\n = caseInsensitive<\"fix\"> ~identPart\n fn\n = caseInsensitive<\"fn\"> ~identPart\n for\n = caseInsensitive<\"for\"> ~identPart\n frame\n = caseInsensitive<\"frame\"> ~identPart\n fre\n = caseInsensitive<\"fre\"> ~identPart\n gosub\n = caseInsensitive<\"gosub\"> ~identPart\n goto\n = caseInsensitive<\"goto\"> ~identPart\n graphics\n = caseInsensitive<\"graphics\"> ~identPart\n hex\n = caseInsensitive<\"hex$\"> ~identPart\n himem\n = caseInsensitive<\"himem\"> ~identPart\n if\n = caseInsensitive<\"if\"> ~identPart\n ink\n = caseInsensitive<\"ink\"> ~identPart\n inkey\n = caseInsensitive<\"inkey\"> ~identPart\n | caseInsensitive<\"inkey$\"> ~identPart\n inp\n = caseInsensitive<\"inp\"> ~identPart\n input\n = caseInsensitive<\"input\"> ~identPart\n instr\n = caseInsensitive<\"instr\"> ~identPart\n int\n = caseInsensitive<\"int\"> ~identPart\n joy\n = caseInsensitive<\"joy\"> ~identPart\n key\n = caseInsensitive<\"key\"> ~identPart\n left\n = caseInsensitive<\"left$\"> ~identPart\n len\n = caseInsensitive<\"len\"> ~identPart\n let\n = caseInsensitive<\"let\"> ~identPart\n line\n = caseInsensitive<\"line\"> ~identPart\n list\n = caseInsensitive<\"list\"> ~identPart\n load\n = caseInsensitive<\"load\"> ~identPart\n locate\n = caseInsensitive<\"locate\"> ~identPart\n log\n = caseInsensitive<\"log\"> ~identPart\n log10\n = caseInsensitive<\"log10\"> ~identPart\n lower2\n = caseInsensitive<\"lower$\"> ~identPart\n mask\n = caseInsensitive<\"mask\"> ~identPart\n max\n = caseInsensitive<\"max\"> ~identPart\n memory\n = caseInsensitive<\"memory\"> ~identPart\n merge\n = caseInsensitive<\"merge\"> ~identPart\n mid\n = caseInsensitive<\"mid$\"> ~identPart\n min\n = caseInsensitive<\"min\"> ~identPart\n mod\n = caseInsensitive<\"mod\"> ~identPart\n mode\n = caseInsensitive<\"mode\"> ~identPart\n move\n = caseInsensitive<\"move\"> ~identPart\n mover\n = caseInsensitive<\"mover\"> ~identPart\n new\n = caseInsensitive<\"new\"> ~identPart\n next\n = caseInsensitive<\"next\"> ~identPart\n not\n = caseInsensitive<\"not\"> ~identPart\n on\n = caseInsensitive<\"on\"> ~identPart\n openin\n = caseInsensitive<\"openin\"> ~identPart\n openout\n = caseInsensitive<\"openout\"> ~identPart\n or\n = caseInsensitive<\"or\"> ~identPart\n origin\n = caseInsensitive<\"origin\"> ~identPart\n out\n = caseInsensitive<\"out\"> ~identPart\n paper\n = caseInsensitive<\"paper\"> ~identPart\n peek\n = caseInsensitive<\"peek\"> ~identPart\n pen\n = caseInsensitive<\"pen\"> ~identPart\n pi\n = caseInsensitive<\"pi\"> ~identPart\n plot\n = caseInsensitive<\"plot\"> ~identPart\n plotr\n = caseInsensitive<\"plotr\"> ~identPart\n poke\n = caseInsensitive<\"poke\"> ~identPart\n pos\n = caseInsensitive<\"pos\"> ~identPart\n print\n = caseInsensitive<\"print\"> ~identPart\n rad\n = caseInsensitive<\"rad\"> ~identPart\n randomize\n = caseInsensitive<\"randomize\"> ~identPart\n read\n = caseInsensitive<\"read\"> ~identPart\n release\n = caseInsensitive<\"release\"> ~identPart\n rem\n = caseInsensitive<\"rem\"> ~identPart\n remain\n = caseInsensitive<\"remain\"> ~identPart\n renum\n = caseInsensitive<\"renum\"> ~identPart\n restore\n = caseInsensitive<\"restore\"> ~identPart\n resume\n = caseInsensitive<\"resume\"> ~identPart\n return\n = caseInsensitive<\"return\"> ~identPart\n right\n = caseInsensitive<\"right$\"> ~identPart\n rnd\n = caseInsensitive<\"rnd\"> ~identPart\n round\n = caseInsensitive<\"round\"> ~identPart\n run\n = caseInsensitive<\"run\"> ~identPart\n save\n = caseInsensitive<\"save\"> ~identPart\n sgn\n = caseInsensitive<\"sgn\"> ~identPart\n sin\n = caseInsensitive<\"sin\"> ~identPart\n sound\n = caseInsensitive<\"sound\"> ~identPart\n space2\n = caseInsensitive<\"space\"> ~identPart\n spc\n = caseInsensitive<\"spc\"> ~identPart\n speed\n = caseInsensitive<\"speed\"> ~identPart\n sq\n = caseInsensitive<\"sq\"> ~identPart\n sqr\n = caseInsensitive<\"sqr\"> ~identPart\n step\n = caseInsensitive<\"step\"> ~identPart\n stop\n = caseInsensitive<\"stop\"> ~identPart\n str\n = caseInsensitive<\"str$\"> ~identPart\n string2\n = caseInsensitive<\"string$\"> ~identPart\n swap\n = caseInsensitive<\"swap\"> ~identPart\n symbol\n = caseInsensitive<\"symbol\"> ~identPart\n tab\n = caseInsensitive<\"tab\"> ~identPart\n tag\n = caseInsensitive<\"tag\"> ~identPart\n tagoff\n = caseInsensitive<\"tagoff\"> ~identPart\n tan\n = caseInsensitive<\"tan\"> ~identPart\n test\n = caseInsensitive<\"test\"> ~identPart\n testr\n = caseInsensitive<\"testr\"> ~identPart\n then\n = caseInsensitive<\"then\"> ~identPart\n time\n = caseInsensitive<\"time\"> ~identPart\n to\n = caseInsensitive<\"to\"> ~identPart\n troff\n = caseInsensitive<\"troff\"> ~identPart\n tron\n = caseInsensitive<\"tron\"> ~identPart\n unt\n = caseInsensitive<\"unt\"> ~identPart\n upper2\n = caseInsensitive<\"upper$\"> ~identPart\n using\n = caseInsensitive<\"using\"> ~identPart\n val\n = caseInsensitive<\"val\"> ~identPart\n vpos\n = caseInsensitive<\"vpos\"> ~identPart\n wait\n = caseInsensitive<\"wait\"> ~identPart\n wend\n = caseInsensitive<\"wend\"> ~identPart\n while\n = caseInsensitive<\"while\"> ~identPart\n width\n = caseInsensitive<\"width\"> ~identPart\n window\n = caseInsensitive<\"window\"> ~identPart\n write\n = caseInsensitive<\"write\"> ~identPart\n xor\n = caseInsensitive<\"xor\"> ~identPart\n xpos\n = caseInsensitive<\"xpos\"> ~identPart\n ypos\n = caseInsensitive<\"ypos\"> ~identPart\n zone\n = caseInsensitive<\"zone\"> ~identPart\n\n\n ident (an identifier) =\n ~keyword identName\n\n identName = identStart identPart*\n\n identStart = letter\n\n identPart = identStart | digit\n\n variable = ident\n\n strIdent\n = ~keyword identName (\"$\")\n\n binaryDigit = \"0\"..\"1\"\n\n decimalValue (decimal number)\n = digit* \".\" digit+ -- fract\n | digit+ -- whole\n\n hexValue\n = \"&\" hexDigit+\n\n binaryValue\n = caseInsensitive<\"&x\"> binaryDigit+\n\n number (a number)\n = decimalValue\n | hexValue\n | binaryValue\n\n partToEol\n = (~eol any)*\n\n string = \"\\\\\"\" (\"\\\\\\\\\\\\\"\" | (~\"\\\\\"\" any))* \"\\\\\"\"\n\n label = digit+\n\n space := \" \" | \"\\t\"\n\n eol (end of line)\n = \"\\\\n\"\n }\n `\n};\n","// Semantics.ts\nimport type { ActionDict, Node } from \"ohm-js\";\n\nconst variables: Record = {};\n\nconst reJsKeyword = /^(arguments|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|eval|export|extends|false|finally|for|function|if|implements|import|in|instanceof|interface|let|new|null|package|private|protected|public|return|static|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)$/;\n\nfunction getVariable(name: string) {\n\tname = name.toLowerCase();\n\tif (reJsKeyword.test(name)) {\n\t\tname = `_${name}`;\n\t}\n\n\tvariables[name] = (variables[name] || 0) + 1;\n\treturn name;\n}\n\nfunction deleteAllItems(items: Record) {\n\tfor (const name in items) { // eslint-disable-line guard-for-in\n\t\tdelete items[name];\n\t}\n}\n\ntype DefinedLabelEntryType = {\n\tlabel: string,\n\tfirst: number,\n\tlast: number,\n\tdataIndex: number\n}\n\ntype GosubLabelEntryType = {\n\tcount: number\n}\n\nconst definedLabels: DefinedLabelEntryType[] = [];\nconst gosubLabels: Record = {};\nlet lineIndex = 0;\n\nconst dataList: (string | number)[] = [];\nconst restoreMap: Record = {};\n\nfunction addDefinedLabel(label: string, line: number) {\n\tdefinedLabels.push({\n\t\tlabel,\n\t\tfirst: line,\n\t\tlast: -1,\n\t\tdataIndex: -1\n\t});\n}\n\nfunction addGosubLabel(label: string) {\n\tgosubLabels[label] = gosubLabels[label] || {\n\t\tcount: 0\n\t};\n\n\tgosubLabels[label].count = (gosubLabels[label].count || 0) + 1;\n}\n\nfunction addRestoreLabel(label: string) {\n\trestoreMap[label] = -1;\n}\n\nfunction resetParser() {\n\tdeleteAllItems(variables);\n\tdefinedLabels.length = 0;\n\tdeleteAllItems(gosubLabels);\n\tlineIndex = 0;\n\tdataList.length = 0;\n\tdeleteAllItems(restoreMap);\n}\n\nfunction evalChildren(children: Node[]) {\n\treturn children.map(c => c.eval());\n}\n\n// Semantics to evaluate an arithmetic expression\nconst semantics: ActionDict = {\n\tProgram(lines: Node) {\n\t\tconst lineList = evalChildren(lines.children);\n\n\t\tconst variabeList = Object.keys(variables);\n\t\tconst varStr = variabeList.length ? \"let \" + variabeList.map((v) => v.endsWith(\"$\") ? `${v} = \"\"` : `${v} = 0`).join(\", \") + \";\\n\" : \"\";\n\n\t\t// find subroutines\n\t\tlet subFirst: DefinedLabelEntryType | undefined;\n\t\tfor (let index = 0; index < definedLabels.length; index += 1) {\n\t\t\tconst item = definedLabels[index];\n\t\t\tif (gosubLabels[item.label]) {\n\t\t\t\tsubFirst = item;\n\t\t\t}\n\n\t\t\tif (subFirst && item.last >= 0) {\n\t\t\t\tconst first = subFirst.first;\n\t\t\t\tconst indent = lineList[first].search(/\\S|$/);\n\t\t\t\tconst indentStr = \" \".repeat(indent);\n\n\t\t\t\tfor (let i = first; i <= item.last; i += 1) {\n\t\t\t\t\tlineList[i] = \" \" + lineList[i]; // ident\n\t\t\t\t}\n\n\t\t\t\tlineList[first] = `${indentStr}function _${subFirst.label}() {${indentStr}\\n` + lineList[first];\n\t\t\t\tlineList[item.last] += `\\n${indentStr}` + \"}\"; //TS issue when using the following? `\\n${indentStr}};`\n\t\t\t\tsubFirst = undefined;\n\t\t\t}\n\n\t\t\tif (restoreMap[item.label] === -1) {\n\t\t\t\trestoreMap[item.label] = item.dataIndex;\n\t\t\t}\n\t\t}\n\n\t\tif (dataList.length) {\n\t\t\tlineList.unshift(`const _data = _getData();\\nconst _restoreMap = _getRestore();\\nlet _dataPrt = 0;`);\n\t\t\tlineList.push(`function _getData() {\\nreturn [\\n${dataList.join(\",\\n\")}\\n];\\n}`);\n\t\t\tlineList.push(`function _getRestore() {\\nreturn [\\n${JSON.stringify(restoreMap)}\\n];\\n}`);\n\t\t}\n\n\t\tconst lineStr = lineList.join('\\n');\n\t\treturn varStr + lineStr;\n\t},\n\n\tLine(label: Node, stmts: Node, comment: Node, _eol: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\tconst labelStr = label.sourceString;\n\n\t\tif (labelStr) {\n\t\t\taddDefinedLabel(labelStr, lineIndex);\n\t\t}\n\n\t\tconst lineStr = stmts.eval();\n\n\t\tif (lineStr === \"return\") {\n\t\t\tif (definedLabels.length) {\n\t\t\t\tconst lastLabelItem = definedLabels[definedLabels.length - 1];\n\t\t\t\tlastLabelItem.last = lineIndex;\n\t\t\t}\n\t\t}\n\n\t\tconst commentStr = comment.sourceString ? `; //${comment.sourceString.substring(1)}` : \"\";\n\t\tconst semi = lineStr === \"\" || lineStr.endsWith(\"{\") || lineStr.startsWith(\"//\") || commentStr ? \"\" : \";\";\n\t\tlineIndex += 1;\n\t\treturn lineStr + commentStr + semi;\n\t},\n\n\tStatements(stmt: Node, _stmtSep: Node, stmts: Node) {\n\t\treturn [stmt.eval(), ...evalChildren(stmts.children)].join('; ');\n\t\t//TODO: return [stmt.eval(), ...evalChildren(stmts.children)].map((e) => e.endsWith(\"{\") ? e : `${e};`).join(' ');\n\t},\n\n\tArrayAssign(ident: Node, _op: Node, e: Node): string {\n\t\treturn `${ident.eval()} = ${e.eval()}`;\n\t},\n\n\tAssign(ident: Node, _op: Node, e: Node): string {\n\t\tconst name = ident.sourceString;\n\t\tconst name2 = getVariable(name);\n\t\tconst value = e.eval();\n\t\treturn `${name2} = ${value}`;\n\t},\n\n\tPrintArgs(arg: Node, _printSep: Node, args: Node) {\n\t\treturn [arg.eval(), ...evalChildren(args.children)].join(', ');\n\t},\n\tPrint(_printLit: Node, params: Node, semi: Node) {\n\t\tconst paramStr = params.child(0)?.eval() || \"\";\n\n\t\tlet newlineStr = \"\";\n\t\tif (!semi.sourceString) {\n\t\t\tnewlineStr = paramStr ? ` + \"\\\\n\"` : `\"\\\\n\"`;\n\t\t}\n\t\treturn `_o.print(${paramStr}${newlineStr})`;\n\t},\n\n\tAbs(_absLit: Node, _open: Node, e: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `Math.abs(${e.eval()})`;\n\t},\n\n\tAsc(_ascLit: Node, _open: Node, e: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `(${e.eval()}).charCodeAt(0)`;\n\t},\n\n\tAtn(_atnLit: Node, _open: Node, e: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `Math.atan(${e.eval()})`;\n\t},\n\n\tBin(_binLit: Node, _open: Node, e: Node, _comma: Node, n: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\tconst pad = n.child(0)?.eval();\n\t\tconst padStr = pad !== undefined ? `.padStart(${pad} || 0, \"0\")` : '';\n\t\treturn `(${e.eval()}).toString(2).toUpperCase()${padStr}`;\n\t},\n\n\tChr(_chrLit: Node, _open: Node, e: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `String.fromCharCode(${e.eval()})`;\n\t},\n\n\tComment(_commentLit: Node, remain: Node) {\n\t\treturn `//${remain.sourceString}`;\n\t},\n\n\tCos(_cosLit: Node, _open: Node, e: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `Math.cos(${e.eval()})`;\n\t},\n\n\tData(_datalit: Node, args: Node) {\n\t\tconst argList = args.asIteration().children.map(c => c.eval());\n\t\tconst dataIndex = dataList.length;\n\n\t\tif (definedLabels.length) {\n\t\t\tconst currentLabel = definedLabels[definedLabels.length - 1];\n\t\t\tcurrentLabel.dataIndex = dataIndex;\n\t\t}\n\n\t\tdataList.push(argList.join(\", \"));\n\t\treturn \"\";\n\t},\n\n\tDim(_dimLit: Node, arrayIdents: Node) {\n\t\tconst argList = arrayIdents.asIteration().children.map(c => c.eval());\n\t\tconst results: string[] = [];\n\n\t\tfor (const arg of argList) {\n\t\t\tconst [ident, ...indices] = arg;\n\t\t\tconst initValStr = ident.endsWith(\"$\") ? ', \"\"' : '';\n\t\t\tresults.push(`${ident} = _o.dimArray([${indices}]${initValStr})`); // automatically joined with comma\n\t\t}\n\n\t\treturn results.join(\"; \");\n\t},\n\n\tCint(_cintLit: Node, _open: Node, e: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `Math.round(${e.eval()})`;\n\t},\n\n\tCls(_clsLit: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `_o.cls()`;\n\t},\n\n\tComparison(_iflit: Node, condExp: Node, _thenLit: Node, thenStat: Node, elseLit: Node, elseStat: Node) {\n\t\tconst cond = condExp.eval();\n\t\tconst thSt = thenStat.eval();\n\n\t\tlet result = `if (${cond}) {\\n${thSt}\\n}`; // put in newlines to also allow line comments\n\t\tif (elseLit.sourceString) {\n\t\t\tconst elseSt = evalChildren(elseStat.children).join('; ');\n\t\t\tresult += ` else {\\n${elseSt}\\n}`;\n\t\t}\n\n\t\treturn result;\n\t},\n\n\tEnd(_endLit: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `return \"end\"`;\n\t},\n\n\tExp(_expLit: Node, _open: Node, e: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `Math.exp(${e.eval()})`;\n\t},\n\n\tFix(_fixLit: Node, _open: Node, e: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `Math.trunc(${e.eval()})`;\n\t},\n\n\tForLoop(_forLit: Node, variable: Node, _eqSign: Node, start: Node, _dirLit: Node, end: Node, _stepLit: Node, step: Node) {\n\t\tconst varExp = variable.eval();\n\t\tconst startExp = start.eval();\n\t\tconst endExp = end.eval();\n\t\tconst stepExp = step.child(0)?.eval() || \"1\";\n\n\t\tconst stepAsNum = Number(stepExp);\n\n\t\tlet cmpSt = \"\";\n\t\tif (isNaN(stepAsNum)) {\n\t\t\tcmpSt = `${stepExp} >= 0 ? ${varExp} <= ${endExp} : ${varExp} >= ${endExp}`\n\t\t} else {\n\t\t\tcmpSt = stepExp >= 0 ? `${varExp} <= ${endExp}` : `${varExp} >= ${endExp}`;\n\t\t}\n\n\t\tconst result = `for (${varExp} = ${startExp}; ${cmpSt}; ${varExp} += ${stepExp}) {`;\n\n\t\treturn result;\n\t},\n\n\tGosub(_gosubLit: Node, e: Node) {\n\t\tconst labelStr = e.sourceString;\n\t\taddGosubLabel(labelStr);\n\n\t\treturn `_${labelStr}()`;\n\t},\n\n\tHex(_hexLit: Node, _open: Node, e: Node, _comma: Node, n: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\tconst pad = n.child(0)?.eval();\n\t\tconst padStr = pad !== undefined ? `.padStart(${pad} || 0, \"0\")` : '';\n\t\treturn `(${e.eval()}).toString(16).toUpperCase()${padStr}`;\n\t},\n\n\tInt(_intLit: Node, _open: Node, e: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `Math.floor(${e.eval()})`;\n\t},\n\n\tLeft(_leftLit: Node, _open: Node, e1: Node, _comma: Node, e2: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `(${e1.eval()}).slice(0, ${e2.eval()})`;\n\t},\n\n\tLen(_lenLit: Node, _open: Node, e: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `(${e.eval()}).length`;\n\t},\n\n\tLog(_logLit: Node, _open: Node, e: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `Math.log(${e.eval()})`;\n\t},\n\n\tLog10(_log10Lit: Node, _open: Node, e: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `Math.log10(${e.eval()})`;\n\t},\n\n\tLower(_lowerLit: Node, _open: Node, e: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `(${e.eval()}).toLowerCase()`;\n\t},\n\n\tMax(_maxLit: Node, _open: Node, args: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\tconst argList = args.asIteration().children.map(c => c.eval()); // see also: ArrayArgs\n\t\treturn `Math.max(${argList})`;\n\t},\n\n\tMid(_midLit: Node, _open: Node, e1: Node, _comma1: Node, e2: Node, _comma2: Node, e3: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\tconst length = e3.child(0)?.eval();\n\t\tconst lengthStr = length === undefined ? \"\" : `, ${length}`;\n\t\treturn `(${e1.eval()}).substr(${e2.eval()} - 1${lengthStr})`;\n\t},\n\n\tMin(_minLit: Node, _open: Node, args: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\tconst argList = args.asIteration().children.map(c => c.eval()); // see also: ArrayArgs\n\t\treturn `Math.min(${argList})`;\n\t},\n\n\tNext(_nextLit: Node, variables: Node) {\n\t\tconst argList = variables.asIteration().children.map(c => c.eval());\n\t\tif (!argList.length) {\n\t\t\targList.push(\"_any\");\n\t\t}\n\t\treturn '}'.repeat(argList.length);\n\t},\n\n\tOn(_nLit: Node, e1: Node, _gosubLit: Node, args: Node) {\n\t\tconst index = e1.eval();\n\t\tconst argList = args.asIteration().children.map(c => c.sourceString);\n\n\t\tfor (let i = 0; i < argList.length; i += 1) {\n\t\t\taddGosubLabel(argList[i]);\n\t\t}\n\n\t\treturn `[${argList.map((label) => `_${label}`).join(\",\")}]?.[${index} - 1]()`; // 1-based index\n\t},\n\n\tPi(_piLit: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn \"Math.PI\";\n\t},\n\n\tRead(_readlit: Node, args: Node) {\n\t\tconst argList = args.asIteration().children.map(c => c.eval());\n\t\tconst results: string[] = [];\n\t\tfor (const ident of argList) {\n\t\t\tresults.push(`${ident} = _data[_dataPrt++]`);\n\t\t}\n\t\treturn results.join(\"; \");\n\t},\n\n\tRem(_remLit: Node, remain: Node) {\n\t\treturn `// ${remain.sourceString}`;\n\t},\n\n\tRestore(_restoreLit: Node, e: Node) {\n\t\tconst labelStr = e.sourceString || \"0\";\n\t\taddRestoreLabel(labelStr);\n\n\t\treturn `_dataPtr = _restoreMap[${labelStr}]`;\n\t},\n\n\tReturn(_returnLit: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn \"return\";\n\t},\n\n\tRight(_rightLit: Node, _open: Node, e1: Node, _comma: Node, e2: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `(${e1.eval()}).slice(-${e2.eval()})`;\n\t},\n\n\tRnd(_rndLit: Node, _open: Node, _e: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\t// args are ignored\n\t\treturn `Math.random()`;\n\t},\n\n\tRound(_roundLit: Node, _open: Node, e: Node, _comma: Node, e2: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\tconst dec = e2.child(0)?.eval();\n\t\tif (dec) {\n\t\t\treturn `(Math.round(${e.eval()} * Math.pow(10, ${dec})) / Math.pow(10, ${dec}))`;\n\t\t}\n\t\treturn `Math.round(${e.eval()})`;\n\t\t// A better way to avoid rounding errors: https://www.jacklmoore.com/notes/rounding-in-javascript\n\t},\n\n\tSgn(_sgnLit: Node, _open: Node, e: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `Math.sign(${e.eval()})`;\n\t},\n\n\tSin(_sinLit: Node, _open: Node, e: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `Math.sin(${e.eval()})`;\n\t},\n\n\tSpace2(_stringLit: Node, _open: Node, len: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `\" \".repeat(${len.eval()})`;\n\t},\n\n\tSqr(_sqrLit: Node, _open: Node, e: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `Math.sqrt(${e.eval()})`;\n\t},\n\n\tStop(_stopLit: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `return \"stop\"`;\n\t},\n\n\tStr(_strLit: Node, _open: Node, e: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `String(${e.eval()})`; // TODO: additional space for n>0?\n\t},\n\n\tString2(_stringLit: Node, _open: Node, len: Node, _commaLit: Node, chr: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\t// Note: String$: we only support second parameter as string; we do not use charAt(0) to get just one char\n\t\treturn `(${chr.eval()}).repeat(${len.eval()})`;\n\t},\n\n\tTan(_tanLit: Node, _open: Node, e: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `Math.tan(${e.eval()})`;\n\t},\n\n\tTime(_timeLit: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `Date.now()`; // TODO; or *300/1000\n\t},\n\n\tUpper(_upperLit: Node, _open: Node, e: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `(${e.eval()}).toUpperCase()`;\n\t},\n\n\tVal(_upperLit: Node, _open: Node, e: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\tconst numPattern = /^\"[\\\\+\\\\-]?\\d*\\.?\\d+(?:[Ee][\\\\+\\\\-]?\\d+)?\"$/;\n\t\tconst numStr = String(e.eval());\n\n\t\tif (numPattern.test(numStr)) {\n\t\t\treturn `Number(${numStr})`; // for non-hex/bin number strings we can use this simple version\n\t\t}\n\t\treturn `Number((${numStr}).replace(\"&x\", \"0b\").replace(\"&\", \"0x\"))`;\n\t},\n\n\tWend(_wendLit: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn '}';\n\t},\n\n\tWhileLoop(_whileLit: Node, e: Node) {\n\t\tconst cond = e.eval();\n\t\treturn `while (${cond}) {`;\n\t},\n\n\tStrOrNumExp(e: Node) {\n\t\treturn String(e.eval());\n\t},\n\n\tXorExp_xor(a: Node, _op: Node, b: Node) {\n\t\treturn `${a.eval()} ^ ${b.eval()}`;\n\t},\n\n\tOrExp_or(a: Node, _op: Node, b: Node) {\n\t\treturn `${a.eval()} | ${b.eval()}`;\n\t},\n\n\tAndExp_and(a: Node, _op: Node, b: Node) {\n\t\treturn `${a.eval()} & ${b.eval()}`;\n\t},\n\n\tNotExp_not(_op: Node, e: Node) {\n\t\treturn `~(${e.eval()})`;\n\t},\n\n\tCmpExp_eq(a: Node, _op: Node, b: Node) {\n\t\treturn `${a.eval()} === ${b.eval()} ? -1 : 0`;\n\t},\n\tCmpExp_ne(a: Node, _op: Node, b: Node) {\n\t\treturn `${a.eval()} !== ${b.eval()} ? -1 : 0`;\n\t},\n\tCmpExp_lt(a: Node, _op: Node, b: Node) {\n\t\treturn `${a.eval()} < ${b.eval()} ? -1 : 0`;\n\t},\n\tCmpExp_le(a: Node, _op: Node, b: Node) {\n\t\treturn `${a.eval()} <= ${b.eval()} ? -1 : 0`;\n\t},\n\tCmpExp_gt(a: Node, _op: Node, b: Node) {\n\t\treturn `${a.eval()} > ${b.eval()} ? -1 : 0`;\n\t},\n\tCmpExp_ge(a: Node, _op: Node, b: Node) {\n\t\treturn `${a.eval()} >= ${b.eval()} ? -1 : 0`;\n\t},\n\n\tAddExp_plus(a: Node, _op: Node, b: Node) {\n\t\treturn `${a.eval()} + ${b.eval()}`;\n\t},\n\tAddExp_minus(a: Node, _op: Node, b: Node) {\n\t\treturn `${a.eval()} - ${b.eval()}`;\n\t},\n\n\tModExp_mod(a: Node, _op: Node, b: Node) {\n\t\treturn `${a.eval()} % ${b.eval()}`;\n\t},\n\n\tDivExp_div(a: Node, _op: Node, b: Node) {\n\t\treturn `(${a.eval()} / ${b.eval()}) | 0`;\n\t},\n\n\tMulExp_times(a: Node, _op: Node, b: Node) {\n\t\treturn `${a.eval()} * ${b.eval()}`;\n\t},\n\tMulExp_divide(a: Node, _op: Node, b: Node) {\n\t\treturn `${a.eval()} / ${b.eval()}`;\n\t},\n\n\tExpExp_power(a: Node, _: Node, b: Node) {\n\t\treturn `Math.pow(${a.eval()}, ${b.eval()})`;\n\t},\n\n\tPriExp_paren(_open: Node, e: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `(${e.eval()})`;\n\t},\n\tPriExp_pos(_op: Node, e: Node) {\n\t\treturn String(e.eval());\n\t},\n\tPriExp_neg(_op: Node, e: Node) {\n\t\treturn `-${e.eval()}`;\n\t},\n\n\tStrCmpExp_eq(a: Node, _op: Node, b: Node) {\n\t\treturn `${a.eval()} === ${b.eval()} ? -1 : 0`;\n\t},\n\tStrCmpExp_ne(a: Node, _op: Node, b: Node) {\n\t\treturn `${a.eval()} !== ${b.eval()} ? -1 : 0`;\n\t},\n\n\tStrAddExp_plus(a: Node, _op: Node, b: Node) {\n\t\treturn `${a.eval()} + ${b.eval()}`;\n\t},\n\n\tStrPriExp_paren(_open: Node, e: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `(${e.eval()})`;\n\t},\n\n\tArrayArgs(args: Node) {\n\t\treturn args.asIteration().children.map(c => String(c.eval()));\n\t},\n\n\tArrayIdent(ident: Node, _open: Node, e: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `${ident.eval()}[${e.eval().join(\"][\")}]`;\n\t},\n\n\tStrArrayIdent(ident: Node, _open: Node, e: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `${ident.eval()}[${e.eval().join(\"][\")}]`;\n\t},\n\n\tDimArrayIdent(ident: Node, _open: Node, indices: Node, _close: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn [ident.eval(), ...indices.eval()]; //TTT\n\t},\n\n\tdecimalValue(value: Node) {\n\t\treturn value.sourceString;\n\t},\n\n\thexValue(_prefix: Node, value: Node) {\n\t\treturn `0x${value.sourceString}`;\n\t},\n\n\tbinaryValue(_prefix: Node, value: Node) {\n\t\treturn `0b${value.sourceString}`;\n\t},\n\n\tstring(_quote1: Node, e: Node, _quote2: Node) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\treturn `\"${e.sourceString}\"`;\n\t},\n\n\tident(ident: Node) {\n\t\tconst name = ident.sourceString;\n\t\treturn getVariable(name);\n\t},\n\n\tstrIdent(ident: Node, typeSuffix: Node) {\n\t\tconst name = ident.sourceString + typeSuffix.sourceString;\n\t\treturn getVariable(name);\n\t}\n};\n\n\nexport class Semantics {\n\tpublic getSemantics() {\n\t\treturn semantics;\n\t}\n\n\tpublic resetParser() {\n\t\tresetParser();\n\t}\n}\n","// core.ts\n\nimport type { ICore, ConfigType } from \"./Interfaces\";\nimport { Parser } from \"./Parser\";\nimport { arithmetic } from \"./arithmetic\";\nimport { Semantics } from \"./Semantics\";\n\ntype VariableValue = string | number | [] | VariableValue[];\n\nconst vm = {\n\t_output: \"\",\n\t_fnOnCls: (() => undefined) as () => void,\n\tdimArray: (dims: number[], initVal: string | number = 0) => {\n\t\tconst createRecursiveArray = function (depth: number) {\n\t\t\tconst length = dims[depth] + 1, // +1 because of 0-based index\n\t\t\t\tarray: VariableValue[] = new Array(length);\n\n\t\t\tdepth += 1;\n\t\t\tif (depth < dims.length) { // more dimensions?\n\t\t\t\tfor (let i = 0; i < length; i += 1) {\n\t\t\t\t\tarray[i] = createRecursiveArray(depth); // recursive call\n\t\t\t\t}\n\t\t\t} else { // one dimension\n\t\t\t\tarray.fill(initVal);\n\t\t\t}\n\t\t\treturn array;\n\t\t};\n\t\treturn createRecursiveArray(0);\n\t},\n\tcls: () => {\n\t\tvm._output = \"\";\n\t\tvm._fnOnCls();\n\t},\n\tprint: (...args: string[]) => vm._output += args.join(''),\n\n\tgetOutput: () => vm._output,\n\tsetOutput: (str: string) => vm._output = str,\n\tsetOnCls: (fn: () => void) => vm._fnOnCls = fn\n};\n\n\nexport class Core implements ICore {\n\tprivate readonly startConfig: ConfigType = {\n\t\tdebug: 0,\n\t\texample: \"\",\n\t\tfileName: \"\",\n\t\tinput: \"\",\n\t\tdebounceCompile: 800,\n\t\tdebounceExecute: 400\n\t};\n\n\tprivate readonly semantics = new Semantics();\n\n\tprivate readonly examples: Record = {};\n\n\tprivate vm = vm;\n\n\tpublic getConfigObject() {\n\t\treturn this.startConfig;\n\t}\n\n\tpublic getConfig(name: string) {\n\t\treturn this.startConfig[name];\n\t}\n\n\tpublic getExampleObject() {\n\t\treturn this.examples;\n\t}\n\n\tpublic setExample(name: string, script: string) {\n\t\tthis.examples[name] = script;\n\t}\n\n\tpublic getExample(name: string) {\n\t\treturn this.examples[name];\n\t}\n\n\tpublic setOnCls(fn: () => void) {\n\t\tvm.setOnCls(fn);\n\t}\n\n\tprivate arithmeticParser: Parser | undefined;\n\n\tpublic compileScript(script: string) {\n\t\tif (!this.arithmeticParser) {\n\t\t\tthis.arithmeticParser = new Parser(arithmetic.grammar, this.semantics.getSemantics());\n\t\t}\n\t\tthis.semantics.resetParser();\n\n\t\tconst compiledScript = this.arithmeticParser.parseAndEval(script);\n\t\treturn compiledScript;\n\t}\n\n\tasync executeScript(compiledScript: string) {\n\t\tthis.vm.setOutput(\"\");\n\n\t\tif (compiledScript.startsWith(\"ERROR\")) {\n\t\t\treturn \"ERROR\" + \"\\n\";\n\t\t}\n\n\t\tlet output: string;\n\t\ttry {\n\t\t\tconst fnScript = new Function(\"_o\", compiledScript);\n\t\t\tconst result = fnScript(this.vm) || \"\";\n\t\t\tif (result instanceof Promise) {\n\t\t\t\toutput = this.vm.getOutput() + await result;\n\t\t\t} else {\n\t\t\t\toutput = this.vm.getOutput() + result;\n\t\t\t}\n\n\t\t} catch (error) {\n\t\t\toutput = \"ERROR: \";\n\t\t\tif (error instanceof Error) {\n\t\t\t\toutput += error.message;\n\n\t\t\t\tconst anyErr = error as any;\n\t\t\t\tconst lineNumber = anyErr.lineNumber; // only on FireFox\n\t\t\t\tconst columnNumber = anyErr.columnNumber; // only on FireFox\n\n\t\t\t\tif (lineNumber || columnNumber) {\n\t\t\t\t\tconst errLine = lineNumber - 2; // for some reason line 0 is 2\n\t\t\t\t\toutput += ` (line ${errLine}, column ${columnNumber})`;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput += \"unknown\";\n\t\t\t}\n\t\t}\n\t\treturn output + \"\\n\";\n\t}\n}\n","// Ui.ts\n\nimport { ICore, IUi, ConfigType } from \"./Interfaces\";\n\nexport class Ui implements IUi {\n\tprivate readonly core: ICore;\n\tprivate basicCm: any;\n\tprivate compiledCm: any;\n\n\tconstructor(core: ICore) {\n\t\tthis.core = core;\n\t}\n\n\tprivate debounce void>(func: T, delayPara: string): (...args: any[]) => void {\n\t\tlet timeoutId: ReturnType;\n\t\tconst core = this.core;\n\t\treturn function (this: any, ...args: any[]) {\n\t\t\tconst context = this;\n\t\t\tconst delay = core.getConfig(delayPara) as number;\n\t\t\tclearTimeout(timeoutId);\n\t\t\ttimeoutId = setTimeout(() => {\n\t\t\t\tfunc.apply(context, args);\n\t\t\t}, delay);\n\t\t};\n\t}\n\n\tprivate static asyncDelay(fn: () => void, timeout: number) {\n\t\treturn (async () => {\n\t\t\tconst timerId = setTimeout(fn, timeout);\n\t\t\treturn timerId;\n\t\t})();\n\t}\n\n\n\tprivate getOutputText() {\n\t\tconst outputText = document.getElementById(\"outputText\") as HTMLTextAreaElement;\n\t\treturn outputText.value;\n\t}\n\n\tpublic setOutputText(value: string) {\n\t\tconst outputText = document.getElementById(\"outputText\") as HTMLTextAreaElement;\n\t\toutputText.value = value;\n\t}\n\n\tprivate async onExecuteButtonClick(_event: Event) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\tconst compiledText = document.getElementById(\"compiledText\") as HTMLTextAreaElement;\n\n\t\tconst compiledScript = this.compiledCm ? this.compiledCm.getValue() as string : compiledText.value;\n\n\t\tconst output = await this.core.executeScript(compiledScript);\n\n\t\tthis.setOutputText(this.getOutputText() + output);\n\t}\n\n\tprivate oncompiledTextChange(_event: Event) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\tconst autoExecuteInput = document.getElementById(\"autoExecuteInput\") as HTMLInputElement;\n\t\tif (autoExecuteInput.checked) {\n\t\t\tconst executeButton = window.document.getElementById(\"executeButton\") as HTMLButtonElement;\n\t\t\texecuteButton.dispatchEvent(new Event('click'));\n\t\t}\n\t}\n\n\tprivate onCompileButtonClick(_event: Event) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\tconst basicText = document.getElementById(\"basicText\") as HTMLTextAreaElement;\n\t\tconst compiledText = document.getElementById(\"compiledText\") as HTMLTextAreaElement;\n\t\tconst input = this.compiledCm ? this.basicCm.getValue() : basicText.value;\n\t\tconst compiledScript = this.core.compileScript(input);\n\n\t\tif (this.compiledCm) {\n\t\t\tthis.compiledCm.setValue(compiledScript);\n\t\t} else {\n\t\t\tcompiledText.value = compiledScript;\n\t\t\tconst autoExecuteInput = document.getElementById(\"autoExecuteInput\") as HTMLInputElement;\n\t\t\tif (autoExecuteInput.checked) {\n\t\t\t\tconst newEvent = new Event('change');\n\t\t\t\tcompiledText.dispatchEvent(newEvent);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate async onbasicTextChange(_event: Event) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\tconst autoCompileInput = document.getElementById(\"autoCompileInput\") as HTMLInputElement;\n\t\tif (autoCompileInput.checked) {\n\t\t\tconst compileButton = window.document.getElementById(\"compileButton\") as HTMLButtonElement;\n\t\t\tcompileButton.dispatchEvent(new Event('click'));\n\t\t}\n\t}\n\n\tprivate setExampleSelect(name: string) {\n\t\tconst exampleSelect = document.getElementById(\"exampleSelect\") as HTMLSelectElement;\n\t\texampleSelect.value = name;\n\t}\n\n\tprivate onExampleSelectChange(event: Event) {\n\t\tconst exampleSelect = event.target as HTMLSelectElement;\n\n\t\tconst basicText = document.getElementById(\"basicText\") as HTMLTextAreaElement;\n\t\tconst value = this.core.getExample(exampleSelect.value);\n\n\t\tthis.setOutputText(\"\");\n\n\t\tif (this.basicCm) {\n\t\t\tthis.basicCm.setValue(value);\n\t\t} else {\n\t\t\tbasicText.value = value;\n\t\t\tbasicText.dispatchEvent(new Event('change'));\n\t\t}\n\t}\n\n\n\tprivate setExampleSelectOptions(examples: Record) {\n\t\tconst exampleSelect = document.getElementById(\"exampleSelect\") as HTMLSelectElement;\n\n\t\tfor (const key of Object.keys(examples)) {\n\t\t\tconst script = examples[key];\n\t\t\tconst firstLine = script.slice(0, script.indexOf(\"\\n\"));\n\n\t\t\tconst option = window.document.createElement(\"option\");\n\t\t\toption.value = key;\n\t\t\toption.text = key;\n\t\t\toption.title = firstLine;\n\t\t\toption.selected = false;\n\t\t\texampleSelect.add(option);\n\t\t}\n\t}\n\n\tprivate fnDecodeUri(s: string) {\n\t\tlet decoded = \"\";\n\n\t\ttry {\n\t\t\tdecoded = decodeURIComponent(s.replace(/\\+/g, \" \"));\n\t\t} catch (err) {\n\t\t\tif (err instanceof Error) {\n\t\t\t\terr.message += \": \" + s;\n\t\t\t}\n\t\t\tconsole.error(err);\n\t\t}\n\t\treturn decoded;\n\t}\n\n\t// https://stackoverflow.com/questions/901115/how-can-i-get-query-string-values-in-javascript\n\tpublic parseUri(urlQuery: string, config: ConfigType): string[] {\n\t\tconst rSearch = /([^&=]+)=?([^&]*)/g,\n\t\t\targs: string[] = [];\n\n\t\tlet match: RegExpExecArray | null;\n\n\t\twhile ((match = rSearch.exec(urlQuery)) !== null) {\n\t\t\tconst name = this.fnDecodeUri(match[1]),\n\t\t\t\tvalue = this.fnDecodeUri(match[2]);\n\n\t\t\tif (value !== null && config[name] !== undefined) {\n\t\t\t\targs.push(name + \"=\" + value);\n\t\t\t}\n\t\t}\n\t\treturn args;\n\t}\n\n\tpublic onWindowLoad(_event: Event) { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\tconst basicText = window.document.getElementById(\"basicText\") as HTMLTextAreaElement;\n\t\tbasicText.addEventListener('change', (event) => this.onbasicTextChange(event));\n\n\t\tconst compiledText = window.document.getElementById(\"compiledText\") as HTMLTextAreaElement;\n\t\tcompiledText.addEventListener('change', (event) => this.oncompiledTextChange(event));\n\n\t\tconst compileButton = window.document.getElementById(\"compileButton\") as HTMLButtonElement;\n\t\tcompileButton.addEventListener('click', (event) => this.onCompileButtonClick(event), false);\n\n\t\tconst executeButton = window.document.getElementById(\"executeButton\") as HTMLButtonElement;\n\t\texecuteButton.addEventListener('click', (event) => this.onExecuteButtonClick(event), false);\n\n\t\tconst exampleSelect = window.document.getElementById(\"exampleSelect\") as HTMLSelectElement;\n\t\texampleSelect.addEventListener('change', (event) => this.onExampleSelectChange(event));\n\n\t\tconst WinCodeMirror = (window as any).CodeMirror;\n\t\tif (WinCodeMirror) {\n\t\t\tthis.basicCm = WinCodeMirror.fromTextArea(basicText, {\n\t\t\t\tlineNumbers: true,\n\t\t\t\tmode: 'javascript'\n\t\t\t});\n\t\t\tthis.basicCm.on('changes', this.debounce((event: Event) => this.onbasicTextChange(event), \"debounceCompile\"));\n\n\t\t\tthis.compiledCm = WinCodeMirror.fromTextArea(compiledText, {\n\t\t\t\tlineNumbers: true,\n\t\t\t\tmode: 'javascript'\n\t\t\t});\n\t\t\tthis.compiledCm.on('changes', this.debounce((event: Event) => this.oncompiledTextChange(event), \"debounceExecute\"));\n\t\t}\n\n\t\tUi.asyncDelay(() => {\n\t\t\tconst core = this.core;\n\t\t\tthis.setExampleSelectOptions(core.getExampleObject());\n\n\t\t\tconst example = this.core.getConfig(\"example\");\n\t\t\tif (example) {\n\t\t\t\tthis.setExampleSelect(example as string);\n\t\t\t}\n\t\t\texampleSelect.dispatchEvent(new Event('change'));\n\t\t}, 10);\n\t}\n\n}","// main.ts\n//\n// Usage:\n// node dist/locobasic.js input=\"?3 + 5 * (2 - 8)\"\n// node dist/locobasic.js fileName=dist/examples/example.bas\n// node dist/locobasic.js example=euler\n//\n// [ npx ts-node parser.ts input=\"?3 + 5 * (2 - 8)\" ]\n\nimport type { ConfigEntryType, ConfigType, ICore, IUi } from \"./Interfaces\";\nimport { Core } from \"./Core\";\nimport { Ui } from \"./Ui\";\n\nconst core: ICore = new Core();\n\nlet ui: IUi;\n\n\nfunction fnHereDoc(fn: () => void) {\n\treturn String(fn).\n\t\treplace(/^[^/]+\\/\\*\\S*/, \"\").\n\t\treplace(/\\*\\/[^/]+$/, \"\");\n}\n\nfunction addItem(key: string, input: string | (() => void)) {\n\tlet inputString = (typeof input !== \"string\") ? fnHereDoc(input) : input;\n\tinputString = inputString.replace(/^\\n/, \"\").replace(/\\n$/, \"\"); // remove preceding and trailing newlines\n\t// beware of data files ending with newlines! (do not use trimEnd)\n\n\tif (!key) { // maybe \"\"\n\t\tconst firstLine = inputString.slice(0, inputString.indexOf(\"\\n\"));\n\t\tconst matches = firstLine.match(/^\\s*\\d*\\s*(?:REM|rem|')\\s*(\\w+)/);\n\t\tkey = matches ? matches[1] : \"unknown\";\n\t}\n\n\tcore.setExample(key, inputString);\n}\n\n\ninterface NodeFs {\n\t//readFile: (name: string, encoding: string, fn: (res: any) => void) => any\n\tpromises: any;\n}\n\nlet fs: NodeFs;\nlet modulePath: string;\n\ndeclare function require(name: string): any;\n\nasync function nodeReadFile(name: string): Promise {\n\tif (!fs) {\n\t\tfs = require(\"fs\");\n\t}\n\n\tif (!module) {\n\t\tmodule = require(\"module\");\n\t\tmodulePath = (module as any).path || \"\";\n\n\t\tif (!modulePath) {\n\t\t\tconsole.warn(\"nodeReadFile: Cannot determine module path\");\n\t\t}\n\t}\n\treturn fs.promises.readFile(name, \"utf8\");\n}\n\nfunction fnParseArgs(args: string[], config: ConfigType) {\n\tfor (let i = 0; i < args.length; i += 1) {\n\t\tconst [name, ...valueParts] = args[i].split(\"=\"),\n\t\t\tnameType = typeof config[name];\n\n\t\tlet value: ConfigEntryType = valueParts.join(\"=\");\n\t\tif (value !== undefined) {\n\t\t\tif (nameType === \"boolean\") {\n\t\t\t\tvalue = (value === \"true\");\n\t\t\t} else if (nameType === \"number\") {\n\t\t\t\tvalue = Number(value);\n\t\t\t}\n\t\t\tconfig[name] = value;\n\t\t}\n\t}\n\treturn config;\n}\n\nfunction keepRunning(fn: () => void, timeout: number) {\n\tconst timerId = setTimeout(() => { }, timeout);\n\treturn (async () => {\n\t\tfn();\n\t\tclearTimeout(timerId);\n\t})();\n}\n\nfunction start(input: string) {\n\tif (input !== \"\") {\n\t\tconst compiledScript = core.compileScript(input);\n\n\t\tconsole.log(\"INFO: Compiled:\\n\" + compiledScript + \"\\n\");\n\n\t\treturn keepRunning(async () => {\n\t\t\tconst output = await core.executeScript(compiledScript);\n\t\t\tconsole.log(output);\n\t\t}, 5000);\n\t} else {\n\t\tconsole.log(\"No input\");\n\t}\n}\n\nfunction main(config: ConfigType) {\n\tlet input = (config.input as string) || \"\";\n\n\tif (config.fileName) {\n\t\treturn keepRunning(async () => {\n\t\t\tinput = await nodeReadFile(config.fileName as string);\n\t\t\tstart(input);\n\t\t}, 5000);\n\t} else {\n\t\tif (config.example) {\n\t\t\tconst examples = core.getExampleObject();\n\t\t\tif (!Object.keys(examples).length) {\n\t\t\t\treturn keepRunning(async () => {\n\t\t\t\t\tconst jsFile = await nodeReadFile(\"./dist/examples/examples.js\");\n\t\t\t\t\t// ?? require('./examples/examples.js');\n\t\t\t\t\tconst fnScript = new Function(\"cpcBasic\", jsFile);\n\t\t\t\t\tfnScript({\n\t\t\t\t\t\taddItem: addItem\n\t\t\t\t\t});\n\n\t\t\t\t\tinput = examples[config.example as string];\n\t\t\t\t\tstart(input);\n\t\t\t\t}, 5000);\n\t\t\t}\n\t\t\tinput += examples[config.example as string];\n\t\t}\n\t\tconsole.log(\"start\");\n\t\tstart(input);\n\t}\n}\n\nconst config = core.getConfigObject();\n\nif (typeof window !== \"undefined\") {\n\t(window as any).cpcBasic = {\n\t\taddItem: addItem\n\t};\n\twindow.onload = () => {\n\t\tui = new Ui(core);\n\n\t\tconst args = ui.parseUri(window.location.search.substring(1), config);\n\t\tfnParseArgs(args, config);\n\n\t\tcore.setOnCls(() => ui.setOutputText(\"\"));\n\t\tui.onWindowLoad(new Event(\"onload\"));\n\t}\n\n} else {\n\tmain(fnParseArgs(global.process.argv.slice(2), config));\n}\n"],"names":["grammar"],"mappings":"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"} \ No newline at end of file diff --git a/src/Core.d.ts b/src/Core.d.ts new file mode 100644 index 0000000..d5a580b --- /dev/null +++ b/src/Core.d.ts @@ -0,0 +1,17 @@ +import type { ICore, ConfigType } from "./Interfaces"; +export declare class Core implements ICore { + private readonly startConfig; + private readonly semantics; + private readonly examples; + private vm; + getConfigObject(): ConfigType; + getConfig(name: string): import("./Interfaces").ConfigEntryType; + getExampleObject(): Record; + setExample(name: string, script: string): void; + getExample(name: string): string; + setOnCls(fn: () => void): void; + private arithmeticParser; + compileScript(script: string): any; + executeScript(compiledScript: string): Promise; +} +//# sourceMappingURL=Core.d.ts.map \ No newline at end of file diff --git a/src/Core.d.ts.map b/src/Core.d.ts.map new file mode 100644 index 0000000..661fb41 --- /dev/null +++ b/src/Core.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Core.d.ts","sourceRoot":"","sources":["../../src/Core.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAuCtD,qBAAa,IAAK,YAAW,KAAK;IACjC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAO1B;IAEF,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAmB;IAE7C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA8B;IAEvD,OAAO,CAAC,EAAE,CAAM;IAET,eAAe;IAIf,SAAS,CAAC,IAAI,EAAE,MAAM;IAItB,gBAAgB;IAIhB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAIvC,UAAU,CAAC,IAAI,EAAE,MAAM;IAIvB,QAAQ,CAAC,EAAE,EAAE,MAAM,IAAI;IAI9B,OAAO,CAAC,gBAAgB,CAAqB;IAEtC,aAAa,CAAC,MAAM,EAAE,MAAM;IAU7B,aAAa,CAAC,cAAc,EAAE,MAAM;CAoC1C"} \ No newline at end of file diff --git a/src/Core.js b/src/Core.js new file mode 100644 index 0000000..1ecb4f5 --- /dev/null +++ b/src/Core.js @@ -0,0 +1,120 @@ +// core.ts +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +import { Parser } from "./Parser"; +import { arithmetic } from "./arithmetic"; +import { Semantics } from "./Semantics"; +const vm = { + _output: "", + _fnOnCls: (() => undefined), + dimArray: (dims, initVal = 0) => { + const createRecursiveArray = function (depth) { + const length = dims[depth] + 1, // +1 because of 0-based index + array = new Array(length); + depth += 1; + if (depth < dims.length) { // more dimensions? + for (let i = 0; i < length; i += 1) { + array[i] = createRecursiveArray(depth); // recursive call + } + } + else { // one dimension + array.fill(initVal); + } + return array; + }; + return createRecursiveArray(0); + }, + cls: () => { + vm._output = ""; + vm._fnOnCls(); + }, + print: (...args) => vm._output += args.join(''), + getOutput: () => vm._output, + setOutput: (str) => vm._output = str, + setOnCls: (fn) => vm._fnOnCls = fn +}; +export class Core { + constructor() { + this.startConfig = { + debug: 0, + example: "", + fileName: "", + input: "", + debounceCompile: 800, + debounceExecute: 400 + }; + this.semantics = new Semantics(); + this.examples = {}; + this.vm = vm; + } + getConfigObject() { + return this.startConfig; + } + getConfig(name) { + return this.startConfig[name]; + } + getExampleObject() { + return this.examples; + } + setExample(name, script) { + this.examples[name] = script; + } + getExample(name) { + return this.examples[name]; + } + setOnCls(fn) { + vm.setOnCls(fn); + } + compileScript(script) { + if (!this.arithmeticParser) { + this.arithmeticParser = new Parser(arithmetic.grammar, this.semantics.getSemantics()); + } + this.semantics.resetParser(); + const compiledScript = this.arithmeticParser.parseAndEval(script); + return compiledScript; + } + executeScript(compiledScript) { + return __awaiter(this, void 0, void 0, function* () { + this.vm.setOutput(""); + if (compiledScript.startsWith("ERROR")) { + return "ERROR" + "\n"; + } + let output; + try { + const fnScript = new Function("_o", compiledScript); + const result = fnScript(this.vm) || ""; + if (result instanceof Promise) { + output = this.vm.getOutput() + (yield result); + } + else { + output = this.vm.getOutput() + result; + } + } + catch (error) { + output = "ERROR: "; + if (error instanceof Error) { + output += error.message; + const anyErr = error; + const lineNumber = anyErr.lineNumber; // only on FireFox + const columnNumber = anyErr.columnNumber; // only on FireFox + if (lineNumber || columnNumber) { + const errLine = lineNumber - 2; // for some reason line 0 is 2 + output += ` (line ${errLine}, column ${columnNumber})`; + } + } + else { + output += "unknown"; + } + } + return output + "\n"; + }); + } +} +//# sourceMappingURL=Core.js.map \ No newline at end of file diff --git a/src/Core.js.map b/src/Core.js.map new file mode 100644 index 0000000..3f58715 --- /dev/null +++ b/src/Core.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Core.js","sourceRoot":"","sources":["../../src/Core.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/Interfaces.d.ts b/src/Interfaces.d.ts new file mode 100644 index 0000000..9612c35 --- /dev/null +++ b/src/Interfaces.d.ts @@ -0,0 +1,19 @@ +export type ConfigEntryType = string | number | boolean; +export type ConfigType = Record; +export type ExampleType = Record; +export interface ICore { + getConfigObject(): ConfigType; + getConfig(name: string): ConfigEntryType; + getExampleObject(): ExampleType; + getExample(name: string): string; + setExample(key: string, script: string): void; + compileScript(script: string): string; + executeScript(compiledScript: string): Promise; + setOnCls(fn: () => void): void; +} +export interface IUi { + parseUri(urlQuery: string, config: ConfigType): string[]; + onWindowLoad(event: Event): void; + setOutputText(value: string): void; +} +//# sourceMappingURL=Interfaces.d.ts.map \ No newline at end of file diff --git a/src/Interfaces.d.ts.map b/src/Interfaces.d.ts.map new file mode 100644 index 0000000..263848d --- /dev/null +++ b/src/Interfaces.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Interfaces.d.ts","sourceRoot":"","sources":["../../src/Interfaces.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AACxD,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;AAEzD,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEjD,MAAM,WAAW,KAAK;IACrB,eAAe,IAAI,UAAU,CAAC;IAC9B,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAAC;IACzC,gBAAgB,IAAI,WAAW,CAAC;IAChC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACjC,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9C,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACtC,aAAa,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACvD,QAAQ,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI,CAAA;CAC9B;AAED,MAAM,WAAW,GAAG;IACnB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM,EAAE,CAAC;IACzD,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACjC,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CAClC"} \ No newline at end of file diff --git a/src/Interfaces.js b/src/Interfaces.js new file mode 100644 index 0000000..fef875e --- /dev/null +++ b/src/Interfaces.js @@ -0,0 +1,3 @@ +// Interfaces.ts +export {}; +//# sourceMappingURL=Interfaces.js.map \ No newline at end of file diff --git a/src/Interfaces.js.map b/src/Interfaces.js.map new file mode 100644 index 0000000..7979d33 --- /dev/null +++ b/src/Interfaces.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Interfaces.js","sourceRoot":"","sources":["../../src/Interfaces.ts"],"names":[],"mappings":"AAAA,gBAAgB"} \ No newline at end of file diff --git a/src/Parser.d.ts b/src/Parser.d.ts new file mode 100644 index 0000000..2fb6d3e --- /dev/null +++ b/src/Parser.d.ts @@ -0,0 +1,8 @@ +import { type ActionDict } from "ohm-js"; +export declare class Parser { + private readonly ohmGrammar; + private readonly ohmSemantics; + constructor(grammarString: string, semanticsMap: ActionDict); + parseAndEval(input: string): any; +} +//# sourceMappingURL=Parser.d.ts.map \ No newline at end of file diff --git a/src/Parser.d.ts.map b/src/Parser.d.ts.map new file mode 100644 index 0000000..1c1729d --- /dev/null +++ b/src/Parser.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Parser.d.ts","sourceRoot":"","sources":["../../src/Parser.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,UAAU,EAAyC,MAAM,QAAQ,CAAC;AAEhF,qBAAa,MAAM;IAClB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAU;IACrC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAY;gBAE7B,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;IAQ9E,YAAY,CAAC,KAAK,EAAE,MAAM;CAY1B"} \ No newline at end of file diff --git a/src/Parser.js b/src/Parser.js new file mode 100644 index 0000000..5d9634b --- /dev/null +++ b/src/Parser.js @@ -0,0 +1,26 @@ +// Parser.ts +import { grammar } from "ohm-js"; +export class Parser { + constructor(grammarString, semanticsMap) { + this.ohmGrammar = grammar(grammarString); + this.ohmSemantics = this.ohmGrammar + .createSemantics() + .addOperation("eval", semanticsMap); + } + // Function to parse and evaluate an expression + parseAndEval(input) { + try { + const matchResult = this.ohmGrammar.match(input); + if (matchResult.succeeded()) { + return this.ohmSemantics(matchResult).eval(); + } + else { + return 'ERROR: Parsing failed: ' + matchResult.message; + } + } + catch (error) { + return 'ERROR: Parsing evaluator failed: ' + (error instanceof Error ? error.message : "unknown"); + } + } +} +//# sourceMappingURL=Parser.js.map \ No newline at end of file diff --git a/src/Parser.js.map b/src/Parser.js.map new file mode 100644 index 0000000..d7a5091 --- /dev/null +++ b/src/Parser.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Parser.js","sourceRoot":"","sources":["../../src/Parser.ts"],"names":[],"mappings":"AAAA,YAAY;AAEZ,OAAO,EAAiD,OAAO,EAAE,MAAM,QAAQ,CAAC;AAEhF,MAAM,OAAO,MAAM;IAIlB,YAAY,aAAqB,EAAE,YAA2C;QAC7E,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;QACzC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU;aACjC,eAAe,EAAE;aACjB,YAAY,CAAoB,MAAM,EAAE,YAAY,CAAC,CAAC;IACzD,CAAC;IAED,+CAA+C;IAC/C,YAAY,CAAC,KAAa;QACzB,IAAI,CAAC;YACJ,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACjD,IAAI,WAAW,CAAC,SAAS,EAAE,EAAE,CAAC;gBAC7B,OAAO,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC;YAC9C,CAAC;iBAAM,CAAC;gBACP,OAAO,yBAAyB,GAAG,WAAW,CAAC,OAAO,CAAC;YACxD,CAAC;QACF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,mCAAmC,GAAG,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACnG,CAAC;IACF,CAAC;CACD"} \ No newline at end of file diff --git a/src/Semantics.d.ts b/src/Semantics.d.ts new file mode 100644 index 0000000..1b3a3fd --- /dev/null +++ b/src/Semantics.d.ts @@ -0,0 +1,6 @@ +import type { ActionDict } from "ohm-js"; +export declare class Semantics { + getSemantics(): ActionDict; + resetParser(): void; +} +//# sourceMappingURL=Semantics.d.ts.map \ No newline at end of file diff --git a/src/Semantics.d.ts.map b/src/Semantics.d.ts.map new file mode 100644 index 0000000..9de4081 --- /dev/null +++ b/src/Semantics.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Semantics.d.ts","sourceRoot":"","sources":["../../src/Semantics.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAQ,MAAM,QAAQ,CAAC;AA+kB/C,qBAAa,SAAS;IACd,YAAY;IAIZ,WAAW;CAGlB"} \ No newline at end of file diff --git a/src/parser.js b/src/Semantics.js similarity index 54% rename from src/parser.js rename to src/Semantics.js index 5df6df1..8d5477e 100644 --- a/src/parser.js +++ b/src/Semantics.js @@ -1,85 +1,3 @@ -// parser.ts -// A simple parser for arithmetic expressions using Ohm -// -// Usage: -// node dist/locobasic.js input="?3 + 5 * (2 - 8)" -// node dist/locobasic.js fileName=dist/examples/example.bas -// node dist/locobasic.js example=euler -// -// [ npx ts-node parser.ts input="?3 + 5 * (2 - 8)" ] -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -import { grammar } from "ohm-js"; -import { arithmetic } from "./arithmetic"; -const startConfig = { - debug: 0, - example: "", - fileName: "", - input: "", - debounceCompile: 800, - debounceExecute: 400 -}; -const examples = {}; -function dimArray(dims, initVal = 0) { - const createRecursiveArray = function (depth) { - const length = dims[depth] + 1, // +1 because of 0-based index - array = new Array(length); - depth += 1; - if (depth < dims.length) { // more dimensions? - for (let i = 0; i < length; i += 1) { - array[i] = createRecursiveArray(depth); // recursive call - } - } - else { // one dimension - array.fill(initVal); - } - return array; - }; - return createRecursiveArray(0); -} -const vm = { - _output: "", - _fnOnCls: (() => undefined), - dimArray: dimArray, - cls: () => { - vm._output = ""; - vm._fnOnCls(); - }, - print: (...args) => vm._output += args.join(''), - getOutput: () => vm._output, - setOutput: (str) => vm._output = str, - setOnCls: (fn) => vm._fnOnCls = fn -}; -class Parser { - constructor(grammarString, semanticsMap) { - this.ohmGrammar = grammar(grammarString); - this.ohmSemantics = this.ohmGrammar - .createSemantics() - .addOperation("eval", semanticsMap); - } - // Function to parse and evaluate an expression - parseAndEval(input) { - try { - const matchResult = this.ohmGrammar.match(input); - if (matchResult.succeeded()) { - return this.ohmSemantics(matchResult).eval(); - } - else { - return 'ERROR: Parsing failed: ' + matchResult.message; - } - } - catch (error) { - return 'ERROR: Parsing evaluator failed: ' + (error instanceof Error ? error.message : "unknown"); - } - } -} const variables = {}; const reJsKeyword = /^(arguments|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|eval|export|extends|false|finally|for|function|if|implements|import|in|instanceof|interface|let|new|null|package|private|protected|public|return|static|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)$/; function getVariable(name) { @@ -542,309 +460,12 @@ const semantics = { return getVariable(name); } }; -let arithmeticParser; -function compileScript(script) { - if (!arithmeticParser) { - arithmeticParser = new Parser(arithmetic.grammar, semantics); +export class Semantics { + getSemantics() { + return semantics; } - resetParser(); - const compiledScript = arithmeticParser.parseAndEval(script); - return compiledScript; -} -function executeScript(compiledScript) { - return __awaiter(this, void 0, void 0, function* () { - vm.setOutput(""); - if (compiledScript.startsWith("ERROR")) { - return "ERROR" + "\n"; - } - let output; - try { - const fnScript = new Function("_o", compiledScript); // eslint-disable-line no-new-func - const result = fnScript(vm) || ""; - if (result instanceof Promise) { - output = vm.getOutput() + (yield result); - } - else { - output = vm.getOutput() + result; - } - } - catch (error) { - output = "ERROR: "; - if (error instanceof Error) { - output += error.message; - const anyErr = error; - const lineNumber = anyErr.lineNumber; // only on FireFox - const columnNumber = anyErr.columnNumber; // only on FireFox - if (lineNumber || columnNumber) { - const errLine = lineNumber - 2; // for some reason line 0 is 2 - output += ` (line ${errLine}, column ${columnNumber})`; - } - } - else { - output += "unknown"; - } - } - return output + "\n"; - }); -} -function debounce(func, delayPara) { - let timeoutId; - return function (...args) { - const context = this; - const delay = startConfig[delayPara]; - clearTimeout(timeoutId); - timeoutId = setTimeout(() => { - func.apply(context, args); - }, delay); - }; -} -function keepRunning(fn, timeout) { - const timerId = setTimeout(() => { }, timeout); - return (() => __awaiter(this, void 0, void 0, function* () { - fn(); - clearTimeout(timerId); - }))(); -} -function asyncDelay(fn, timeout) { - return (() => __awaiter(this, void 0, void 0, function* () { - const timerId = setTimeout(fn, timeout); - return timerId; - }))(); -} -let basicCm; -let compiledCm; -function getOutputText() { - const outputText = document.getElementById("outputText"); - return outputText.value; -} -function setOutputText(value) { - const outputText = document.getElementById("outputText"); - outputText.value = value; -} -function onExecuteButtonClick(_event) { - return __awaiter(this, void 0, void 0, function* () { - const compiledText = document.getElementById("compiledText"); - const compiledScript = compiledCm ? compiledCm.getValue() : compiledText.value; - const output = yield executeScript(compiledScript); - setOutputText(getOutputText() + output); - }); -} -function oncompiledTextChange(_event) { - const autoExecuteInput = document.getElementById("autoExecuteInput"); - if (autoExecuteInput.checked) { - const executeButton = window.document.getElementById("executeButton"); - executeButton.dispatchEvent(new Event('click')); - } -} -function onCompileButtonClick(_event) { - const basicText = document.getElementById("basicText"); - const compiledText = document.getElementById("compiledText"); - const input = compiledCm ? basicCm.getValue() : basicText.value; - const compiledScript = compileScript(input); - if (compiledCm) { - compiledCm.setValue(compiledScript); - } - else { - compiledText.value = compiledScript; - const autoExecuteInput = document.getElementById("autoExecuteInput"); - if (autoExecuteInput.checked) { - const newEvent = new Event('change'); - compiledText.dispatchEvent(newEvent); - } - } -} -function onbasicTextChange(_event) { - const autoCompileInput = document.getElementById("autoCompileInput"); - if (autoCompileInput.checked) { - const compileButton = window.document.getElementById("compileButton"); - compileButton.dispatchEvent(new Event('click')); + resetParser() { + resetParser(); } } -function onExampleSelectChange(event) { - const exampleSelect = event.target; - const basicText = document.getElementById("basicText"); - const value = examples[exampleSelect.value]; - setOutputText(""); - if (basicCm) { - basicCm.setValue(value); - } - else { - basicText.value = value; - basicText.dispatchEvent(new Event('change')); - } -} -function setExampleSelectOptions(examples) { - const exampleSelect = document.getElementById("exampleSelect"); - for (const key of Object.keys(examples)) { - const value = key; //examples[key]; - const option = window.document.createElement("option"); - option.value = value; - option.text = value; - option.title = value; - option.selected = false; - exampleSelect.add(option); - } -} -function fnHereDoc(fn) { - return String(fn). - replace(/^[^/]+\/\*\S*/, ""). - replace(/\*\/[^/]+$/, ""); -} -function addItem(key, input) { - let inputString = (typeof input !== "string") ? fnHereDoc(input) : input; - inputString = inputString.replace(/^\n/, "").replace(/\n$/, ""); // remove preceding and trailing newlines - // beware of data files ending with newlines! (do not use trimEnd) - if (!key) { // maybe "" - const matches = inputString.match(/^\s*\d*\s*(?:REM|rem|')\s*(\w+)/); - key = matches ? matches[1] : "unknown"; - } - examples[key] = inputString; -} -let fs; -let modulePath; -function nodeReadFile(name) { - return __awaiter(this, void 0, void 0, function* () { - if (!fs) { - fs = require("fs"); - } - if (!module) { - module = require("module"); - modulePath = module.path || ""; - if (!modulePath) { - console.warn("nodeReadFile: Cannot determine module path"); - } - } - return fs.promises.readFile(name, "utf8"); - }); -} -function fnParseArgs(args, config) { - for (let i = 0; i < args.length; i += 1) { - const [name, ...valueParts] = args[i].split("="), nameType = typeof config[name]; - let value = valueParts.join("="); - if (value !== undefined) { - if (nameType === "boolean") { - value = (value === "true"); - } - else if (nameType === "number") { - value = Number(value); - } - config[name] = value; - } - } - return config; -} -function fnDecodeUri(s) { - let decoded = ""; - try { - decoded = decodeURIComponent(s.replace(/\+/g, " ")); - } - catch (err) { - if (err instanceof Error) { - err.message += ": " + s; - } - console.error(err); - } - return decoded; -} -// https://stackoverflow.com/questions/901115/how-can-i-get-query-string-values-in-javascript -function fnParseUri(urlQuery, config) { - const rSearch = /([^&=]+)=?([^&]*)/g, args = []; - let match; - while ((match = rSearch.exec(urlQuery)) !== null) { - const name = fnDecodeUri(match[1]), value = fnDecodeUri(match[2]); - if (value !== null && config[name] !== undefined) { - args.push(name + "=" + value); - } - } - return fnParseArgs(args, config); -} -function start(input) { - if (input !== "") { - const compiledScript = compileScript(input); - console.log("INFO: Compiled:\n" + compiledScript + "\n"); - return keepRunning(() => __awaiter(this, void 0, void 0, function* () { - const output = yield executeScript(compiledScript); - console.log(output); - }), 5000); - } - else { - console.log("No input"); - } -} -function main(config) { - let input = config.input || ""; - if (config.fileName) { - return keepRunning(() => __awaiter(this, void 0, void 0, function* () { - input = yield nodeReadFile(config.fileName); - start(input); - }), 5000); - } - else { - if (config.example) { - if (!Object.keys(examples).length) { - return keepRunning(() => __awaiter(this, void 0, void 0, function* () { - const jsFile = yield nodeReadFile("./dist/examples/examples.js"); - // ?? require('./examples/examples.js'); - const fnScript = new Function("cpcBasic", jsFile); - fnScript({ - addItem: addItem - }); - input = examples[config.example]; - start(input); - }), 5000); - } - input += examples[config.example]; - } - console.log("start"); - start(input); - } -} -if (typeof window !== "undefined") { - window.cpcBasic = { - addItem: addItem - }; - window.onload = () => { - const basicText = window.document.getElementById("basicText"); - basicText.addEventListener('change', onbasicTextChange); - const compiledText = window.document.getElementById("compiledText"); - compiledText.addEventListener('change', oncompiledTextChange); - const compileButton = window.document.getElementById("compileButton"); - compileButton.addEventListener('click', onCompileButtonClick, false); - const executeButton = window.document.getElementById("executeButton"); - executeButton.addEventListener('click', onExecuteButtonClick, false); - const exampleSelect = window.document.getElementById("exampleSelect"); - exampleSelect.addEventListener('change', onExampleSelectChange); - const WinCodeMirror = window.CodeMirror; - if (WinCodeMirror) { - //const debounceMs = 800; - basicCm = WinCodeMirror.fromTextArea(basicText, { - lineNumbers: true, - mode: 'javascript' - }); - basicCm.on('changes', debounce(onbasicTextChange, "debounceCompile")); - compiledCm = WinCodeMirror.fromTextArea(compiledText, { - lineNumbers: true, - mode: 'javascript' - }); - compiledCm.on('changes', debounce(oncompiledTextChange, "debounceExecute")); - } - vm.setOnCls(() => setOutputText("")); - return asyncDelay(() => { - setExampleSelectOptions(examples); - const config = fnParseUri(window.location.search.substring(1), startConfig); - if (config.example) { - const exampleSelect = document.getElementById("exampleSelect"); - exampleSelect.value = config.example; - } - //const input = examples[config.example as string]; - exampleSelect.dispatchEvent(new Event('change')); - }, 10); - }; -} -else { - main(fnParseArgs(global.process.argv.slice(2), startConfig)); -} -export const testParser = { - dimArray: dimArray -}; -//# sourceMappingURL=parser.js.map \ No newline at end of file +//# sourceMappingURL=Semantics.js.map \ No newline at end of file diff --git a/src/Semantics.js.map b/src/Semantics.js.map new file mode 100644 index 0000000..87ea3dc --- /dev/null +++ b/src/Semantics.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Semantics.js","sourceRoot":"","sources":["../../src/Semantics.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/Ui.d.ts b/src/Ui.d.ts new file mode 100644 index 0000000..ccbe98d --- /dev/null +++ b/src/Ui.d.ts @@ -0,0 +1,22 @@ +import { ICore, IUi, ConfigType } from "./Interfaces"; +export declare class Ui implements IUi { + private readonly core; + private basicCm; + private compiledCm; + constructor(core: ICore); + private debounce; + private static asyncDelay; + private getOutputText; + setOutputText(value: string): void; + private onExecuteButtonClick; + private oncompiledTextChange; + private onCompileButtonClick; + private onbasicTextChange; + private setExampleSelect; + private onExampleSelectChange; + private setExampleSelectOptions; + private fnDecodeUri; + parseUri(urlQuery: string, config: ConfigType): string[]; + onWindowLoad(_event: Event): void; +} +//# sourceMappingURL=Ui.d.ts.map \ No newline at end of file diff --git a/src/Ui.d.ts.map b/src/Ui.d.ts.map new file mode 100644 index 0000000..e6fbff6 --- /dev/null +++ b/src/Ui.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Ui.d.ts","sourceRoot":"","sources":["../../src/Ui.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAEtD,qBAAa,EAAG,YAAW,GAAG;IAC7B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAQ;IAC7B,OAAO,CAAC,OAAO,CAAM;IACrB,OAAO,CAAC,UAAU,CAAM;gBAEZ,IAAI,EAAE,KAAK;IAIvB,OAAO,CAAC,QAAQ;IAahB,OAAO,CAAC,MAAM,CAAC,UAAU;IAQzB,OAAO,CAAC,aAAa;IAKd,aAAa,CAAC,KAAK,EAAE,MAAM;YAKpB,oBAAoB;IAUlC,OAAO,CAAC,oBAAoB;IAQ5B,OAAO,CAAC,oBAAoB;YAkBd,iBAAiB;IAQ/B,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,qBAAqB;IAiB7B,OAAO,CAAC,uBAAuB;IAgB/B,OAAO,CAAC,WAAW;IAeZ,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM,EAAE;IAiBxD,YAAY,CAAC,MAAM,EAAE,KAAK;CA2CjC"} \ No newline at end of file diff --git a/src/Ui.js b/src/Ui.js new file mode 100644 index 0000000..e190272 --- /dev/null +++ b/src/Ui.js @@ -0,0 +1,172 @@ +// Ui.ts +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +export class Ui { + constructor(core) { + this.core = core; + } + debounce(func, delayPara) { + let timeoutId; + const core = this.core; + return function (...args) { + const context = this; + const delay = core.getConfig(delayPara); + clearTimeout(timeoutId); + timeoutId = setTimeout(() => { + func.apply(context, args); + }, delay); + }; + } + static asyncDelay(fn, timeout) { + return (() => __awaiter(this, void 0, void 0, function* () { + const timerId = setTimeout(fn, timeout); + return timerId; + }))(); + } + getOutputText() { + const outputText = document.getElementById("outputText"); + return outputText.value; + } + setOutputText(value) { + const outputText = document.getElementById("outputText"); + outputText.value = value; + } + onExecuteButtonClick(_event) { + return __awaiter(this, void 0, void 0, function* () { + const compiledText = document.getElementById("compiledText"); + const compiledScript = this.compiledCm ? this.compiledCm.getValue() : compiledText.value; + const output = yield this.core.executeScript(compiledScript); + this.setOutputText(this.getOutputText() + output); + }); + } + oncompiledTextChange(_event) { + const autoExecuteInput = document.getElementById("autoExecuteInput"); + if (autoExecuteInput.checked) { + const executeButton = window.document.getElementById("executeButton"); + executeButton.dispatchEvent(new Event('click')); + } + } + onCompileButtonClick(_event) { + const basicText = document.getElementById("basicText"); + const compiledText = document.getElementById("compiledText"); + const input = this.compiledCm ? this.basicCm.getValue() : basicText.value; + const compiledScript = this.core.compileScript(input); + if (this.compiledCm) { + this.compiledCm.setValue(compiledScript); + } + else { + compiledText.value = compiledScript; + const autoExecuteInput = document.getElementById("autoExecuteInput"); + if (autoExecuteInput.checked) { + const newEvent = new Event('change'); + compiledText.dispatchEvent(newEvent); + } + } + } + onbasicTextChange(_event) { + return __awaiter(this, void 0, void 0, function* () { + const autoCompileInput = document.getElementById("autoCompileInput"); + if (autoCompileInput.checked) { + const compileButton = window.document.getElementById("compileButton"); + compileButton.dispatchEvent(new Event('click')); + } + }); + } + setExampleSelect(name) { + const exampleSelect = document.getElementById("exampleSelect"); + exampleSelect.value = name; + } + onExampleSelectChange(event) { + const exampleSelect = event.target; + const basicText = document.getElementById("basicText"); + const value = this.core.getExample(exampleSelect.value); + this.setOutputText(""); + if (this.basicCm) { + this.basicCm.setValue(value); + } + else { + basicText.value = value; + basicText.dispatchEvent(new Event('change')); + } + } + setExampleSelectOptions(examples) { + const exampleSelect = document.getElementById("exampleSelect"); + for (const key of Object.keys(examples)) { + const script = examples[key]; + const firstLine = script.slice(0, script.indexOf("\n")); + const option = window.document.createElement("option"); + option.value = key; + option.text = key; + option.title = firstLine; + option.selected = false; + exampleSelect.add(option); + } + } + fnDecodeUri(s) { + let decoded = ""; + try { + decoded = decodeURIComponent(s.replace(/\+/g, " ")); + } + catch (err) { + if (err instanceof Error) { + err.message += ": " + s; + } + console.error(err); + } + return decoded; + } + // https://stackoverflow.com/questions/901115/how-can-i-get-query-string-values-in-javascript + parseUri(urlQuery, config) { + const rSearch = /([^&=]+)=?([^&]*)/g, args = []; + let match; + while ((match = rSearch.exec(urlQuery)) !== null) { + const name = this.fnDecodeUri(match[1]), value = this.fnDecodeUri(match[2]); + if (value !== null && config[name] !== undefined) { + args.push(name + "=" + value); + } + } + return args; + } + onWindowLoad(_event) { + const basicText = window.document.getElementById("basicText"); + basicText.addEventListener('change', (event) => this.onbasicTextChange(event)); + const compiledText = window.document.getElementById("compiledText"); + compiledText.addEventListener('change', (event) => this.oncompiledTextChange(event)); + const compileButton = window.document.getElementById("compileButton"); + compileButton.addEventListener('click', (event) => this.onCompileButtonClick(event), false); + const executeButton = window.document.getElementById("executeButton"); + executeButton.addEventListener('click', (event) => this.onExecuteButtonClick(event), false); + const exampleSelect = window.document.getElementById("exampleSelect"); + exampleSelect.addEventListener('change', (event) => this.onExampleSelectChange(event)); + const WinCodeMirror = window.CodeMirror; + if (WinCodeMirror) { + this.basicCm = WinCodeMirror.fromTextArea(basicText, { + lineNumbers: true, + mode: 'javascript' + }); + this.basicCm.on('changes', this.debounce((event) => this.onbasicTextChange(event), "debounceCompile")); + this.compiledCm = WinCodeMirror.fromTextArea(compiledText, { + lineNumbers: true, + mode: 'javascript' + }); + this.compiledCm.on('changes', this.debounce((event) => this.oncompiledTextChange(event), "debounceExecute")); + } + Ui.asyncDelay(() => { + const core = this.core; + this.setExampleSelectOptions(core.getExampleObject()); + const example = this.core.getConfig("example"); + if (example) { + this.setExampleSelect(example); + } + exampleSelect.dispatchEvent(new Event('change')); + }, 10); + } +} +//# sourceMappingURL=Ui.js.map \ No newline at end of file diff --git a/src/Ui.js.map b/src/Ui.js.map new file mode 100644 index 0000000..034fe56 --- /dev/null +++ b/src/Ui.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Ui.js","sourceRoot":"","sources":["../../src/Ui.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/examples.d.ts b/src/examples.d.ts deleted file mode 100644 index 8071008..0000000 --- a/src/examples.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare const examples: Record; -//# sourceMappingURL=examples.d.ts.map \ No newline at end of file diff --git a/src/examples.d.ts.map b/src/examples.d.ts.map deleted file mode 100644 index 79f6f87..0000000 --- a/src/examples.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"examples.d.ts","sourceRoot":"","sources":["../../src/examples.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAwH3C,CAAC"} \ No newline at end of file diff --git a/src/examples.js b/src/examples.js deleted file mode 100644 index 4eaf24b..0000000 --- a/src/examples.js +++ /dev/null @@ -1,113 +0,0 @@ -export const examples = { - euler: `REM euler - Compute e with 1000 digits -PRINT"Compute e with 1000 digits" -DIM a(202) -b=100000:a(0)=1 -FOR n=450 TO 1 STEP -1 - if a(0)>0 then FOR i=0 TO 201: q=INT(a(i)/n):r=a(i)-q*n: a(i)=q:a(i+1)=a(i+1)+b*r: NEXT - a(0)=a(0)+1 -NEXT -'Round -a(201)=a(201)+INT(a(202)/b+0.5) -FOR i=200 TO 1 STEP -1 - u=INT(a(i)/b):a(i)=a(i)-b*u - a(i-1)=a(i-1)+u -NEXT -'rem -PRINT"e=";a(0);"." -FOR i=1 TO 200 - a$=STR$(a(i)):a$=RIGHT$(a$,LEN(a$)-1) - PRINT RIGHT$("0000"+a$,5);" "; -NEXT -`, - lifegame: `rem lifegame - Game of Life -ze=10:sp=10:DIM al(ze,sp+1):DIM ne(ze,sp+1) -PRINT"L I F E G A M E" -FOR w=1 TO 18 - x=INT(7*RND(1)+1):y=INT(7*RND(1)+1):IF al(x,y)<>1 THEN al(x,y)=1 -NEXT w -al(5,4)=1:al(5,5)=1:al(5,6)=1 -FOR i=1 TO ze-1:FOR j=1 TO sp - IF al(i,j)=0 THEN PRINT " "; ELSE PRINT "*"; -NEXT j: PRINT "": NEXT i -FOR i=1 TO ze-1:FOR j=1 TO sp:an=0:ne(i,j)=0 - an=al(i-1,j-1)+al(i-1,j)+al(i-1,j+1)+al(i,j-1)+al(i,j+1)+al(i+1,j-1)+al(i+1,j)+al(i+1,j+1) - IF al(i,j)<>0 THEN IF an=2 THEN ne(i,j)=1 - IF an=3 THEN ne(i,j)=1 -NEXT j:NEXT i -FOR i=1 TO ze-1:FOR j=1 TO sp:al(i,j)=ne(i,j):NEXT j:NEXT i -`, - sieve: `REM sieve -n=1000000 -DIM sieve1(n + 1) -nHalf = INT(n / 2) -REM initialize sieve -FOR i = 0 TO nHalf: sieve1(i) = 0: NEXT i -REM compute primes -i = 0 -m = 3 -x = 1 -WHILE m * m <= n - IF sieve1(i) = 0 THEN x = x + 1 - j = INT((m * m - 3) / 2) - WHILE j < nHalf - sieve1(j) = 1 - j = j + m - WEND - i = i + 1 - m = m + 2 -WEND -REM count remaining primes -WHILE m <= n - IF sieve1(i) = 0 THEN x = x + 1 - i = i + 1 - m = m + 2 -WEND -PRINT "Number of primes below ";n;": ";x -`, - testSub: `?"start" -' -100 ?"sub100" -return -' -200 ?"sub200" - ?"inside sub200" - gosub 100 -return -' -gosub 200 -?"in between" -' -300 ?"sub300" - ?"inside sub300" - 'gosub 400 -return -' -gosub 300 -a=1 -on a gosub 200, 300 -?"at end" -`, - time: `REM cpcmhz - CPC MHz: Time measurement -PRINT "Measurement started." -DIM r(5) -ms=100/10:mxcpc=90/10 -' -FOR i=0 TO 4 -c=0:t1=INT(TIME*300/1000) -t=t1: WHILE t=t1:t=INT(TIME*300/1000):c=c+1:WEND -c=0:t1=t+ms -WHILE t max:";STR$(mx);", CPC";mhz;"MHz" -` -}; -//# sourceMappingURL=examples.js.map \ No newline at end of file diff --git a/src/examples.js.map b/src/examples.js.map deleted file mode 100644 index 89cee05..0000000 --- a/src/examples.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"examples.js","sourceRoot":"","sources":["../../src/examples.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,QAAQ,GAA2B;IAC5C,KAAK,EACT;;;;;;;;;;;;;;;;;;;;CAoBC;IAEG,QAAQ,EACZ;;;;;;;;;;;;;;;;CAgBC;IAED,KAAK,EACL;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BC;IAED,OAAO,EACP;;;;;;;;;;;;;;;;;;;;;;CAsBC;IAED,IAAI,EACJ;;;;;;;;;;;;;;;;;;;;CAoBC;CACA,CAAC"} \ No newline at end of file diff --git a/src/main.d.ts b/src/main.d.ts new file mode 100644 index 0000000..371115b --- /dev/null +++ b/src/main.d.ts @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=main.d.ts.map \ No newline at end of file diff --git a/src/main.d.ts.map b/src/main.d.ts.map new file mode 100644 index 0000000..c62f484 --- /dev/null +++ b/src/main.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/src/main.js b/src/main.js new file mode 100644 index 0000000..d862802 --- /dev/null +++ b/src/main.js @@ -0,0 +1,136 @@ +// main.ts +// +// Usage: +// node dist/locobasic.js input="?3 + 5 * (2 - 8)" +// node dist/locobasic.js fileName=dist/examples/example.bas +// node dist/locobasic.js example=euler +// +// [ npx ts-node parser.ts input="?3 + 5 * (2 - 8)" ] +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +import { Core } from "./Core"; +import { Ui } from "./Ui"; +const core = new Core(); +let ui; +function fnHereDoc(fn) { + return String(fn). + replace(/^[^/]+\/\*\S*/, ""). + replace(/\*\/[^/]+$/, ""); +} +function addItem(key, input) { + let inputString = (typeof input !== "string") ? fnHereDoc(input) : input; + inputString = inputString.replace(/^\n/, "").replace(/\n$/, ""); // remove preceding and trailing newlines + // beware of data files ending with newlines! (do not use trimEnd) + if (!key) { // maybe "" + const firstLine = inputString.slice(0, inputString.indexOf("\n")); + const matches = firstLine.match(/^\s*\d*\s*(?:REM|rem|')\s*(\w+)/); + key = matches ? matches[1] : "unknown"; + } + core.setExample(key, inputString); +} +let fs; +let modulePath; +function nodeReadFile(name) { + return __awaiter(this, void 0, void 0, function* () { + if (!fs) { + fs = require("fs"); + } + if (!module) { + module = require("module"); + modulePath = module.path || ""; + if (!modulePath) { + console.warn("nodeReadFile: Cannot determine module path"); + } + } + return fs.promises.readFile(name, "utf8"); + }); +} +function fnParseArgs(args, config) { + for (let i = 0; i < args.length; i += 1) { + const [name, ...valueParts] = args[i].split("="), nameType = typeof config[name]; + let value = valueParts.join("="); + if (value !== undefined) { + if (nameType === "boolean") { + value = (value === "true"); + } + else if (nameType === "number") { + value = Number(value); + } + config[name] = value; + } + } + return config; +} +function keepRunning(fn, timeout) { + const timerId = setTimeout(() => { }, timeout); + return (() => __awaiter(this, void 0, void 0, function* () { + fn(); + clearTimeout(timerId); + }))(); +} +function start(input) { + if (input !== "") { + const compiledScript = core.compileScript(input); + console.log("INFO: Compiled:\n" + compiledScript + "\n"); + return keepRunning(() => __awaiter(this, void 0, void 0, function* () { + const output = yield core.executeScript(compiledScript); + console.log(output); + }), 5000); + } + else { + console.log("No input"); + } +} +function main(config) { + let input = config.input || ""; + if (config.fileName) { + return keepRunning(() => __awaiter(this, void 0, void 0, function* () { + input = yield nodeReadFile(config.fileName); + start(input); + }), 5000); + } + else { + if (config.example) { + const examples = core.getExampleObject(); + if (!Object.keys(examples).length) { + return keepRunning(() => __awaiter(this, void 0, void 0, function* () { + const jsFile = yield nodeReadFile("./dist/examples/examples.js"); + // ?? require('./examples/examples.js'); + const fnScript = new Function("cpcBasic", jsFile); + fnScript({ + addItem: addItem + }); + input = examples[config.example]; + start(input); + }), 5000); + } + input += examples[config.example]; + } + console.log("start"); + start(input); + } +} +const config = core.getConfigObject(); +if (typeof window !== "undefined") { + window.cpcBasic = { + addItem: addItem + }; + window.onload = () => { + ui = new Ui(core); + const args = ui.parseUri(window.location.search.substring(1), config); + fnParseArgs(args, config); + core.setOnCls(() => ui.setOutputText("")); + ui.onWindowLoad(new Event("onload")); + }; +} +else { + main(fnParseArgs(global.process.argv.slice(2), config)); +} +//# sourceMappingURL=main.js.map \ No newline at end of file diff --git a/src/main.js.map b/src/main.js.map new file mode 100644 index 0000000..3abd46e --- /dev/null +++ b/src/main.js.map @@ -0,0 +1 @@ +{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/parser.d.ts b/src/parser.d.ts deleted file mode 100644 index c5db971..0000000 --- a/src/parser.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -export type ConfigEntryType = string | number | boolean; -export type ConfigType = Record; -type VariableValue = string | number | Function | [] | VariableValue[]; -declare function dimArray(dims: number[], initVal?: string | number): VariableValue[]; -export declare const testParser: { - dimArray: typeof dimArray; -}; -export {}; -//# sourceMappingURL=parser.d.ts.map \ No newline at end of file diff --git a/src/parser.d.ts.map b/src/parser.d.ts.map deleted file mode 100644 index cbb34e8..0000000 --- a/src/parser.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/parser.ts"],"names":[],"mappings":"AAaA,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAExD,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;AAezD,KAAK,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,EAAE,GAAG,aAAa,EAAE,CAAC;AAEvE,iBAAS,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,MAAM,GAAG,MAAU,mBAgB7D;AAm+BD,eAAO,MAAM,UAAU;;CAEtB,CAAC"} \ No newline at end of file diff --git a/src/parser.js.map b/src/parser.js.map deleted file mode 100644 index 90186cc..0000000 --- a/src/parser.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/parser.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/tsconfig.tsbuildinfo b/tsconfig.tsbuildinfo index 5477963..64ee9f5 100644 --- a/tsconfig.tsbuildinfo +++ b/tsconfig.tsbuildinfo @@ -1 +1 @@ -{"fileNames":["../node_modules/typescript/lib/lib.es5.d.ts","../node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/typescript/lib/lib.dom.d.ts","../node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/typescript/lib/lib.es2016.intl.d.ts","../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../node_modules/typescript/lib/lib.es2017.date.d.ts","../node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/typescript/lib/lib.es2019.intl.d.ts","../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/typescript/lib/lib.es2020.date.d.ts","../node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/typescript/lib/lib.es2020.number.d.ts","../node_modules/typescript/lib/lib.decorators.d.ts","../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../src/arithmetic.ts","../src/examples.ts","../node_modules/ohm-js/index.d.ts","../src/parser.ts","../node_modules/@types/node/compatibility/disposable.d.ts","../node_modules/@types/node/compatibility/indexable.d.ts","../node_modules/@types/node/compatibility/iterators.d.ts","../node_modules/@types/node/compatibility/index.d.ts","../node_modules/@types/node/globals.typedarray.d.ts","../node_modules/@types/node/buffer.buffer.d.ts","../node_modules/undici-types/header.d.ts","../node_modules/undici-types/readable.d.ts","../node_modules/undici-types/file.d.ts","../node_modules/undici-types/fetch.d.ts","../node_modules/undici-types/formdata.d.ts","../node_modules/undici-types/connector.d.ts","../node_modules/undici-types/client.d.ts","../node_modules/undici-types/errors.d.ts","../node_modules/undici-types/dispatcher.d.ts","../node_modules/undici-types/global-dispatcher.d.ts","../node_modules/undici-types/global-origin.d.ts","../node_modules/undici-types/pool-stats.d.ts","../node_modules/undici-types/pool.d.ts","../node_modules/undici-types/handlers.d.ts","../node_modules/undici-types/balanced-pool.d.ts","../node_modules/undici-types/agent.d.ts","../node_modules/undici-types/mock-interceptor.d.ts","../node_modules/undici-types/mock-agent.d.ts","../node_modules/undici-types/mock-client.d.ts","../node_modules/undici-types/mock-pool.d.ts","../node_modules/undici-types/mock-errors.d.ts","../node_modules/undici-types/proxy-agent.d.ts","../node_modules/undici-types/env-http-proxy-agent.d.ts","../node_modules/undici-types/retry-handler.d.ts","../node_modules/undici-types/retry-agent.d.ts","../node_modules/undici-types/api.d.ts","../node_modules/undici-types/interceptors.d.ts","../node_modules/undici-types/util.d.ts","../node_modules/undici-types/cookies.d.ts","../node_modules/undici-types/patch.d.ts","../node_modules/undici-types/websocket.d.ts","../node_modules/undici-types/eventsource.d.ts","../node_modules/undici-types/filereader.d.ts","../node_modules/undici-types/diagnostics-channel.d.ts","../node_modules/undici-types/content-type.d.ts","../node_modules/undici-types/cache.d.ts","../node_modules/undici-types/index.d.ts","../node_modules/@types/node/globals.d.ts","../node_modules/@types/node/assert.d.ts","../node_modules/@types/node/assert/strict.d.ts","../node_modules/@types/node/async_hooks.d.ts","../node_modules/@types/node/buffer.d.ts","../node_modules/@types/node/child_process.d.ts","../node_modules/@types/node/cluster.d.ts","../node_modules/@types/node/console.d.ts","../node_modules/@types/node/constants.d.ts","../node_modules/@types/node/crypto.d.ts","../node_modules/@types/node/dgram.d.ts","../node_modules/@types/node/diagnostics_channel.d.ts","../node_modules/@types/node/dns.d.ts","../node_modules/@types/node/dns/promises.d.ts","../node_modules/@types/node/domain.d.ts","../node_modules/@types/node/dom-events.d.ts","../node_modules/@types/node/events.d.ts","../node_modules/@types/node/fs.d.ts","../node_modules/@types/node/fs/promises.d.ts","../node_modules/@types/node/http.d.ts","../node_modules/@types/node/http2.d.ts","../node_modules/@types/node/https.d.ts","../node_modules/@types/node/inspector.d.ts","../node_modules/@types/node/module.d.ts","../node_modules/@types/node/net.d.ts","../node_modules/@types/node/os.d.ts","../node_modules/@types/node/path.d.ts","../node_modules/@types/node/perf_hooks.d.ts","../node_modules/@types/node/process.d.ts","../node_modules/@types/node/punycode.d.ts","../node_modules/@types/node/querystring.d.ts","../node_modules/@types/node/readline.d.ts","../node_modules/@types/node/readline/promises.d.ts","../node_modules/@types/node/repl.d.ts","../node_modules/@types/node/sea.d.ts","../node_modules/@types/node/sqlite.d.ts","../node_modules/@types/node/stream.d.ts","../node_modules/@types/node/stream/promises.d.ts","../node_modules/@types/node/stream/consumers.d.ts","../node_modules/@types/node/stream/web.d.ts","../node_modules/@types/node/string_decoder.d.ts","../node_modules/@types/node/test.d.ts","../node_modules/@types/node/timers.d.ts","../node_modules/@types/node/timers/promises.d.ts","../node_modules/@types/node/tls.d.ts","../node_modules/@types/node/trace_events.d.ts","../node_modules/@types/node/tty.d.ts","../node_modules/@types/node/url.d.ts","../node_modules/@types/node/util.d.ts","../node_modules/@types/node/v8.d.ts","../node_modules/@types/node/vm.d.ts","../node_modules/@types/node/wasi.d.ts","../node_modules/@types/node/worker_threads.d.ts","../node_modules/@types/node/zlib.d.ts","../node_modules/@types/node/index.d.ts"],"fileIdsList":[[56,95,98],[56,97,98],[98],[56,98,103,133],[56,98,99,104,110,111,118,130,141],[56,98,99,100,110,118],[56,98],[51,52,53,56,98],[56,98,101,142],[56,98,102,103,111,119],[56,98,103,130,138],[56,98,104,106,110,118],[56,97,98,105],[56,98,106,107],[56,98,110],[56,98,108,110],[56,97,98,110],[56,98,110,111,112,130,141],[56,98,110,111,112,125,130,133],[56,93,98,146],[56,93,98,106,110,113,118,130,141],[56,98,110,111,113,114,118,130,138,141],[56,98,113,115,130,138,141],[54,55,56,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147],[56,98,110,116],[56,98,117,141,146],[56,98,106,110,118,130],[56,98,119],[56,98,120],[56,97,98,121],[56,95,96,97,98,99,100,101,102,103,104,105,106,107,108,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147],[56,98,123],[56,98,124],[56,98,110,125,126],[56,98,125,127,142,144],[56,98,110,130,131,132,133],[56,98,130,132],[56,98,130,131],[56,98,133],[56,98,134],[56,95,98,130],[56,98,110,136,137],[56,98,136,137],[56,98,103,118,130,138],[56,98,139],[56,98,118,140],[56,98,113,124,141],[56,98,103,142],[56,98,130,143],[56,98,117,144],[56,98,145],[56,98,103,110,112,121,130,141,144,146],[56,98,130,147],[56,65,69,98,141],[56,65,98,130,141],[56,60,98],[56,62,65,98,138,141],[56,98,118,138],[56,98,148],[56,60,98,148],[56,62,65,98,118,141],[56,57,58,61,64,98,110,130,141],[56,65,72,98],[56,57,63,98],[56,65,86,87,98],[56,61,65,98,133,141,148],[56,86,98,148],[56,59,60,98,148],[56,65,98],[56,59,60,61,62,63,64,65,66,67,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,87,88,89,90,91,92,98],[56,65,80,98],[56,65,72,73,98],[56,63,65,73,74,98],[56,64,98],[56,57,60,65,98],[56,65,69,73,74,98],[56,69,98],[56,63,65,68,98,141],[56,57,62,65,72,98],[56,98,130],[56,60,65,86,98,146,148],[47,49,56,98]],"fileInfos":[{"version":"e41c290ef7dd7dab3493e6cbe5909e0148edf4a8dad0271be08edec368a0f7b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"4fd3f3422b2d2a3dfd5cdd0f387b3a8ec45f006c6ea896a4cb41264c2100bb2c","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"62bb211266ee48b2d0edf0d8d1b191f0c24fc379a82bd4c1692a082c540bc6b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"936e80ad36a2ee83fc3caf008e7c4c5afe45b3cf3d5c24408f039c1d47bdc1df","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"fef8cfad2e2dc5f5b3d97a6f4f2e92848eb1b88e897bb7318cef0e2820bceaab","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"f1e2a172204962276504466a6393426d2ca9c54894b1ad0a6c9dad867a65f876","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"7772f97c1332f74e840ccae7adb324ccd4b2d3b07b88a33a61171d4250f97ee6","signature":"6d9bf2b4abb0797f253d20666eabeb03229f59c5ac732e286480da4d1ff8d469"},{"version":"914510d235d67e1d6869e3ea76b3857ebe26ae85636a31e3d20a9ba4bebae351","signature":"f887c5423b37bc07b11d56ddf94a25eaeba845f8fa39c2dc7b997e895bc71288"},{"version":"efbdac1987ca35b6fdb0ac944c76ac53fb96ead05ffa0787a9a42c7afdf62a4c","impliedFormat":99},{"version":"a5cb76bf2683d8587c364072eb72b1b735a947924f759f01b6b4d5d3bc0c34b1","signature":"836cc882eb582eae418fe48b771b74a960bf87f44a7362c07012bbce77ca1d74"},{"version":"70521b6ab0dcba37539e5303104f29b721bfb2940b2776da4cc818c07e1fefc1","affectsGlobalScope":true,"impliedFormat":1},{"version":"030e350db2525514580ed054f712ffb22d273e6bc7eddc1bb7eda1e0ba5d395e","affectsGlobalScope":true,"impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"a79e62f1e20467e11a904399b8b18b18c0c6eea6b50c1168bf215356d5bebfaf","affectsGlobalScope":true,"impliedFormat":1},{"version":"0fd06258805d26c72f5997e07a23155d322d5f05387adb3744a791fe6a0b042d","affectsGlobalScope":true,"impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"24bd580b5743dc56402c440dc7f9a4f5d592ad7a419f25414d37a7bfe11e342b","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"6bdc71028db658243775263e93a7db2fd2abfce3ca569c3cca5aee6ed5eb186d","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"81184fe8e67d78ac4e5374650f0892d547d665d77da2b2f544b5d84729c4a15d","affectsGlobalScope":true,"impliedFormat":1},{"version":"f52e8dacc97d71dcc96af29e49584353f9c54cb916d132e3e768d8b8129c928d","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"76103716ba397bbb61f9fa9c9090dca59f39f9047cb1352b2179c5d8e7f4e8d0","impliedFormat":1},{"version":"53eac70430b30089a3a1959d8306b0f9cfaf0de75224b68ef25243e0b5ad1ca3","affectsGlobalScope":true,"impliedFormat":1},{"version":"4314c7a11517e221f7296b46547dbc4df047115b182f544d072bdccffa57fc72","impliedFormat":1},{"version":"115971d64632ea4742b5b115fb64ed04bcaae2c3c342f13d9ba7e3f9ee39c4e7","impliedFormat":1},{"version":"c2510f124c0293ab80b1777c44d80f812b75612f297b9857406468c0f4dafe29","affectsGlobalScope":true,"impliedFormat":1},{"version":"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb","impliedFormat":1},{"version":"86956cc2eb9dd371d6fab493d326a574afedebf76eef3fa7833b8e0d9b52d6f1","affectsGlobalScope":true,"impliedFormat":1},{"version":"24642567d3729bcc545bacb65ee7c0db423400c7f1ef757cab25d05650064f98","impliedFormat":1},{"version":"e6f5a38687bebe43a4cef426b69d34373ef68be9a6b1538ec0a371e69f309354","impliedFormat":1},{"version":"a6bf63d17324010ca1fbf0389cab83f93389bb0b9a01dc8a346d092f65b3605f","impliedFormat":1},{"version":"e009777bef4b023a999b2e5b9a136ff2cde37dc3f77c744a02840f05b18be8ff","impliedFormat":1},{"version":"1e0d1f8b0adfa0b0330e028c7941b5a98c08b600efe7f14d2d2a00854fb2f393","impliedFormat":1},{"version":"ee1ee365d88c4c6c0c0a5a5701d66ebc27ccd0bcfcfaa482c6e2e7fe7b98edf7","affectsGlobalScope":true,"impliedFormat":1},{"version":"875928df2f3e9a3aed4019539a15d04ff6140a06df6cd1b2feb836d22a81eaca","affectsGlobalScope":true,"impliedFormat":1},{"version":"e9ad08a376ac84948fcca0013d6f1d4ae4f9522e26b91f87945b97c99d7cc30b","impliedFormat":1},{"version":"eaf9ee1d90a35d56264f0bf39842282c58b9219e112ac7d0c1bce98c6c5da672","impliedFormat":1},{"version":"c15c4427ae7fd1dcd7f312a8a447ac93581b0d4664ddf151ecd07de4bf2bb9d7","impliedFormat":1},{"version":"5135bdd72cc05a8192bd2e92f0914d7fc43ee077d1293dc622a049b7035a0afb","impliedFormat":1},{"version":"4f80de3a11c0d2f1329a72e92c7416b2f7eab14f67e92cac63bb4e8d01c6edc8","impliedFormat":1},{"version":"6d386bc0d7f3afa1d401afc3e00ed6b09205a354a9795196caed937494a713e6","impliedFormat":1},{"version":"75c3400359d59fae5aed4c4a59fcd8a9760cf451e25dc2174cb5e08b9d4803e2","affectsGlobalScope":true,"impliedFormat":1},{"version":"94c4187083503a74f4544503b5a30e2bd7af0032dc739b0c9a7ce87f8bddc7b9","impliedFormat":1},{"version":"b1b6ee0d012aeebe11d776a155d8979730440082797695fc8e2a5c326285678f","impliedFormat":1},{"version":"45875bcae57270aeb3ebc73a5e3fb4c7b9d91d6b045f107c1d8513c28ece71c0","impliedFormat":1},{"version":"3eb62baae4df08c9173e6903d3ca45942ccec8c3659b0565684a75f3292cffbb","affectsGlobalScope":true,"impliedFormat":1},{"version":"a85683ef86875f4ad4c6b7301bbcc63fb379a8d80d3d3fd735ee57f48ef8a47e","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f16a7e4deafa527ed9995a772bb380eb7d3c2c0fd4ae178c5263ed18394db2c","impliedFormat":1},{"version":"c6b4e0a02545304935ecbf7de7a8e056a31bb50939b5b321c9d50a405b5a0bba","impliedFormat":1},{"version":"fab29e6d649aa074a6b91e3bdf2bff484934a46067f6ee97a30fcd9762ae2213","impliedFormat":1},{"version":"8145e07aad6da5f23f2fcd8c8e4c5c13fb26ee986a79d03b0829b8fce152d8b2","impliedFormat":1},{"version":"e1120271ebbc9952fdc7b2dd3e145560e52e06956345e6fdf91d70ca4886464f","impliedFormat":1},{"version":"15c5e91b5f08be34a78e3d976179bf5b7a9cc28dc0ef1ffebffeb3c7812a2dca","impliedFormat":1},{"version":"a8f06c2382a30b7cb89ad2dfc48fc3b2b490f3dafcd839dadc008e4e5d57031d","impliedFormat":1},{"version":"553870e516f8c772b89f3820576152ebc70181d7994d96917bb943e37da7f8a7","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"93452d394fdd1dc551ec62f5042366f011a00d342d36d50793b3529bfc9bd633","impliedFormat":1},{"version":"745c4240220559bd340c8aeb6e3c5270a709d3565e934dc22a69c304703956bc","affectsGlobalScope":true,"impliedFormat":1},{"version":"2754d8221d77c7b382096651925eb476f1066b3348da4b73fe71ced7801edada","impliedFormat":1},{"version":"9212c6e9d80cb45441a3614e95afd7235a55a18584c2ed32d6c1aca5a0c53d93","affectsGlobalScope":true,"impliedFormat":1},{"version":"bef91efa0baea5d0e0f0f27b574a8bc100ce62a6d7e70220a0d58af6acab5e89","affectsGlobalScope":true,"impliedFormat":1},{"version":"282fd2a1268a25345b830497b4b7bf5037a5e04f6a9c44c840cb605e19fea841","impliedFormat":1},{"version":"5360a27d3ebca11b224d7d3e38e3e2c63f8290cb1fcf6c3610401898f8e68bc3","impliedFormat":1},{"version":"66ba1b2c3e3a3644a1011cd530fb444a96b1b2dfe2f5e837a002d41a1a799e60","impliedFormat":1},{"version":"7e514f5b852fdbc166b539fdd1f4e9114f29911592a5eb10a94bb3a13ccac3c4","impliedFormat":1},{"version":"7d6ff413e198d25639f9f01f16673e7df4e4bd2875a42455afd4ecc02ef156da","affectsGlobalScope":true,"impliedFormat":1},{"version":"6bd91a2a356600dee28eb0438082d0799a18a974a6537c4410a796bab749813c","affectsGlobalScope":true,"impliedFormat":1},{"version":"f689c4237b70ae6be5f0e4180e8833f34ace40529d1acc0676ab8fb8f70457d7","impliedFormat":1},{"version":"ae25afbbf1ed5df63a177d67b9048bf7481067f1b8dc9c39212e59db94fc9fc6","impliedFormat":1},{"version":"ac5ed35e649cdd8143131964336ab9076937fa91802ec760b3ea63b59175c10a","impliedFormat":1},{"version":"52a8e7e8a1454b6d1b5ad428efae3870ffc56f2c02d923467f2940c454aa9aec","affectsGlobalScope":true,"impliedFormat":1},{"version":"78dc0513cc4f1642906b74dda42146bcbd9df7401717d6e89ea6d72d12ecb539","impliedFormat":1},{"version":"ad90122e1cb599b3bc06a11710eb5489101be678f2920f2322b0ac3e195af78d","impliedFormat":1}],"root":[47,48,50],"options":{"alwaysStrict":true,"composite":true,"declaration":true,"declarationMap":true,"esModuleInterop":true,"module":99,"newLine":1,"noEmitOnError":true,"noImplicitAny":true,"noImplicitThis":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./","preserveConstEnums":true,"skipLibCheck":true,"sourceMap":true,"strict":true,"strictFunctionTypes":true,"strictNullChecks":true,"strictPropertyInitialization":true,"target":2},"referencedMap":[[95,1],[96,1],[97,2],[56,3],[98,4],[99,5],[100,6],[51,7],[54,8],[52,7],[53,7],[101,9],[102,10],[103,11],[104,12],[105,13],[106,14],[107,14],[109,15],[108,16],[110,17],[111,18],[112,19],[94,20],[55,7],[113,21],[114,22],[115,23],[148,24],[116,25],[117,26],[118,27],[119,28],[120,29],[121,30],[122,31],[123,32],[124,33],[125,34],[126,34],[127,35],[128,7],[129,7],[130,36],[132,37],[131,38],[133,39],[134,40],[135,41],[136,42],[137,43],[138,44],[139,45],[140,46],[141,47],[142,48],[143,49],[144,50],[145,51],[146,52],[147,53],[49,7],[45,7],[46,7],[8,7],[10,7],[9,7],[2,7],[11,7],[12,7],[13,7],[14,7],[15,7],[16,7],[17,7],[18,7],[3,7],[19,7],[20,7],[4,7],[21,7],[25,7],[22,7],[23,7],[24,7],[26,7],[27,7],[28,7],[5,7],[29,7],[30,7],[31,7],[32,7],[6,7],[36,7],[33,7],[34,7],[35,7],[37,7],[7,7],[38,7],[43,7],[44,7],[39,7],[40,7],[41,7],[42,7],[1,7],[72,54],[82,55],[71,54],[92,56],[63,57],[62,58],[91,59],[85,60],[90,61],[65,62],[79,63],[64,64],[88,65],[60,66],[59,59],[89,67],[61,68],[66,69],[67,7],[70,69],[57,7],[93,70],[83,71],[74,72],[75,73],[77,74],[73,75],[76,76],[86,59],[68,77],[69,78],[78,79],[58,80],[81,71],[80,69],[84,7],[87,81],[47,7],[48,7],[50,82]],"latestChangedDtsFile":"./src/parser.d.ts","version":"5.7.2"} \ No newline at end of file +{"fileNames":["../node_modules/typescript/lib/lib.es5.d.ts","../node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/typescript/lib/lib.dom.d.ts","../node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/typescript/lib/lib.es2016.intl.d.ts","../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../node_modules/typescript/lib/lib.es2017.date.d.ts","../node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/typescript/lib/lib.es2019.intl.d.ts","../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/typescript/lib/lib.es2020.date.d.ts","../node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/typescript/lib/lib.es2020.number.d.ts","../node_modules/typescript/lib/lib.decorators.d.ts","../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../src/Interfaces.ts","../node_modules/ohm-js/index.d.ts","../src/Parser.ts","../src/arithmetic.ts","../src/Semantics.ts","../src/Core.ts","../src/Ui.ts","../src/main.ts","../node_modules/@types/node/compatibility/disposable.d.ts","../node_modules/@types/node/compatibility/indexable.d.ts","../node_modules/@types/node/compatibility/iterators.d.ts","../node_modules/@types/node/compatibility/index.d.ts","../node_modules/@types/node/globals.typedarray.d.ts","../node_modules/@types/node/buffer.buffer.d.ts","../node_modules/undici-types/header.d.ts","../node_modules/undici-types/readable.d.ts","../node_modules/undici-types/file.d.ts","../node_modules/undici-types/fetch.d.ts","../node_modules/undici-types/formdata.d.ts","../node_modules/undici-types/connector.d.ts","../node_modules/undici-types/client.d.ts","../node_modules/undici-types/errors.d.ts","../node_modules/undici-types/dispatcher.d.ts","../node_modules/undici-types/global-dispatcher.d.ts","../node_modules/undici-types/global-origin.d.ts","../node_modules/undici-types/pool-stats.d.ts","../node_modules/undici-types/pool.d.ts","../node_modules/undici-types/handlers.d.ts","../node_modules/undici-types/balanced-pool.d.ts","../node_modules/undici-types/agent.d.ts","../node_modules/undici-types/mock-interceptor.d.ts","../node_modules/undici-types/mock-agent.d.ts","../node_modules/undici-types/mock-client.d.ts","../node_modules/undici-types/mock-pool.d.ts","../node_modules/undici-types/mock-errors.d.ts","../node_modules/undici-types/proxy-agent.d.ts","../node_modules/undici-types/env-http-proxy-agent.d.ts","../node_modules/undici-types/retry-handler.d.ts","../node_modules/undici-types/retry-agent.d.ts","../node_modules/undici-types/api.d.ts","../node_modules/undici-types/interceptors.d.ts","../node_modules/undici-types/util.d.ts","../node_modules/undici-types/cookies.d.ts","../node_modules/undici-types/patch.d.ts","../node_modules/undici-types/websocket.d.ts","../node_modules/undici-types/eventsource.d.ts","../node_modules/undici-types/filereader.d.ts","../node_modules/undici-types/diagnostics-channel.d.ts","../node_modules/undici-types/content-type.d.ts","../node_modules/undici-types/cache.d.ts","../node_modules/undici-types/index.d.ts","../node_modules/@types/node/globals.d.ts","../node_modules/@types/node/assert.d.ts","../node_modules/@types/node/assert/strict.d.ts","../node_modules/@types/node/async_hooks.d.ts","../node_modules/@types/node/buffer.d.ts","../node_modules/@types/node/child_process.d.ts","../node_modules/@types/node/cluster.d.ts","../node_modules/@types/node/console.d.ts","../node_modules/@types/node/constants.d.ts","../node_modules/@types/node/crypto.d.ts","../node_modules/@types/node/dgram.d.ts","../node_modules/@types/node/diagnostics_channel.d.ts","../node_modules/@types/node/dns.d.ts","../node_modules/@types/node/dns/promises.d.ts","../node_modules/@types/node/domain.d.ts","../node_modules/@types/node/dom-events.d.ts","../node_modules/@types/node/events.d.ts","../node_modules/@types/node/fs.d.ts","../node_modules/@types/node/fs/promises.d.ts","../node_modules/@types/node/http.d.ts","../node_modules/@types/node/http2.d.ts","../node_modules/@types/node/https.d.ts","../node_modules/@types/node/inspector.d.ts","../node_modules/@types/node/module.d.ts","../node_modules/@types/node/net.d.ts","../node_modules/@types/node/os.d.ts","../node_modules/@types/node/path.d.ts","../node_modules/@types/node/perf_hooks.d.ts","../node_modules/@types/node/process.d.ts","../node_modules/@types/node/punycode.d.ts","../node_modules/@types/node/querystring.d.ts","../node_modules/@types/node/readline.d.ts","../node_modules/@types/node/readline/promises.d.ts","../node_modules/@types/node/repl.d.ts","../node_modules/@types/node/sea.d.ts","../node_modules/@types/node/sqlite.d.ts","../node_modules/@types/node/stream.d.ts","../node_modules/@types/node/stream/promises.d.ts","../node_modules/@types/node/stream/consumers.d.ts","../node_modules/@types/node/stream/web.d.ts","../node_modules/@types/node/string_decoder.d.ts","../node_modules/@types/node/test.d.ts","../node_modules/@types/node/timers.d.ts","../node_modules/@types/node/timers/promises.d.ts","../node_modules/@types/node/tls.d.ts","../node_modules/@types/node/trace_events.d.ts","../node_modules/@types/node/tty.d.ts","../node_modules/@types/node/url.d.ts","../node_modules/@types/node/util.d.ts","../node_modules/@types/node/v8.d.ts","../node_modules/@types/node/vm.d.ts","../node_modules/@types/node/wasi.d.ts","../node_modules/@types/node/worker_threads.d.ts","../node_modules/@types/node/zlib.d.ts","../node_modules/@types/node/index.d.ts"],"fileIdsList":[[60,99,102],[60,101,102],[102],[60,102,107,137],[60,102,103,108,114,115,122,134,145],[60,102,103,104,114,122],[60,102],[55,56,57,60,102],[60,102,105,146],[60,102,106,107,115,123],[60,102,107,134,142],[60,102,108,110,114,122],[60,101,102,109],[60,102,110,111],[60,102,114],[60,102,112,114],[60,101,102,114],[60,102,114,115,116,134,145],[60,102,114,115,116,129,134,137],[60,97,102,150],[60,97,102,110,114,117,122,134,145],[60,102,114,115,117,118,122,134,142,145],[60,102,117,119,134,142,145],[58,59,60,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151],[60,102,114,120],[60,102,121,145,150],[60,102,110,114,122,134],[60,102,123],[60,102,124],[60,101,102,125],[60,99,100,101,102,103,104,105,106,107,108,109,110,111,112,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151],[60,102,127],[60,102,128],[60,102,114,129,130],[60,102,129,131,146,148],[60,102,114,134,135,136,137],[60,102,134,136],[60,102,134,135],[60,102,137],[60,102,138],[60,99,102,134],[60,102,114,140,141],[60,102,140,141],[60,102,107,122,134,142],[60,102,143],[60,102,122,144],[60,102,117,128,145],[60,102,107,146],[60,102,134,147],[60,102,121,148],[60,102,149],[60,102,107,114,116,125,134,145,148,150],[60,102,134,151],[60,69,73,102,145],[60,69,102,134,145],[60,64,102],[60,66,69,102,142,145],[60,102,122,142],[60,102,152],[60,64,102,152],[60,66,69,102,122,145],[60,61,62,65,68,102,114,134,145],[60,69,76,102],[60,61,67,102],[60,69,90,91,102],[60,65,69,102,137,145,152],[60,90,102,152],[60,63,64,102,152],[60,69,102],[60,63,64,65,66,67,68,69,70,71,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,91,92,93,94,95,96,102],[60,69,84,102],[60,69,76,77,102],[60,67,69,77,78,102],[60,68,102],[60,61,64,69,102],[60,69,73,77,78,102],[60,73,102],[60,67,69,72,102,145],[60,61,66,69,76,102],[60,102,134],[60,64,69,90,102,150,152],[47,49,50,51,60,102],[48,60,102],[47,60,102],[47,52,53,60,102]],"fileInfos":[{"version":"e41c290ef7dd7dab3493e6cbe5909e0148edf4a8dad0271be08edec368a0f7b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"4fd3f3422b2d2a3dfd5cdd0f387b3a8ec45f006c6ea896a4cb41264c2100bb2c","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"62bb211266ee48b2d0edf0d8d1b191f0c24fc379a82bd4c1692a082c540bc6b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"936e80ad36a2ee83fc3caf008e7c4c5afe45b3cf3d5c24408f039c1d47bdc1df","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"fef8cfad2e2dc5f5b3d97a6f4f2e92848eb1b88e897bb7318cef0e2820bceaab","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"f1e2a172204962276504466a6393426d2ca9c54894b1ad0a6c9dad867a65f876","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"d5d88fc579656d31bc5a639e2a9eafc0b16e1ca03466f79b213dfddbd7948341","signature":"0c66f4f1d3e1ea1c7ed00f829305843e1e7d1ecf0c4ae1ad0f9152bfd62b3bb1"},{"version":"efbdac1987ca35b6fdb0ac944c76ac53fb96ead05ffa0787a9a42c7afdf62a4c","impliedFormat":99},{"version":"0c7ead74db08c1595eec0e550212bce6cad3de9a87706d803a264da438bd2994","signature":"bd2b3f3c9b19ee4466d53a10577495f3727d62d3cace20c9fa37b81b184e6957"},{"version":"7772f97c1332f74e840ccae7adb324ccd4b2d3b07b88a33a61171d4250f97ee6","signature":"6d9bf2b4abb0797f253d20666eabeb03229f59c5ac732e286480da4d1ff8d469"},{"version":"9b3779646e08b162516fb635a9f4f48a0fb2cce1e48f1ecd4072d60a856dcc0a","signature":"50913417665b8811b737288acd99b240c431b8942d05eb7dc6d5a1f6b50eb179"},{"version":"62c98b78bb86d11bd165580709d847809ceda2de6fcb65c44d83e2fe3191a1b4","signature":"2d83a5c8654658ebf2c49739b472d73f9c49144070535719da522a2eab6983f5"},{"version":"b4e600aa01fa51df7a56be49634a60e4e65c22a2452453103f574fcb1ae016f8","signature":"cb7333156c7c8f3ad169c174deb212eb572b7c7e4a6a8ab19515946afe42b119"},{"version":"d7ab490ea502079282216993b556b834eba8ab7c5537e05be8de0ad7f8dd786d","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"70521b6ab0dcba37539e5303104f29b721bfb2940b2776da4cc818c07e1fefc1","affectsGlobalScope":true,"impliedFormat":1},{"version":"030e350db2525514580ed054f712ffb22d273e6bc7eddc1bb7eda1e0ba5d395e","affectsGlobalScope":true,"impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"a79e62f1e20467e11a904399b8b18b18c0c6eea6b50c1168bf215356d5bebfaf","affectsGlobalScope":true,"impliedFormat":1},{"version":"0fd06258805d26c72f5997e07a23155d322d5f05387adb3744a791fe6a0b042d","affectsGlobalScope":true,"impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"24bd580b5743dc56402c440dc7f9a4f5d592ad7a419f25414d37a7bfe11e342b","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"6bdc71028db658243775263e93a7db2fd2abfce3ca569c3cca5aee6ed5eb186d","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"81184fe8e67d78ac4e5374650f0892d547d665d77da2b2f544b5d84729c4a15d","affectsGlobalScope":true,"impliedFormat":1},{"version":"f52e8dacc97d71dcc96af29e49584353f9c54cb916d132e3e768d8b8129c928d","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"76103716ba397bbb61f9fa9c9090dca59f39f9047cb1352b2179c5d8e7f4e8d0","impliedFormat":1},{"version":"53eac70430b30089a3a1959d8306b0f9cfaf0de75224b68ef25243e0b5ad1ca3","affectsGlobalScope":true,"impliedFormat":1},{"version":"4314c7a11517e221f7296b46547dbc4df047115b182f544d072bdccffa57fc72","impliedFormat":1},{"version":"115971d64632ea4742b5b115fb64ed04bcaae2c3c342f13d9ba7e3f9ee39c4e7","impliedFormat":1},{"version":"c2510f124c0293ab80b1777c44d80f812b75612f297b9857406468c0f4dafe29","affectsGlobalScope":true,"impliedFormat":1},{"version":"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb","impliedFormat":1},{"version":"86956cc2eb9dd371d6fab493d326a574afedebf76eef3fa7833b8e0d9b52d6f1","affectsGlobalScope":true,"impliedFormat":1},{"version":"24642567d3729bcc545bacb65ee7c0db423400c7f1ef757cab25d05650064f98","impliedFormat":1},{"version":"e6f5a38687bebe43a4cef426b69d34373ef68be9a6b1538ec0a371e69f309354","impliedFormat":1},{"version":"a6bf63d17324010ca1fbf0389cab83f93389bb0b9a01dc8a346d092f65b3605f","impliedFormat":1},{"version":"e009777bef4b023a999b2e5b9a136ff2cde37dc3f77c744a02840f05b18be8ff","impliedFormat":1},{"version":"1e0d1f8b0adfa0b0330e028c7941b5a98c08b600efe7f14d2d2a00854fb2f393","impliedFormat":1},{"version":"ee1ee365d88c4c6c0c0a5a5701d66ebc27ccd0bcfcfaa482c6e2e7fe7b98edf7","affectsGlobalScope":true,"impliedFormat":1},{"version":"875928df2f3e9a3aed4019539a15d04ff6140a06df6cd1b2feb836d22a81eaca","affectsGlobalScope":true,"impliedFormat":1},{"version":"e9ad08a376ac84948fcca0013d6f1d4ae4f9522e26b91f87945b97c99d7cc30b","impliedFormat":1},{"version":"eaf9ee1d90a35d56264f0bf39842282c58b9219e112ac7d0c1bce98c6c5da672","impliedFormat":1},{"version":"c15c4427ae7fd1dcd7f312a8a447ac93581b0d4664ddf151ecd07de4bf2bb9d7","impliedFormat":1},{"version":"5135bdd72cc05a8192bd2e92f0914d7fc43ee077d1293dc622a049b7035a0afb","impliedFormat":1},{"version":"4f80de3a11c0d2f1329a72e92c7416b2f7eab14f67e92cac63bb4e8d01c6edc8","impliedFormat":1},{"version":"6d386bc0d7f3afa1d401afc3e00ed6b09205a354a9795196caed937494a713e6","impliedFormat":1},{"version":"75c3400359d59fae5aed4c4a59fcd8a9760cf451e25dc2174cb5e08b9d4803e2","affectsGlobalScope":true,"impliedFormat":1},{"version":"94c4187083503a74f4544503b5a30e2bd7af0032dc739b0c9a7ce87f8bddc7b9","impliedFormat":1},{"version":"b1b6ee0d012aeebe11d776a155d8979730440082797695fc8e2a5c326285678f","impliedFormat":1},{"version":"45875bcae57270aeb3ebc73a5e3fb4c7b9d91d6b045f107c1d8513c28ece71c0","impliedFormat":1},{"version":"3eb62baae4df08c9173e6903d3ca45942ccec8c3659b0565684a75f3292cffbb","affectsGlobalScope":true,"impliedFormat":1},{"version":"a85683ef86875f4ad4c6b7301bbcc63fb379a8d80d3d3fd735ee57f48ef8a47e","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f16a7e4deafa527ed9995a772bb380eb7d3c2c0fd4ae178c5263ed18394db2c","impliedFormat":1},{"version":"c6b4e0a02545304935ecbf7de7a8e056a31bb50939b5b321c9d50a405b5a0bba","impliedFormat":1},{"version":"fab29e6d649aa074a6b91e3bdf2bff484934a46067f6ee97a30fcd9762ae2213","impliedFormat":1},{"version":"8145e07aad6da5f23f2fcd8c8e4c5c13fb26ee986a79d03b0829b8fce152d8b2","impliedFormat":1},{"version":"e1120271ebbc9952fdc7b2dd3e145560e52e06956345e6fdf91d70ca4886464f","impliedFormat":1},{"version":"15c5e91b5f08be34a78e3d976179bf5b7a9cc28dc0ef1ffebffeb3c7812a2dca","impliedFormat":1},{"version":"a8f06c2382a30b7cb89ad2dfc48fc3b2b490f3dafcd839dadc008e4e5d57031d","impliedFormat":1},{"version":"553870e516f8c772b89f3820576152ebc70181d7994d96917bb943e37da7f8a7","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"93452d394fdd1dc551ec62f5042366f011a00d342d36d50793b3529bfc9bd633","impliedFormat":1},{"version":"745c4240220559bd340c8aeb6e3c5270a709d3565e934dc22a69c304703956bc","affectsGlobalScope":true,"impliedFormat":1},{"version":"2754d8221d77c7b382096651925eb476f1066b3348da4b73fe71ced7801edada","impliedFormat":1},{"version":"9212c6e9d80cb45441a3614e95afd7235a55a18584c2ed32d6c1aca5a0c53d93","affectsGlobalScope":true,"impliedFormat":1},{"version":"bef91efa0baea5d0e0f0f27b574a8bc100ce62a6d7e70220a0d58af6acab5e89","affectsGlobalScope":true,"impliedFormat":1},{"version":"282fd2a1268a25345b830497b4b7bf5037a5e04f6a9c44c840cb605e19fea841","impliedFormat":1},{"version":"5360a27d3ebca11b224d7d3e38e3e2c63f8290cb1fcf6c3610401898f8e68bc3","impliedFormat":1},{"version":"66ba1b2c3e3a3644a1011cd530fb444a96b1b2dfe2f5e837a002d41a1a799e60","impliedFormat":1},{"version":"7e514f5b852fdbc166b539fdd1f4e9114f29911592a5eb10a94bb3a13ccac3c4","impliedFormat":1},{"version":"7d6ff413e198d25639f9f01f16673e7df4e4bd2875a42455afd4ecc02ef156da","affectsGlobalScope":true,"impliedFormat":1},{"version":"6bd91a2a356600dee28eb0438082d0799a18a974a6537c4410a796bab749813c","affectsGlobalScope":true,"impliedFormat":1},{"version":"f689c4237b70ae6be5f0e4180e8833f34ace40529d1acc0676ab8fb8f70457d7","impliedFormat":1},{"version":"ae25afbbf1ed5df63a177d67b9048bf7481067f1b8dc9c39212e59db94fc9fc6","impliedFormat":1},{"version":"ac5ed35e649cdd8143131964336ab9076937fa91802ec760b3ea63b59175c10a","impliedFormat":1},{"version":"52a8e7e8a1454b6d1b5ad428efae3870ffc56f2c02d923467f2940c454aa9aec","affectsGlobalScope":true,"impliedFormat":1},{"version":"78dc0513cc4f1642906b74dda42146bcbd9df7401717d6e89ea6d72d12ecb539","impliedFormat":1},{"version":"ad90122e1cb599b3bc06a11710eb5489101be678f2920f2322b0ac3e195af78d","impliedFormat":1}],"root":[47,[49,54]],"options":{"alwaysStrict":true,"composite":true,"declaration":true,"declarationMap":true,"esModuleInterop":true,"module":99,"newLine":1,"noEmitOnError":true,"noImplicitAny":true,"noImplicitThis":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./","preserveConstEnums":true,"skipLibCheck":true,"sourceMap":true,"strict":true,"strictFunctionTypes":true,"strictNullChecks":true,"strictPropertyInitialization":true,"target":2},"referencedMap":[[99,1],[100,1],[101,2],[60,3],[102,4],[103,5],[104,6],[55,7],[58,8],[56,7],[57,7],[105,9],[106,10],[107,11],[108,12],[109,13],[110,14],[111,14],[113,15],[112,16],[114,17],[115,18],[116,19],[98,20],[59,7],[117,21],[118,22],[119,23],[152,24],[120,25],[121,26],[122,27],[123,28],[124,29],[125,30],[126,31],[127,32],[128,33],[129,34],[130,34],[131,35],[132,7],[133,7],[134,36],[136,37],[135,38],[137,39],[138,40],[139,41],[140,42],[141,43],[142,44],[143,45],[144,46],[145,47],[146,48],[147,49],[148,50],[149,51],[150,52],[151,53],[48,7],[45,7],[46,7],[8,7],[10,7],[9,7],[2,7],[11,7],[12,7],[13,7],[14,7],[15,7],[16,7],[17,7],[18,7],[3,7],[19,7],[20,7],[4,7],[21,7],[25,7],[22,7],[23,7],[24,7],[26,7],[27,7],[28,7],[5,7],[29,7],[30,7],[31,7],[32,7],[6,7],[36,7],[33,7],[34,7],[35,7],[37,7],[7,7],[38,7],[43,7],[44,7],[39,7],[40,7],[41,7],[42,7],[1,7],[76,54],[86,55],[75,54],[96,56],[67,57],[66,58],[95,59],[89,60],[94,61],[69,62],[83,63],[68,64],[92,65],[64,66],[63,59],[93,67],[65,68],[70,69],[71,7],[74,69],[61,7],[97,70],[87,71],[78,72],[79,73],[81,74],[77,75],[80,76],[90,59],[72,77],[73,78],[82,79],[62,80],[85,71],[84,69],[88,7],[91,81],[52,82],[47,7],[49,83],[51,83],[53,84],[50,7],[54,85]],"latestChangedDtsFile":"./src/main.d.ts","version":"5.7.2"} \ No newline at end of file