<commit_before>"""
Analisador Sintático
<NAME>

"""
tokens = ['$',"(","b","+", "a","+","b",")"]


def E(simb,lista):
    print simb
    if(simb == 'a' or simb == "("):

        T(simb,lista)

        Elinha(simb,lista)
    else:

        print "Erro E"


def T(simb, lista):

    if(simb == "a" or simb == "("):

        F(simb, lista)
        Elinha(simb, lista)
    else:

        print "Erro T"


def F(simb,lista):
    if(simb == "("):
        E(simb,lista)
        simb = get_next_token(lista)
        if(simb != ")"):
            print "Erro F"
    elif(simb == "a"):
        simb = get_next_token(lista)

    else:
        print "Erro F"
def get_next_token(lista):
    return lista.pop()

def Elinha(simb,lista):
    if(simb == "+"):
        simb = get_next_token(lista)
        print "simbolo ",simb
        T(sim,lista)
        Elinha(simb,lista)
    elif (simb == ")" or simb == "$"):
        print "valido"
    else:
        print "Simbolo ",simb, "Lista ",lista
        print "erro Elinha"

tokens.reverse()
Elinha(tokens.pop(),tokens)<commit_msg>Versao 1 do analisador arimetico funcionando<commit_after># coding: utf-8
"""
Analisador Sintático
<NAME>

"""
tokens = "(a+a)$"


def E(simb, lista, pos):
    # print simb
    if(simb == 'a' or simb == "("):
        T(simb, lista, pos)
        Elinha(simb, lista, pos)
    else:
        print "Erro Posicão",pos,"Caracter ",lista[pos]
        exit()


def T(simb, lista, pos):

    if(simb == "a" or simb == "("):

        F(simb, lista, pos)
        Elinha(simb, lista, pos)
    else:
        #Elinha(simb, lista, pos)
        # print "simboloT ", simb, pos
        print "Erro Posicão",pos,"Caracter ",lista[pos]
        exit()


def F(simb, lista, pos):

    if(simb == "("):

        retorno = get_next_token(lista, pos)
        simb = retorno[0]
        pos = retorno[1]
        E(simb, lista, pos)
        if(simb != ")"):
            print "Erro Posicão",pos,"Caracter ",lista[pos]
            exit()
    elif(simb == "a"):
        retorno = get_next_token(lista, pos)
        simb = retorno[0]
        pos = retorno[1]
        Elinha(simb, lista, pos)

    else:
        print "Erro Posicão",pos,"Caracter ",lista[pos]
        exit()


def get_next_token(lista, pos):

    pos += 1
    # print "Retorno ", lista[pos], pos
    return lista[pos], pos


def Elinha(simb, lista, pos):
    # print"Elinha ", simb, pos
    if(simb == "+"):
        retorno = get_next_token(lista, pos)
        simb = retorno[0]
        pos = retorno[1]
        # print "simbolo2 ", simb, pos
        T(simb, lista, pos)
        #Elinha(simb, lista, pos)
    elif (simb == ")" or simb == "$"):
        print "valido"
    else:
        # print simb
        #print "Erro Posicão",pos,"Caracter ",lista[pos]
        exit()


E(tokens[0], tokens, 0)
{'fraction_non_alphanumeric': 0.17031193976335604, 'fraction_numerical': 0.004302617425600574, 'mean_word_length': 2.184931506849315, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '664382', 'n_tokens_mistral': 1083, 'n_tokens_neox': 1105, 'n_words': 239}