function registerValidators( linter ) {
	var validators;
	var rulePath;
	var context;
	var config;
	var rules;
	var mode;
	var opts;
	var i;

	validators = {
		'description': [],
		'function': [],
		'examples': [],
		'parameters': [],
		'returns': [],
		'sections': [],
		'section': [],
		'signature': [],
		'interfaces': []
	};
	config = linter.config;
	rules = objectKeys( config );
	for ( i = 0; i < rules.length; i++ ) {
		rulePath = rules[ i ];
		opts = [];
		if ( isArray( config[ rulePath ] ) ) {
			opts = config[ rulePath ].slice( 1 );
			mode = config[ rulePath ][ 0 ];
		} else {
			mode = config[ rulePath ];
		}
		if ( mode === 'error' || mode === 'warn' ) {
			context = new RuleContext( rulePath, mode, linter, opts );
			registerValidator( rules[ i ], context );
		}
	}
	return validators;

	/**
	* Registers validators for specified `repl.txt` lint rules.
	*
	* @private
	* @param {string} rulePath - path to rule
	* @param {RuleContext} context - rule context
	*/
	function registerValidator( rulePath, context ) {
		var validator;
		var create;
		var keys;
		var i;

		create = require( rulePath ); // eslint-disable-line stdlib/no-dynamic-require
		validator = create( context );
		keys = objectKeys( validator );
		for ( i = 0; i < keys.length; i++ ) {
			if ( hasOwnProp( validators, keys[ i ] ) ) {
				validators[ keys[ i ] ].push({
					'id': context.id,
					'validate': validator[ keys[ i ] ]
				});
			}
		}
	}
}
Creates validator object and registers lint rules.

@private
@param {Object} linter - linter object
@returns {Object} validator object