Skip to content

Commit

Permalink
Cleaned the grammar (avoid unsing OP_NONE for separator, ...)
Browse files Browse the repository at this point in the history
ExecutenextStmt (instead of ExecuteNextLine), Detect type of last answer
and print it, ....
  • Loading branch information
Krevo committed Aug 30, 2019
1 parent bb40242 commit 3a9ac71
Show file tree
Hide file tree
Showing 6 changed files with 191 additions and 140 deletions.
5 changes: 1 addition & 4 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,7 @@ SHELL=/bin/bash
BUILD_DATE := $(shell date "+%Y-%m-%d")
NOW := $(shell date "+%s")
FIRST_AUG2014 := $(shell date -d '1 Aug 2014' "+%s")
#now=`date "+%s"`
#firstAug2014=`date -d '1 Aug 2014' "+%s"`
REVISION := "r$$(($(NOW) - $(FIRST_AUG2014)))"
#sed -i 's/\(var CBI_VERSION\)\(.*\)/\1 = "'${REVISION}'";/g' public/js/cbiversion.js
REVISION := $(shell echo "r$$(($(NOW) - $(FIRST_AUG2014)))")

all: build/ cbiversion public/js/cbi.js

Expand Down
228 changes: 115 additions & 113 deletions cbi_grammar.par

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions public/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -947,6 +947,8 @@
<textarea style="display: none" id="srcCode23">
#Program name: LABYRINT
#Password: <no password>
#hires
#multicolor
'Labyrinthe (a simplified version of labybug)
'by Krevo_
'
Expand Down
4 changes: 2 additions & 2 deletions src/js/cbihelper.js
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ var RAD = 2;
var GRAD = 3;

