1
0

RUNでスロット指定できなかった問題を修正/式のパースでの謎バグ修正

This commit is contained in:
otya128
2016-09-07 18:06:39 +09:00
parent e03ce4c4a7
commit 2ae805d35c
2 changed files with 7 additions and 8 deletions

View File

@@ -1702,17 +1702,16 @@ class Parser
}
token = lex.front();
bool constexpr;
Expression op__ = op;
if (op.item1.type == NodeType.Constant && op.item2.type == NodeType.Constant)
{
double result;
if (constcalc((cast(Constant)op.item1).value, (cast(Constant)op.item2).value, op.operator, result))
{
op__ = new Constant(Value(result), lex.location);
auto l = new Constant(Value(result), lex.location);
constexpr = true;
if(order != getOPRank(token.type))
return op__;
op = new BinaryOperator(op__, lex.location);
return l;
op = new BinaryOperator(l, lex.location);
continue;
}
}
@@ -1720,7 +1719,7 @@ class Parser
write(tt, " ");
if(order == getOPRank(token.type))
{
BinaryOperator op2 = new BinaryOperator(op__, lex.location);
BinaryOperator op2 = new BinaryOperator(op, lex.location);
op.item1 = op2;
}
version(none)stdout.flush();

View File

@@ -1257,12 +1257,12 @@ class PetitComputer
auto token = lex.front();
if(token.type == otya.smilebasic.token.TokenType.Iden && token.value.stringValue == "RUN")
{
lex.popFront();
token = lex.front();
int slot;
bool empty = lex.empty();
int slot;
if(!empty)
{
lex.popFront();
token = lex.front();
if(token.type != otya.smilebasic.token.TokenType.Integer)
{
printConsole("Illegal function call", "\n");