diff --git a/SMILEBASIC/VM.d b/SMILEBASIC/VM.d index 13a8618..6295c25 100644 --- a/SMILEBASIC/VM.d +++ b/SMILEBASIC/VM.d @@ -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) diff --git a/SMILEBASIC/compiler.d b/SMILEBASIC/compiler.d index c832e6f..1ec576e 100644 --- a/SMILEBASIC/compiler.d +++ b/SMILEBASIC/compiler.d @@ -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); } diff --git a/SMILEBASIC/main.d b/SMILEBASIC/main.d index 63f5bd8..c3041e9 100644 --- a/SMILEBASIC/main.d +++ b/SMILEBASIC/main.d @@ -57,6 +57,7 @@ VAR V[10,10] V[0,1]=12 ?V[0,1] ?\"ABC\"[1][0] +?1/2 GOSUB @A END @A