code: function parsePrimaryExpression() {
          var type, token, expr;
  
          if (match('(')) {
              return parseGroupExpression();
          }
  
          type = lookahead.type;
  
          if (type === Token.Identifier) {
              expr = delegate.createIdentifier(lex().value);
          } else if (type === Token.StringLiteral || type === Token.NumericLiteral) {
              expr = delegate.createLiteral(lex());
          } else if (type === Token.Keyword) {
              if (matchKeyword('this')) {
                  lex();
                  expr = delegate.createThisExpression();
              }
          } else if (type === Token.BooleanLiteral) {
              token = lex();
              token.value = (token.value === 'true');
              expr = delegate.createLiteral(token);
          } else if (type === Token.NullLiteral) {
              token = lex();
              token.value = null;
              expr = delegate.createLiteral(token);
          } else if (match('[')) {
              expr = parseArrayInitialiser();
          } else if (match('{')) {
              expr = parseObjectInitialiser();
          }
  
          if (expr) {
              return expr;
          }
  
          throwUnexpected(lex());
      }
docs: 11.1 Primary Expressions