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