public Statement expr_stmt()
{
// Hack to deal with print statement from python 2.*
if (Peek(TokenType.ID, "print"))
{
return print_stmt();
}
var lhs = testlist_star_expr();
if (Peek(augassign_set))
{
var op = augassign();
Exp e2;
if (Peek(TokenType.Yield))
e2 = yield_expr();
else
e2 = testlist();
lhs = new AssignExp(lhs, op, e2, filename, lhs.Start, e2.End);
}
else
{
Exp rhs = null;
while (PeekAndDiscard(TokenType.EQ))
{
if (Peek(TokenType.Yield))
rhs = yield_expr();
else
rhs = testlist_star_expr();
}
if (rhs != null)
lhs = new AssignExp(lhs, Op.Assign, rhs, filename, lhs.Start, rhs.End);
}
return new ExpStatement(lhs, filename, lhs.Start, lhs.End);
}