Beispiel #1
0
class Analizador:
    #Documento a analizar
    __programa = ""
    #Objeto tipo Tokens para recibir los tokens de mi lenguaje
    __token = Tokens()
    #objeto tipo Lexer
    __lexer = Lexer()

    def __init__(self, document):
        self.__programa = document

    def analizar(self):
        if self.__programa == 'codigo.ap':
            codAnalizar = open(self.__programa, encoding='UTF-8').read()
            no_Validos = self.__lexer.validar(codAnalizar,
                                              self.__token.getTokens(), True)
            validos = self.__lexer.validar(codAnalizar,
                                           self.__token.getTokens(), False)
            printProgressBar(0,
                             len(validos),
                             prefix='Progreso:',
                             suffix='Completo',
                             length=70)
            i = 0
            for valido in validos:
                if valido['token'] != '\n':
                    os.system('clear')
                    printProgressBar(i + 1,
                                     len(validos),
                                     prefix='Progreso:',
                                     suffix='Completo',
                                     length=70)
                    print('\n')
                    i += 1
                    print('[', valido['token'], ']',
                          'Hace parte del lenguaje, es un:', valido['tipo'])

            if no_Validos:
                for invalido in no_Validos:
                    print("Error en la linea", invalido['linea'], " [",
                          invalido['palabra'], "]")

            else:
                print("No se encontró ningún error léxico")
        else:
            print("Error en la apertura del archivo")
 def voraxTokens(self, amt_of_scroll, amt_of_key, amt_of_pick, at_gem,
                 at_heart, at_book):
     tokens = t.Tokens(amt_of_scroll, amt_of_key, amt_of_pick)
     self.at_gem = at_gem
     self.at_heart = at_heart
     self.at_book = at_book
     if (tokens.state_of_gem == tokens.broken_gem
             and tokens.state_of_heart == tokens.broken_heart
             and tokens.state_of_book == tokens.broken_book):
         tokens.state_of_eidolon = tokens.can_get_eidolon
     else:
         if (at_gem == True and tokens.canBreakGem()):
             tokens.state_of_gem = tokens.broken_gem
         else:
             tokens.state_of_gem = tokens.gem
         if (at_heart == True and tokens.canBreakHeart()):
             tokens.state_of_heart = tokens.broken_heart
         else:
             tokens.state_of_heart = tokens.heart
         if (at_book == True and tokens.canBreakBook()):
             tokens.state_of_book = tokens.broken_book
         else:
             tokens.state_of_book = tokens.book