var casioFontSrc = "data:image/gif;base64,R0lGODlhAAYIAKEBAAQEBP///////////yH5BAEKAAIALAAAAAAABggAAAL+DH6GoNi5WHxy0Tuz1Y7DDXbhJ5bkWZkpegXu6zKvNBuwDN95stf5DwwKd7zYjTfxJRUxS2NWHOqCuCbOYbVekUWPDHvNQmnGqq2s5HbV2++mFo7D4U4s0H6mmqdSo3Dv1yOY19RneIiYqAjlw/Q3suIm2SaGMcK4iLiHV0XzpRVpqdIC1kj1AHpX18biJdoKaej6RLo2Cch3hGezlKkZ6xq8SjeWKjx6DIvsRLTsrAwdmiwNXP1Mff2KHa2aPa2dR8Y7h1Y+bi6eHr4uh85Ofh6v3i7/7k4/D49LmF8sZwZwUKCBvuo5WmcKyQ9c/c5EiULoTqOGFB0SDOiOoMX+jYwg6LNXL0wgfCDVTel0ytzCIftWngLUMmWugjRj0pR58c/HOJ8U+iTzsNMnnDIxzgyIshxJnkxE9vTzgaUShIOAjixJVeo9UzozWh24KatElxFN3uyzdKdapYWmYk27NW7ItXPlVoRbN+9dunvtvuX79+pVvH31BjZM+HDhxYobJ378ESfQOmPFla1ssCZUkVV1TNIINXLQXL2GjutAd7DAy4JPivXkiDE9PonztgZtep/QnpQKSSKNeg0Rt+Gs2tIyhjdyWo+flmFmFKxfpryUY6pwJHv1sC1Yvzrag/M/j57IE78MW/hUpgqTq57uHDHXoghLbRb6HiVMOrD+b9v5X1xvkE1HjmnFOAbYgIado6BsCT5IYITySehgRp01iCCFGU7IYYUdbughY0SFp510WlXFBkzMkNVfRKwZ+NxDuriHliaulWdCTjF+tl133Mno2Wkh2bddb63lY5aOGnGnmU+CeHTfYLmxyM8c2H140H7vZdaFiQfpgYZsl3z5ExvLZUkZZ6SN5d1CSVXXFDEGlYLac2yJ4ZRRQ2HYlkW1uTmlmhOBVpdTbCKVBllbRodhbV1ipmGjEFIlaaSThghippUi9oalnn64KaahanopqRYq2gxEBra42khA9imLdoLu1wuXg56EX0IrvpnCYVsqaZahmeXXUJjx0Db+6D9+rjmTkot0eiw70OkSLIt6CnnPf0RWQilbSZK52rUc3WXdlW2ZSyZATE7mDZ2tdtVjekIKG1pgatJrYqCAXaTvqS5iRSUtzPFXpHhcVXugwNoKWOqfUjwKasOlMijxp6JWHLHFpv47ascYX6yxxyF/LJaNDN9JlLLOunnwrV4mRdKRtEX3b7MtRwjjtQbXu+eFqW3Us8yhuRGn0DZXmcmmNiM8LtLz/uzaoQw615+qzdKsW4Llxlb0aJh8LZ1NAuUa7YlIwjnnnXDde147/S5o9aKvSS3obfBaxq/LyHoJHrJvg1zzwySLnHHhgB++MeKjykz4PNZw803kj2/ZQzk4kreLOTcjBnl00fS9O99wjwi4ip7H6brFiZ0zOfCOBy4MJbX1qSdtnXO2l51JnMzoMtNJ7MI7oBC5B50tv6EumLZRu6s77i7tZnpWX0WVHNmpjw45b6fDjm5Qw28GDpsJJXK55vZByUXCHFTfZ/mTpZsNt+zXmgpa0M7MiopgnC6wq6RnXjn6yWJyliOg+7qRPQAWUIEHbKABH6hA4QUQgiw4iwUviMEManCDHOygBz8IwhCKcIQkLKEJT4jCFKpwhSxsoQtfCMMYynCGNKyhDW+IQxMWAAA7";
var casioFontHiSrc = "data:image/gif;base64,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";
var casioFontHiSrc = "data:image/gif;base64,R0lGODdhoA8WAIAAAAQC/Pz+/CwAAAAAoA8WAAAC/oyPqcvtD6OctNqLs968+w+G4kiWHGCm6sq27gvH8kzX9o3n+s6TANoLCofEovGITCqXzKbzCY1Kp9Sq9YrNarfcrvcLDovH5LL5/PhB1AG2g+1mAOW/+boeid/f9r1Wj1DXtyDIV2gI2ICnINiIOGjQ6Eg4Sbc4duhxSSl5t3nQqSj5GTkKWZoZOAhomtgWmsCqR8oo2/fp+pprmkaLmspJ24q7envqlvsKmhjnOjtsyZxc6xt7mjFNka15bVF5sW09kbz9jfYRfr7crSyarg4fLz9PX29/j5+vv8/f7/8PMKDAgQQLhsgGh12bZWncVVsHjNI4heneKXEGi1o1/l7BzAXrGBGisFYgMXrkwjEau5C/TrYkldJaTJEsZ7ZTpTGjqpOyqHmSacxYSUjQco4cpRLmMKHicPos5c6pVFRPabq8qnAnwofeskqwiM2rJ669uk7kk4clQbBmXDJ0KNag3Ll069q9izev3r18+/r9Cziw4MFGtkJFe7gjobeII/lJ+1jOW7ZDMK6jk5iRTImXH3FOa8er0tC2On9BtgtpNFGbqzpuSrXWWdCxZMP+TNs2451jtbbevVva76nCTfMOVJb1bV26bzZnbjyzdOW4q39dCYQy5g7aK3SfqgFsxW7vvtczD4as86iE27t/Dz++/Pn069u/jz+//v38/rn5mYZMUs+A91xkjTVUlhro6WDScdTl1gt50C3HnlkF9uQgJtKQ5tCD0623HXAfhmgIZBQSWGJzDSaI3DPNFDPcdMTEuJ5SFpIoI4wogvgiJzu6dmKQB6oYVwsLGhiWfzSUV+Q+R3YRTpRN9kdllVZeiWWWWm7JZZdefglmmEgYBmJTG762iogFJockjqu1KYRlQo5oCYSyjXRdkhfq+KORGEyZ4YfFyUmgei6u6aZ1bpITF550kqUgQy5ySCGGgVoqIqZ5esgjnyMOek2PJiY6J6mduuBWQltttEhqvhSlUY6/wBXhQwOaqkyrRGXHlVqqkqfrdr6GtNSeJ17C/mihQVlHEqe49ilmtNJOS2211l6LbbbabstttyOQuSGsN4X6jaZwIoqub+fy8KqnilaYom2OrjtkpssKaahFatX6p7tqJrSovwGnW+qEbKqJcJ3yAksRCgAPiJqxld6qrMTaAGtxbIxF7FOyZb6bMLSIEmpCs0ClqtrJxKaslU4v2ehyS7V6TOfHL0ekIFYxm6xyu7qM5lGxE2ec2nDFocgzwSGL7G3TTj8NddRST0111VZfjfW3gPacUYAdalwwOGLZ6nDZBxNRdKlM2mlmuKz+LBq5SAsMNryecQ2MWwoTBwdnJBtcc8VhBw44pzSzDRWA4KIpFMfRnWq0uYfS/nj20EQuPIdJ2BXuY70gP7skU0A9DngxmY8W6JzIAr30eI0pniLAowsq6uyFr645csthXK/kolvOubmf2zz4k1kfj3zyyi/PfPPOPw999EE86fVTY7u6tbPaL3TY4WjLrXaj5A5Luk03N8ywz6mTDqRiQ9W0b/ktW3oUVpsqa37S6sGtN5O79ro42U0GODba3eQEV7eX3I9ZuxLcIVzVm1Ftb3CE20Fp5ibB29GtZgc0DtlmI6yGve50kfPXBe1FOc6tb4KQA8+MFCXA55DJc8NbmvRuiMMc6nCHPOyhD38IxPtQj1e0yqA4NpG9CtqQeEy7gcdiWMOQxew1CeRe/vletLlHHAM1xlNJycjWQI1hym0rW2CO8jcTJAJtikqsIhtV6JQHMgWKqJtf3k54My2uS3i1m0yw9va1ykWRiRTEge/aV50C9sl7ipTi9dBSDt6N63eyAh4KgxTJi1XuaC10nO1wk8l4CbJz7gNFEE+JylSqcpWsbKUrXwlLsYGAhHCRZIiacQLxGdEqeqvBE4lIQ6VdcYXtE96P1CigLpIyBW/7TB8zw0kNmrGF9DIYzjZIyPXhgVUiTMyt6Oi7nYUzfiIJJjU3FkazWTFW1YRjE7PZRhnY5JA/MWDS8EXPRT6yiKP0Ji0viUCACpRp5AwcHyklFU+qi0QzzAkI/iNox17GcqIUrahFL4rRjGp0o3oxz1Kwd8I7JjSXmtzAR00q0YcysJ/vrFsHN4nNZu5IjitIaVi8tzHNZCia5zQcNgvWyEqCTpv/RCRsFBqxl/Z0mUKFpztxKidnoOlj2+wmS9/puundM5+ilI7QTBXUpS6RgxKlGVJNiNaMfSpu8YPdsYrqR2CCDoqfs6lTcXYyjup1r3ztq1//CtjACpYJH5VQjUiTCogl0amM3eVN9+fYgSoNsgT8au9iakslKpOfeGsXpLZoytpENJzFS+s0i2naoQ6ziu5c61HVGVDNpraNOI2tH98E27ZVM6unHWQMXmjbSLqLso/iKllV/tq2LN4SrsbtaXPjyVqD0o2uicvV+LLo1nq2s7WD7a53vwve8Ip3vOTNKHUXQzxPTmqxa5vlYlXQUOlGSJajzZdaVffTsbp3jSyDG3eKut6gmS6F9hRmBZtbW7tB80yjpNhCEBw3te4vwU2N4xZ/BUrlsrClUorTbM+YwbDu8V62xaoks+tM5n7YuSuG7nEvG0LMZIeqZeMdhQfZ4fLqeMc87rGPfwzkIIMJrop4MRU79d72ouO9zEQfMck6pc+y9b6ty29jD0JciMzSNFi8r4hlGMbIXqrFCZsuJaOLMAdfk0Y5fpwx0wXVUNkMdwNmn3yR21XV/pbE0eFpIt88/kGlApq3GTan4xxcYSRbUoVskSkgfVa0GTNYcSjebpuFjOlMa3rTnO60pz/tYSXNOXNPBbAak3w9Jo/VeAC832cVjF4tz1en7Ovys04d61JHGBx/Ehv4+IdYICm1dEQKs6WfKdbirlDQ8a3sQj1o7IPxFBdGhTIxhxXsRePXO0UKZQ+waLrT/U+0DrpmmgLNRTLT1pbcpM5Z94TQhdbxZ3M985Mnib2vqQ/KmT12b0EN8IALfOAEL7jBxbug6r1vLAG2qzlb+u9CIq60KOsvsPmbr/9VvOIM92xbL+3hX0Mn3i68Zx65lkw/J9PL+jOfoutLcmcTVZwToTmYLR6+/jdie8x1rqu4IO5tdnXCFmxEI85NXmWLj/ON6bU3TV4r87mJE+cXB+3M9nV0R+T7QdNmWC2xvuvtHnzsZC+72c+O9rQ/LeFyreV1NNd2PYlda1juN7++TvSpQ9bjq7rx/BAxcd+Gzu4jC0pZVwZ2NF5s3/Yyem0bnlirV/a6G84rDBu+W3KCscSj1qL9uD13GEwCQ5rHdtxblnm6Lr2Xcb4bOqNe5mYm/vSynTD8zttaZM8bzkiXbcTVDvzgC3/4xC++8a2l6iZ/ZfCiTz6XsqxV5/d1s3QRj1WrRP2HX6E72Q9DF0Fe+eOLf/zkL7/5z49+fki/BM1G1fpnLbXuib8A+uCV/1qirOH+2F/wUuD++8VAf3kWRQGYfgVogAeIgAmogAvIAv8nAu1nJA7IPPsXgQ73XRJYEBbIWUJ0bz6AgUIXHh8IJe/3ca7HgCeIgimogivIgi1YGYTnJxglgs1HgC5oBRroRSF4UgJBdR5YUDeYPRSIBTj4diz1gzaIhEmohEtogwUAADs=";
var casioFontGfxSrc = "data:image/gif;base64,R0lGODlhAAYIAKECAAQEBP///v///////yH5BAEKAAIALAAAAAAABggAAAL+DH6GoNi5WHxy0Tuz1Y7DDXbhJ5bkWZkpegXuy7yuBBtyLN95stf5DwwKbwmBwBYwOpRFAY3JgCadzSU1ehzqgrgZr+FjuoyKKU+KPlZt6ZnZ7Xwpa7hYTDwFl/PVNfYZ5wY42Ne184UkhHgXmCeXhYVExqb29zhmBPmGeZYl5OmIKTMpV0bGOApKCrTaSuSzxzWyYsdj4VVbN/sAY6j1++PrAGtDg+RBi7GrV6e1govYO/yFrKxizTLxW818O9z9zQWkTXcLfC57Xb3u3Uxtu8uuHk9/HVyfjZ8snz/v3w9wnz5sAv/5IoiQ3z46DAU1LPbQGESHFCdalIgxUUb+dxE1euRYcWNHkBc9BjtJEgxHQyx7bCGGDiWlTnA0zbHE6dGgmZRi+Uwkzk1IiDc3vcFpdE7OSKh43sEh5oNDS0hpID219KhRq1onIRXq0uK4k0r5RHLKJ2vZOZlUNcJqxpgxNZxQ+YkC9UrXOFWJ8o0bBWbLoCXd2dlTQZDcLosOE1Yk+OTLih/BilRcptmxzZkPwjqsOaxcy5WHbhsJk3DGiaGBmoYs2fXqmLRJk7xcuGGtLY5zD71d2rdw3MSDFweOHPVv5cONO0++PLrJ58yPV6cu3Xp27M2hd7/uXXvJ2Lq9jRU72CVXsPc88+7JyIr8QoAd/aF/ijFjIuH+elslEVdOaumVBiFMiTITVHlxxWCCWSWWVoRFTfiXY3Bd2Ehq7j2G31sEfmiFKVQg2FZNgEhSYWZJ7ERVgGOgiCKLWln414WRTQYaeKDt+Eox+vWYgmTkpOfBZLJNtxIEEHVg0n46MKjLe4Yhxp9/3EEo3mxDAMeMD/1Z2ZtYn6mEJH/SRPQOmOCtyZmZV74Z3pussfnddnHeSWeWcObpXGx64mknn4DWSeifgh4a6Gu0SeSTk7CJBk84izKEYV41XYpWpT1tuiU6TjbY4lo1erhgpnTtNVepFCl5VSA5eiXhqDJypamAYbE3aaik8iRKU7piQSFN8S0JByG9fmX+06nBokWrsm954UyOf44AbS+KRZpLlNDkiCt7B7XmWo+2JTbleNOQidmcuJD2k2ZqblftZnGOY0tHfnYbnbvnHemuMKJN5y2izcXi2buF7plomQkbujDCBw/K8MMjbSBwxBY7fDHEGG+s8by30itpmOuR99ki4gKj330q1wdrgU3E2GGjjrYQ8LV+CXtfXa2KaGCsh4Fo77DHEotHpS/bJa/P9KWjSDSHuJifWVIbPSCwzvZc1GhXX8LrGDQleGBar5JaxI1jtnkcjz4CKfPJP5WmEC9ibvgvk6Ca+x52remLo1Aa41ovvKn1+a8eXdqcDLv8nr1u44Z/c27DHkf+O2bHFfc5muSXW6555xJ7rmXlm48OOsekf456xvbWhlHg6j5WGbgbUvOJW6nczjWCuofCe9RG0u2ee63YnnvvxO8+fA7HA5N87bgjv/wPze9eW23TG/889lyXWPz1rGTv/fLXryK9+Gbja9vE6WKpYtvWur0f3eT9SJkzqP1nGrcGZw4U3+mjLadohKY4RvpfuAD2KEYBboD72tu+AKeb04XuHJxLnelKV0HVYVCCFxxPmTL4nIHEbYQiLKFBEmLCgKDwhOTI1cdeMTsNdWpLwmuLDW+IwxzqcIc7fODgupUyTPBwiEQsohGPiMQkKlGJ1aPNEp8IxShKcYpLFJelttKhwnqZYxppksr7oBEUFfqwfzEh4QkPpyTE6GKNANpWvMyYRi+6kRuGq1LiDiEpLCrQMl38VjvWeKaXQA5bBcniMhaVwkIqcoUsaI8hWZhIRi4SjpOMJCUR4shKQtIeTeykJz8JylCKcpSkLKUpf0HFVOLwlFpQpStfCctY3pCVqZClLW+JSyPScpe87KUvfwnMYApzmMQspjGPicxkKnOZzCwAADs=";
var casioFontGfxHiSrc = "data:image/gif;base64,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";

