public ExprNode ParsePrimaryExpression()
{
switch (Next().Type)
{
case TokenType.This:
return ParseSelfExpression();
case TokenType.Identifier:
return ParseIdentifier();
case TokenType.LeftBracket:
return ParseArrayLiteral();
case TokenType.LeftBrace:
return ParseObjectLiteral();
case TokenType.LeftParen:
Match(TokenType.LeftParen);
var exp = ParseExpression();
Match(TokenType.RightParen);
return exp;
default:
return ParsePrimitiveLiteral();
}
}