docs: function expression(rbp, initial) {
  
  // rbp is the right binding power.
  // initial indicates that this is the first expression of a statement.
  
          var left;
          if (next_token.id === '(end)') {
              stop('unexpected_a', token, next_token.id);
          }
          advance();
          if (option.safe && scope[token.string] &&
                  scope[token.string] === global_scope[token.string] &&
                  (next_token.id !== '(' && next_token.id !== '.')) {
              warn('adsafe_a', token);
          }
          if (initial) {
              anonname = 'anonymous';
              funct['(verb)'] = token.string;
          }
          if (initial === true && token.fud) {
              left = token.fud();
          } else {
              if (token.nud) {
                  left = token.nud();
              } else {
                  if (next_token.id === '(number)' && token.id === '.') {
                      warn('leading_decimal_a', token, artifact());
                      advance();
                      return token;
                  }
                  stop('expected_identifier_a', token, token.id);
              }
              while (rbp < next_token.lbp) {
                  advance();
                  if (token.led) {
                      left = token.led(left);
                  } else {
                      stop('expected_operator_a', token, token.id);
                  }
              }
          }
          return left;
      }