1
0

Allow empty OUT arguments

This commit is contained in:
otya128
2016-12-22 20:10:21 +09:00
parent c7813f38b7
commit 2d0d7e0cfc
3 changed files with 34 additions and 9 deletions

View File

@@ -2161,3 +2161,11 @@ class SetX : Code
vm.petitcomputer.xoff(func);
}
}
class Pop : Code
{
override void execute(VM vm)
{
vm.decSP();
}
}

View File

@@ -697,6 +697,11 @@ class Compiler
genCode(new PopVarExpression(sc));
}
break;
case NodeType.VoidExpression:
{
genCode(new Pop());
}
break;
default:
throw new SyntaxError();

View File

@@ -970,7 +970,18 @@ class Parser
while(true)
{
token = lex.front();
if (token.type == TokenType.Comma)
{
func.addOut(new VoidExpression(lex.location));
}
else
{
Expression arg = expression();
if (!arg)
{
func.addOut(new VoidExpression(lex.location));
break;
}
if(!isLValue(arg))
{
//to support func args... OUT (no argument)
@@ -982,6 +993,7 @@ class Parser
return null;
}
func.addOut(arg);
}
token = lex.front();
if(token.type == TokenType.Comma)
{