Example #1
0
def parenMatch(expr):
    # symboles de gauche
    aGauche = "({["
    # symboles de droite
    aDroite = ")}]"

    # utilise pile S
    S = ListStack()

    # pour chaque caractère dans l'expression
    for c in expr:
        # si on rencontre un caractère de gauche
        if c in aGauche:
            # on l'empile
            S.push(c)
        elif c in aDroite:
            # si on a un symbole de droite
            if S.is_empty():
                # si la pile est vide, pas de match
                return False
            if aDroite.index(c) != aGauche.index(S.pop()):
                # si le symbole à droite ne match pas le symbole à gauche
                return False
    # ici, si la pile est vide, l'expression est balancée
    # sinon il reste un ou des symbole(s) non balancés dans la pile
    return S.is_empty()
Example #2
0
def parenMatch(expr):
    aGauche = "({["
    aDroite = ")}]"
    S = ListStack()
    for c in expr:
        if c in aGauche:
            #si à symbole ouvrant, on empile
            S.push(c)
        elif c in aDroite:
            #si à symbole fermant...
            if S.is_empty():
                #si pile vide pas de match
                return False
            if aDroite.index(c) != aGauche.index(S.pop()):
                #si symbole fermant ne match pas symbole ouvrant
                return False
    #match si pile vide, sinon symbole(s) non matché(s)
    return S.is_empty()