From 0b646c4d51c820adb080aa13c165213cf3fb8ec3 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Mon, 30 Nov 2020 11:47:30 +0900 Subject: [PATCH] basic:fixing undefined tree node (e.g. '10 PRINT SPC(19);') would cause error --- assets/basic.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/assets/basic.js b/assets/basic.js index 2fdbd01..6952a3b 100644 --- a/assets/basic.js +++ b/assets/basic.js @@ -1528,18 +1528,20 @@ bF._gotoCmds = {GOTO:1,GOSUB:1,RETURN:1,NEXT:1,END:1}; // put nonzero (truthy) v * * @return syntaxTreeReturnObject if recursion is escaped */ +bF._troNOP = function(lnum) { return new SyntaxTreeReturnObj("null", undefined, lnum + 1); } bF._executeSyntaxTree = function(lnum, syntaxTree, recDepth) { var _debugExec = true; var recWedge = "> ".repeat(recDepth); if (_debugExec) serial.println(recWedge+"@@ EXECUTE @@"); - if (syntaxTree.astValue == undefined) { // empty meaningless parens + if (syntaxTree == undefined) return bF._troNOP(lnum); + else if (syntaxTree.astValue == undefined) { // empty meaningless parens if (syntaxTree.astLeaves.length > 1) throw "WTF"; return bF._executeSyntaxTree(lnum, syntaxTree.astLeaves[0], recDepth); } - else if (syntaxTree === undefined || (recDepth == 0 && syntaxTree.astValue.toUpperCase() == "REM")) - return new SyntaxTreeReturnObj("null", undefined, lnum + 1); + else if (recDepth == 0 && syntaxTree.astValue.toUpperCase() == "REM") + return bF._troNOP(lnum); else if (syntaxTree.astType == "function" || syntaxTree.astType == "op") { if (_debugExec) serial.println(recWedge+"function|operator"); if (_debugExec) serial.println(recWedge+syntaxTree.toString());