protected Expression parseUnaryExpression() {
return parseTypeOrExpression_start(InfixOpType.NULL);
}
protected Resolvable parsePrimaryExpression() {
Expression simpleLiteral = parseSimpleLiteral();
if(simpleLiteral != null) {
return simpleLiteral;
}
switch (lookAhead()) {
case KW_ASSERT:
return expConclude(parseAssertExpression());
case KW_MIXIN:
return expConclude(parseMixinExpression());
case KW_IMPORT:
return expConclude(parseImportExpression());
case KW_TYPEID:
return expConclude(parseTypeIdExpression());
case KW_NEW:
return expConclude(parseNewExpression());
case KW_CAST:
return expConclude(parseCastExpression());
case KW_IS:
return expConclude(parseIsExpression());
case KW___TRAITS:
return expConclude(parseTraitsExpression());
case AND:
case INCREMENT:
case DECREMENT:
case STAR:
case MINUS:
case PLUS:
case NOT:
case CONCAT:
case KW_DELETE: {
LexElement prefixExpOpToken = consumeLookAhead();
PrefixOpType prefixOpType = PrefixOpType.tokenToPrefixOpType(prefixExpOpToken.type);
Expression exp = parseUnaryExpression();
if(exp == null) {
exp = parseMissingExpression(RULE_EXPRESSION);
setToEParseBroken(true);
}