public ExprNode ParseUnaryExpression()
{
var exp = new UnaryExpression
{
Token = Next(),
Postfix = TokenType.None,
Prefix = TokenType.None
};
var token = Next();
if (token.Is(TokenType.DoublePlus) ||
token.Is(TokenType.DoubleMinus) ||
token.Is(TokenType.Plus) ||
token.Is(TokenType.Minus) ||
token.Is(TokenType.Not))
{
exp.Prefix = token.Type;
Consume();
exp.Expression = ParseUnaryExpression();
return exp;
}
exp.Expression = ParseLeftHandSideExpression();
if (Next().Is(TokenType.DoublePlus) || Next().Is(TokenType.DoubleMinus))
{
exp.Postfix = Next().Type;
Consume();
return exp;
}
return exp.Expression;
}