def parseIndirect(self, tokens, index, node=False):
        if node:
            reoDotPath = REO_DotPathNode
            reoRelPath = REO_RelPathNode
        else:
            reoDotPath = REO_DotPath
            reoRelPath = REO_RelPath

        path = tokens[index]
        index +=1

        if path in Reserved:
            msg = "ParseError: Invalid path '%s' using reserved" % (path)
            raise excepting.ParseError(msg, tokens, index)

        if reoDotPath.match(path): #valid absolute path segment
            #check for optional relation clause
            #if 'of relation' clause then allows relative but no
            #implied relation clauses
            relation, index = self.parseRelation(tokens, index)
            # dotpath starts with '.' no need to add

        elif reoRelPath.match(path): #valid relative path segment
            #get optional relation clause, default is root
            relation, index = self.parseRelation(tokens, index)

            chunks = path.split('.')
            if relation:  # check for relation conflict
                if chunks[0] in ['framer', 'frame', 'actor']:
                    if (chunks[0] == 'framer' or
                            (chunks[0] == 'frame' and  '.frame.' in relation) or
                            (chunks[0] == 'actor' and  '.actor.' in  relation)):
                        msg = ("ParseError: Relation conflict in path '{0}'"
                               " with relation '{1}'".format(path, relation))
                        raise excepting.ParseError(msg, tokens, index)
                    if relation == 'me':
                        msg = ("ParseError: Relation conflict in path '{0}'"
                              " with relation '{1}'".format(path, relation))
                        raise excepting.ParseError(msg, tokens, index)

            else: # prepend missing relations if partial relation in path
                if chunks[0] == 'actor':
                    if len(chunks) < 3: # actor name or share name missing
                        msg = ("ParseError: Incomplete path '{0}'. Actor name"
                               " or Share name missing given inline actor "
                               "relation".format(path))
                        raise excepting.ParseError(msg, tokens, index)
                    relation = 'framer.me.frame.me'
                elif chunks[0] == 'frame':
                    if len(chunks) < 3: # frame name or share name missing
                        msg = ("ParseError: Incomplete path '{0}'. Frame name"
                               " or Share name missing given inline frame "
                               "relation".format(path))
                        raise excepting.ParseError(msg, tokens, index)
                    framername = 'me'
                    if chunks[1] == 'main':
                        framername = 'main'
                    relation = 'framer.' + framername

            if relation:
                relation += '.' # add dot since not dotpath

        else: #invalid path format
            msg = "ParseError: Invalid path '{0}'".format(path)
            raise excepting.ParseError(msg, tokens, index)

        path = relation + path

        return (path, index)
Start building the full search index.
dataset/ETHPy150Open ioflo/ioflo/ioflo/base/building.py/Builder.parseIndirect--crossover with--dataset/ETHPy150Open winhamwr/neckbeard/neckbeard/brain_wrinkles/pstat/app.py/AppServerProvisioner._build_search_index