ArrayAssignのbreak;忘れを修正,suffix無指定時の型をdoubleにした
This commit is contained in:
@@ -27,7 +27,7 @@ class VM
|
||||
case '%':
|
||||
return ValueType.Integer;
|
||||
default:
|
||||
return ValueType.Integer;//DEFINT時
|
||||
return ValueType.Double;//DEFINT時
|
||||
}
|
||||
}
|
||||
this(Code[] code, int len, int[wstring] globalTable)
|
||||
|
||||
@@ -390,6 +390,7 @@ class Compiler
|
||||
compileExpression(assign.indexExpression);
|
||||
genCode(new PopGArray(getGlobalVarIndex(assign.name), assign.indexExpression.expressions.length));
|
||||
}
|
||||
break;
|
||||
default:
|
||||
stderr.writeln("Compile:NotImpl ", i.type);
|
||||
}
|
||||
@@ -422,6 +423,6 @@ unittest
|
||||
auto parser = new Parser("A=1+2+3+4*5/4-5+(6+6)*7");
|
||||
auto vm = parser.compile();
|
||||
vm.run();
|
||||
writeln(vm.testGetGlobalVariable("A").integerValue);
|
||||
assert(vm.testGetGlobalVariable("A").integerValue == 1+2+3+4*5/4-5+(6+6)*7);
|
||||
writeln(vm.testGetGlobalVariable("A").castDouble);
|
||||
assert(vm.testGetGlobalVariable("A").castDouble == 1+2+3+4*5/4-5+(6+6)*7);
|
||||
}
|
||||
|
||||
@@ -57,6 +57,7 @@ VAR V[10,10]
|
||||
V[0,1]=12
|
||||
?V[0,1]
|
||||
?\"ABC\"[1][0]
|
||||
?1/2
|
||||
GOSUB @A
|
||||
END
|
||||
@A
|
||||
|
||||
Reference in New Issue
Block a user