Expand Down Expand Up @@ -444,7 +444,7 @@ function handleOnKeyDown(e) {
function unpauseProgramExec() {
/* unpause program execution */
paused = false;
idTimerMain = setTimeout('executeNextLine()', currentExecutionTimeout);
idTimerMain = setTimeout('executeNextStmt()', currentExecutionTimeout);
}

function MenuOn(titre, options, labels, currentSelection) {
Expand Down
82 changes: 66 additions & 16 deletions src/js/cbimain.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,11 @@ var NODE_VAR = 1;
var NODE_CONST = 2;

var OP_NONE = -1;
var OP_ASSIGN = 0;
var OP_IF = 1;
var OP_IF_ELSE = 2;

var OP_STMT_COUPLE = 1;
var OP_ASSIGN = 2;
var OP_IF = 3;
var OP_IF_ELSE = 4;
var OP_WRITE = 5;
var OP_READ = 6;
var OP_SAY = 7;
Expand Down Expand Up @@ -157,7 +158,7 @@ var matrices = [];
var getKey = 0;

var DEBUG = false;
var currentExecutionTimeout = 15; // time to wait between each executeNextLine(), in milliseconds
var currentExecutionTimeout = 15; // time to wait between each executeNextStmt(), in milliseconds

var EXIT_SUCCESS = 0;
var EXIT_STOPPED = 14;
Expand Down Expand Up @@ -304,11 +305,11 @@ function execute(node) {
var node1 = execute(node.children[1]);
ret = ((node0 && !node1) || (!node0 && node1)) ? 1 : 0;
break;
case OP_NONE:
if (node.children[0]) {
case OP_STMT_COUPLE:
if (node.children[0]) { // Execute first statement
execute(node.children[0]);
}
if (node.children[1]) {
if (node.children[1]) { // Execute second statement
ret = execute(node.children[1]);
}
break;
Expand Down Expand Up @@ -586,6 +587,10 @@ function execute(node) {
editModeOn();
break;
case OP_DISP:
debug("OP_DISP");
if (getLastReturnedValue() !== undefined) {
print(formatForDisplay(getLastReturnedValue()));
}
dispModeOn();
break;
case OP_EQU:
Expand Down Expand Up @@ -998,6 +1003,8 @@ function execute(node) {
break;
case OP_LISTS_TO_MAT:
debug("List to mat");
// "Dim error" si les listes n'ont pas les mêmes dimension
// OU "Aucune donnée" si une des listes indiquées est indéfinie
var listsIndex = execute(node.children[0]);
debug(listsIndex);
var t = [];
Expand Down Expand Up @@ -1394,7 +1401,7 @@ function jsccRun(str, finishCallBack) {
//if (programs['main']['error_cnt'] == 0) {
if (nbErrors == 0) {
debug("nextLine = " + nextLine);
idTimerMain = setTimeout('executeNextLine()', currentExecutionTimeout);
idTimerMain = setTimeout('executeNextStmt()', currentExecutionTimeout);
debug("timeout id = " + idTimerMain);
} else {
finish(EXIT_SYNTAX_ERROR, "Syntax error " + where, programs);
Expand Down Expand Up @@ -1454,7 +1461,6 @@ function parse(programsSrc, progName) {
var linesOfSourceCode = programsSrc[progName].map(cbiReplace);
var lineOffsets = calculateLinesOffset(linesOfSourceCode); // Calculate offsets and remove line number indicator (ie "xx|" at the beginning)
var str = linesOfSourceCode.join(":");
str = str + ":"; // Add a final ":"

debug("Parsing " + progName + " ...");
var nodes = new Array();
Expand Down Expand Up @@ -1520,6 +1526,7 @@ function unstack() {
var Ans = 0;
var ListAns = [];
var MatAns = [];
var lastReturnedValue = undefined;

function getLastAnswer() {
return this.Ans;
Expand All @@ -1533,26 +1540,69 @@ function getLastMatAnswer() {
return this.MatAns;
}

function executeNextLine() {
function getLastReturnedValue() {
return this.lastReturnedValue;
}

var TYPE_NUMERIC = 1;
var TYPE_LIST = 2;
var TYPE_MATRIX = 3;

function giveType(value) {
if (Array.isArray(value) && Array.isArray(value[Object.keys(value)[0]])) { // Array of Array <=> matrix
return TYPE_MATRIX;
} else if (Array.isArray(value)) { // Array <=> List
return TYPE_LIST;
}
return TYPE_NUMERIC;
}

function formatListValue(value, start, stop) {
value.shift();
return start+value.join()+stop;
}

function formatForDisplay(value) {
var type = giveType(value);
if (type == TYPE_MATRIX) {
var rtn = "[";
for (var i = 0; i < value.length; i++) {
rtn += formatListValue(value[i], "[", "]")
}
rtn += "]";
return rtn;
} else if (type == TYPE_LIST) {
return formatListValue(value, "{", "}");
} else {
return ""+value;
}
}

function executeNextStmt() {
if (isNaN(nextLine) || nextLine >= programs[currentPrgName]['nodes'].length) {
if (!unstack()) { // If nothing was on stack ... we have no parent to return.
finish(EXIT_SUCCESS, "End Of program.", programs);
return;
}
}
debug("[" + idTimerMain + "] prog " + currentPrgName + " - executeNextLine " + nextLine + " / " + programs[currentPrgName]['nodes'].length);
debug("[" + idTimerMain + "] prog " + currentPrgName + " - executeNextStmt " + (nextLine+1) + " / " + programs[currentPrgName]['nodes'].length);
var ret = execute(programs[currentPrgName]['nodes'][nextLine++]);
this.lastReturnedValue = ret;
if (ret !== undefined) {
if (Array.isArray(ret) && Array.isArray(ret[Object.keys(ret)[0]])) { // Array of Array <=> matrix
MatAns = ret;
} else if (Array.isArray(ret)) {
ListAns = ret;
var type = giveType(ret);
if (type == TYPE_MATRIX) {
this.MatAns = ret;
} else if (type == TYPE_LIST) {
this.ListAns = ret;
} else {
this.Ans = ret;
}
if (nextLine == programs[currentPrgName]['nodes'].length) {
print(formatForDisplay(ret)); // print value from last stmt evaluation
}
}
if (!paused) {
idTimerMain = setTimeout('executeNextLine()', currentExecutionTimeout);
idTimerMain = setTimeout('executeNextStmt()', currentExecutionTimeout);
}
}

Expand Down
Loading

0 comments on commit 3a9ac71

Please sign in to comment.