Exemplo n.º 1
0
def inicia(args):
    input = entrytext.get()
    bd = AutomatoBD()
    bd.inicia()
    lex = Lex()
    lex.identificaToken(input)
Exemplo n.º 2
0
__author__ = 'lucasmpalma and luizu'
from lex import Lex
from automatoBD import AutomatoBD
import Tkinter as Tk
import ttk 

lex = Lex()
lex.identificaToken('algoritmos/meuPrograma.txt')
# a = AutomatoBD()
# a.inicia()
Exemplo n.º 3
0
def compila(input):
    input = entrytext.get()
    lex = Lex()
    lex.identificaToken(input)
Exemplo n.º 4
0
def sintetic(input):
    lex = Lex()
    lex.identificaToken(input)
    file = open('../testes/'+'tokens.txt', 'r')
    actual = ''
    pilha = ['$', '<S>']
    gambs = [';', ',']
    aspas = '******'
    novo = ''
    for line in file:
        for item in line:
            # if item != '(' and item != ')':
            actual += item
            if item == '\n':
                # tratamentos
                if 'PR' in actual:
                    actual = actual.replace(", PR)\n", '')
                    actual = actual.replace("(", '')
                elif ' , SP)\n' in actual or actual == '(\\n, SP)\n':
                	actual = ''
                        break
                elif 'SP' in actual:
                	actual = actual[1]
                elif 'PR' not in actual and 'SP' not in actual:
                    actual = actual[-4]+actual[-3]
                # algoritimo
                while actual != pilha[len(pilha)-1]:

                    if actual == pilha[len(pilha)-1]:
                        pilha.pop()
                    else:
                        elemento = pilha[len(pilha)-1]
                        try:
                            j = terminais[actual]
                            i = nTerminais[elemento]
                        except KeyError:
                            return "ERRO SINTATICO"
                        else:
                            producao = arr[i][j]
                            if producao == "&":
                                pilha.pop()
                            else:
                                if producao == 'E':
                                    return "ERRO SINTATICO"
                                else:
                                    tamanho = len(producao)
                                    pilha.pop()
                                    concatena = ''
                                    for num in range(tamanho-1, -1, -1):
                                        if producao[num] not in gambs:
                                            concatena += producao[num]
                                        if producao[num] in gambs:
                                            pilha.append(producao[num])
                                            concatena = ''
                                        if producao[num] == ' ' or num == 0:
                                            concatena = concatena[::-1]
                                            if ' ' in concatena:
                                                concatena = concatena.replace(' ', '')
                                            if """ " """ not in concatena and concatena != '':
                                                pilha.append(concatena)
                                                concatena = ''
                pilha.pop()
                actual = ''
    if pilha[len(pilha)-1] == '$':
        return "SINTATICAMENTE CORRETO"
    else:
        return "ERRO SINTATICO"