'Figure out which parallel directive was used and return the associated
Node class.
E.g. for a cython.parallel.prange() call we return ParallelRangeNode'

def get_directive_class_node(self, node):

    if self.namenode_is_cython_module:
        directive = '.'.join(self.parallel_directive)
    else:
        directive = self.parallel_directives[self.parallel_directive[0]]
        directive = ('%s.%s' % (directive, '.'.join(self.parallel_directive[1:])))
        directive = directive.rstrip('.')
    cls = self.directive_to_node.get(directive)
    if ((cls is None) and (not (self.namenode_is_cython_module and (self.parallel_directive[0] != 'parallel')))):
        error(node.pos, ('Invalid    directive:    %s' % directive))
    self.namenode_is_cython_module = False
    self.parallel_directive = None
    return cls
