mirror of
https://github.com/curioustorvald/tsvm.git
synced 2026-06-15 17:04:04 +09:00
basic:for is mutable, test with formut.bas
This commit is contained in:
@@ -323,8 +323,11 @@ let ForGen = function(s,e,t) {
|
|||||||
// 0 + 1 <= 0 -> false
|
// 0 + 1 <= 0 -> false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// mutableVar: the actual number stored into the FOR-Variable, because BASIC's FOR-Var is mutable af
|
||||||
// returns undefined if there is no next()
|
// returns undefined if there is no next()
|
||||||
this.getNext = function() {
|
this.getNext = function(mutated) {
|
||||||
|
//if (mutated === undefined) throw "InternalError: parametre is missing";
|
||||||
|
if (mutated !== undefined) this.current = mutated;
|
||||||
this.current += this.step;
|
this.current += this.step;
|
||||||
return this.hasNext() ? this.current : undefined;
|
return this.hasNext() ? this.current : undefined;
|
||||||
}
|
}
|
||||||
@@ -731,7 +734,7 @@ if no arg text were given (e.g. "10 NEXT"), args will have zero length
|
|||||||
var forVar = bStatus.vars["for var "+forVarname].bvLiteral;
|
var forVar = bStatus.vars["for var "+forVarname].bvLiteral;
|
||||||
|
|
||||||
if (forVar instanceof ForGen)
|
if (forVar instanceof ForGen)
|
||||||
bStatus.vars[forVarname].bvLiteral = forVar.getNext();
|
bStatus.vars[forVarname].bvLiteral = forVar.getNext(bStatus.vars[forVarname].bvLiteral);
|
||||||
else
|
else
|
||||||
bStatus.vars[forVarname].bvLiteral = forVar.shift();
|
bStatus.vars[forVarname].bvLiteral = forVar.shift();
|
||||||
|
|
||||||
|
|||||||
13
assets/formut.bas
Normal file
13
assets/formut.bas
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
1 k=0
|
||||||
|
2 goto 100
|
||||||
|
20 k=1
|
||||||
|
30 a=10
|
||||||
|
40 return
|
||||||
|
100 for a=5 to 1 step -1
|
||||||
|
110 print a
|
||||||
|
120 if a==3 and k==0 then gosub 20
|
||||||
|
130 next
|
||||||
|
140 print "=="
|
||||||
|
150 print a
|
||||||
|
1000 rem expected output according to gw-basic:
|
||||||
|
1001 rem 5 4 3 9 8 7 6 5 4 3 2 1 == 0
|
||||||
Reference in New Issue
Block a user