function sloc( nodes ) {
	var count;
	var node;
	var type;
	var inc;
	var i;

	count = 0;
	for ( i = 0; i < nodes.length; i++ ) {
		node = nodes[ i ];
		type = node.type;
		inc = TABLE[ type ];
		if ( inc === void 0 ) {
			continue;
		}
		// Avoid double counting for `if/else if` and account for `else` blocks...
		if ( type === 'IfStatement' && node.alternate ) {
			if ( node.alternate.type === 'BlockStatement' ) {
				inc += 1; // else
			} else {
				inc -= 1; // if/else if
			}
		}
		// Account for `case` nodes...
		else if ( type === 'SwitchStatement' && node.cases ) {
			inc += node.cases.length * TABLE[ 'SwitchCase' ];
		}
		// Account for an empty function declaration...
		else if (
			type === 'FunctionDeclaration' &&
			node.body.end - node.body.start <= 2 // i.e., function body: {}
		) {
			inc -= 1;
		}
		count += inc;
	}
	return count;
}
Calculates the number of source lines of code.

@private
@param {Array<Node>} nodes - list of nodes
@returns {NonNegativeInteger} number of source lines of code