whole_func_string: function(state, noError) {
          if(validators.isSemicolon(state)) {
              state.next();
          }
          else if(state.token && !validators.isBlockEnd(state)) {
              var lb = state.lookback();
              if(!lb || state.token.line === lb.line) {
                  if(!noError) state.error(constants.unexpectedToken);
                  return false;
              }
          }
  
          return true;
      }
func_code_string: function(state, noError) {
          if(validators.isSemicolon(state)) {
              state.next();
          }
          else if(state.token && !validators.isBlockEnd(state)) {
              var lb = state.lookback();
              if(!lb || state.token.line === lb.line) {
                  if(!noError) state.error(constants.unexpectedToken);
                  return false;
              }
          }
  
          return true;
      }
func_documentation_string: Parses a semicolon or applies automatic semicolon insertion.
  @param state The parser state.
  @param [noError] {boolean} Whether a missing semicolon should cause an error.
  @returns {boolean} Whether the parsing or the insertion was successful.