private bool CompileCommand()
{
Token token;
token = this.NextToken();
if (token == null)
{
return false;
}
if (token.Value == ".")
{
return true;
}
// TODO raise failure if not open block, and nested blocks
if (token.Value == "]")
{
return false;
}
if (token.Value == "^")
{
this.CompileExpression();
this.block.CompileByteCode(ByteCode.ReturnPop);
return true;
}
if (token.Type == TokenType.Name)
{
Token token2 = this.NextToken();
if (token2 != null && token2.Type == TokenType.Operator && token2.Value == ":=")
{
this.CompileExpression();
this.block.CompileSet(token.Value);
return true;
}
this.PushToken(token2);
}
this.PushToken(token);
this.CompileExpression();
return true;
}