'For a regular verb (base form), returns the forms using a rule-based approach.'

def find_lexeme(self, verb):

    v = verb.lower()
    b = v[:(-2)]
    if (v.endswith('ir') and (not v.endswith(('couvrir', 'cueillir', u'd\xe9couvrir', 'offrir', 'ouvrir', 'souffrir')))):
        if v.endswith(('dormir', 'mentir', 'partir', 'sentir', 'servir', 'sortir')):
            b0 = b[:(-1)]
        else:
            b0 = (b + 'i')
        return [v, (b0 + 's'), (b0 + 's'), (b0 + 't'), (b + 'issons'), (b + 'issez'), (b + 'issent'), (b + 'issant'), (b + 'i'), (b + 'is'), (b + 'is'), (b + 'it'), (b + u'\xeemes'), (b + u'\xeetes'), (b + 'irent'), (b + 'issais'), (b + 'issais'), (b + 'issait'), (b + 'issions'), (b + 'issiez'), (b + 'issaient'), (v + 'ai'), (v + 'as'), (v + 'a'), (v + 'ons'), (v + 'ez'), (v + u'ont'), (v + 'ais'), (v + 'ais'), (v + 'ait'), (v + 'ions'), (v + 'iez'), (v + 'aient'), (b + 'is'), (b + 'issons'), (b + 'issez'), (b + 'isse'), (b + 'isses'), (b + 'isse'), (b + 'issions'), (b + 'issiez'), (b + 'issent'), (b + 'isse'), (b + 'isses'), (b + u'\xeet'), (b + 'issions'), (b + 'issiez'), (b + 'issent')]
    elif v.endswith('re'):
        if v.endswith('ttre'):
            b0 = b1 = b[:(-1)]
        else:
            b0 = b1 = b
        if v.endswith('indre'):
            (b0, b1) = (b[:(-1)], (b[:(-2)] + 'gn'))
        if v.endswith('prendre'):
            (b0, b1) = (b, b[:(-1)])
        return [v, (b0 + 's'), (b0 + 's'), (b0 + ''), (b1 + 'ons'), (b1 + 'ez'), (b1 + 'ent'), (b1 + 'ant'), (b + 'u'), (b + 'is'), (b + 'is'), (b + 'it'), (b1 + u'\xeemes'), (b1 + u'\xeetes'), (b1 + 'irent'), (b + 'ais'), (b + 'ais'), (b + 'ait'), (b1 + 'ions'), (b1 + 'iez'), (b1 + 'aient'), (b + 'rai'), (b + 'ras'), (b + 'ra'), (b + 'rons'), (b + 'rez'), (b + 'ront'), (b + 'ais'), (b + 'ais'), (b + 'ait'), (b1 + 'ions'), (b1 + 'iez'), (b1 + 'aient'), (b0 + 's'), (b1 + 'ons'), (b1 + 'ez'), (b + 'e'), (b + 'es'), (b + u'e'), (b1 + 'ions'), (b1 + 'iez'), (b1 + 'ent'), (b + 'isse'), (b + 'isses'), (b + u'\xeet'), (b1 + 'issions'), (b1 + 'issiez'), (b1 + 'issent')]
    else:
        e = ((v.endswith('ger') and u'e') or '')
        c = ((v.endswith('cer') and (b[:(-1)] + u'\xe7')) or b)
        return [v, (b + 'e'), (b + 'es'), (b + 'e'), ((c + e) + 'ons'), (b + 'ez'), (b + 'ent'), ((c + e) + 'ant'), (b + u'\xe9'), ((c + e) + 'ai'), ((c + e) + 'as'), ((c + e) + 'a'), ((c + e) + u'\xe2mes'), ((c + e) + u'\xe2tes'), (b + u'\xe8rent'), ((c + e) + 'ais'), ((c + e) + 'ais'), ((c + e) + 'ait'), (b + 'ions'), (b + 'iez'), ((c + e) + 'aient'), (v + 'ai'), (v + u'as'), (v + 'a'), (v + 'ons'), (v + 'ez'), (v + 'ont'), (v + 'ais'), (v + u'ais'), (v + 'ait'), (v + 'ions'), (v + 'iez'), (v + 'aient'), (b + 'e'), ((c + e) + u'ons'), (b + 'ez'), (b + 'e'), (b + u'es'), (b + 'e'), (b + 'ions'), (b + 'iez'), (b + 'ent'), ((c + e) + 'asse'), ((c + e) + 'asses'), ((c + e) + u'\xe2t'), ((c + e) + 'assions'), ((c + e) + 'assiez'), ((c + e) + 'assent')]
