mirror of
https://github.com/curioustorvald/tsvm.git
synced 2026-03-07 11:51:49 +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
|
||||
}
|
||||
|
||||
// mutableVar: the actual number stored into the FOR-Variable, because BASIC's FOR-Var is mutable af
|
||||
// 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;
|
||||
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;
|
||||
|
||||
if (forVar instanceof ForGen)
|
||||
bStatus.vars[forVarname].bvLiteral = forVar.getNext();
|
||||
bStatus.vars[forVarname].bvLiteral = forVar.getNext(bStatus.vars[forVarname].bvLiteral);
|
||||
else
|
||||
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