whole_func_string: function expression(rbp, initial) {
          var left;
          if (nexttoken.id === '(end)') {
              error("Unexpected early end of program.", token);
          }
          advance();
          if (option.safe && typeof predefined[token.value] === 'boolean' &&
                  (nexttoken.id !== '(' && nexttoken.id !== '.')) {
              warning('ADsafe violation.', token);
          }
          if (initial) {
              anonname = 'anonymous';
              funct['(verb)'] = token.value;
          }
          if (initial === true && token.fud) {
              left = token.fud();
          } else {
              if (token.nud) {
                  left = token.nud();
              } else {
                  if (nexttoken.type === '(number)' && token.id === '.') {
                      warning(
  "A leading decimal point can be confused with a dot: '.{a}'.",
                              token, nexttoken.value);
                      advance();
                      return token;
                  } else {
                      error("Expected an identifier and instead saw '{a}'.",
                              token, token.id);
                  }
              }
              while (rbp < nexttoken.lbp) {
                  advance();
                  if (token.led) {
                      left = token.led(left);
                  } else {
                      error("Expected an operator and instead saw '{a}'.",
                          token, token.id);
                  }
              }
          }
          return left;
      }
func_code_string: function expression(rbp, initial) {
          var left;
          if (nexttoken.id === '(end)') {
              error("Unexpected early end of program.", token);
          }
          advance();
          if (option.safe && typeof predefined[token.value] === 'boolean' &&
                  (nexttoken.id !== '(' && nexttoken.id !== '.')) {
              warning('ADsafe violation.', token);
          }
          if (initial) {
              anonname = 'anonymous';
              funct['(verb)'] = token.value;
          }
          if (initial === true && token.fud) {
              left = token.fud();
          } else {
              if (token.nud) {
                  left = token.nud();
              } else {
                  if (nexttoken.type === '(number)' && token.id === '.') {
                      warning(
  "A leading decimal point can be confused with a dot: '.{a}'.",
                              token, nexttoken.value);
                      advance();
                      return token;
                  } else {
                      error("Expected an identifier and instead saw '{a}'.",
                              token, token.id);
                  }
              }
              while (rbp < nexttoken.lbp) {
                  advance();
                  if (token.led) {
                      left = token.led(left);
                  } else {
                      error("Expected an operator and instead saw '{a}'.",
                          token, token.id);
                  }
              }
          }
          return left;
      }
func_documentation_string: .nud     Null denotation .fud     First null denotation .led     Left denotation lbp     Left binding power rbp     Right binding power They are elements of the parsing method called Top Down Operator Precedence.