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