mirror of
https://github.com/curioustorvald/tsvm.git
synced 2026-06-10 23:04:04 +09:00
basic:fixing undefined tree node (e.g. '10 PRINT SPC(19);') would cause error
This commit is contained in:
@@ -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
|
* @return syntaxTreeReturnObject if recursion is escaped
|
||||||
*/
|
*/
|
||||||
|
bF._troNOP = function(lnum) { return new SyntaxTreeReturnObj("null", undefined, lnum + 1); }
|
||||||
bF._executeSyntaxTree = function(lnum, syntaxTree, recDepth) {
|
bF._executeSyntaxTree = function(lnum, syntaxTree, recDepth) {
|
||||||
var _debugExec = true;
|
var _debugExec = true;
|
||||||
var recWedge = "> ".repeat(recDepth);
|
var recWedge = "> ".repeat(recDepth);
|
||||||
|
|
||||||
if (_debugExec) serial.println(recWedge+"@@ EXECUTE @@");
|
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";
|
if (syntaxTree.astLeaves.length > 1) throw "WTF";
|
||||||
return bF._executeSyntaxTree(lnum, syntaxTree.astLeaves[0], recDepth);
|
return bF._executeSyntaxTree(lnum, syntaxTree.astLeaves[0], recDepth);
|
||||||
}
|
}
|
||||||
else if (syntaxTree === undefined || (recDepth == 0 && syntaxTree.astValue.toUpperCase() == "REM"))
|
else if (recDepth == 0 && syntaxTree.astValue.toUpperCase() == "REM")
|
||||||
return new SyntaxTreeReturnObj("null", undefined, lnum + 1);
|
return bF._troNOP(lnum);
|
||||||
else if (syntaxTree.astType == "function" || syntaxTree.astType == "op") {
|
else if (syntaxTree.astType == "function" || syntaxTree.astType == "op") {
|
||||||
if (_debugExec) serial.println(recWedge+"function|operator");
|
if (_debugExec) serial.println(recWedge+"function|operator");
|
||||||
if (_debugExec) serial.println(recWedge+syntaxTree.toString());
|
if (_debugExec) serial.println(recWedge+syntaxTree.toString());
|
||||||
|
|||||||
Reference in New Issue
Block a user