code: private ParseTree parsePrimaryExpression() {
      switch (peekType()) {
        case CLASS:
          return parseClassExpression();
        case SUPER:
          return parseSuperExpression();
        case THIS:
          return parseThisExpression();
        case IMPORT:
          return parseDynamicImportExpression();
        case IDENTIFIER:
        case TYPE:
        case DECLARE:
        case MODULE:
        case NAMESPACE:
          return parseIdentifierExpression();
        case NUMBER:
        case STRING:
        case TRUE:
        case FALSE:
        case NULL:
          return parseLiteralExpression();
        case NO_SUBSTITUTION_TEMPLATE:
        case TEMPLATE_HEAD:
          return parseTemplateLiteral(null);
        case OPEN_SQUARE:
          return parseArrayInitializer();
        case OPEN_CURLY:
          return parseObjectLiteral();
        case OPEN_PAREN:
          return parseCoverParenthesizedExpressionAndArrowParameterList();
        case SLASH:
        case SLASH_EQUAL:
          return parseRegularExpressionLiteral();
        default:
          return parseMissingPrimaryExpression();
      }
    }
docs: 11.1 Primary Expressions