-
Notifications
You must be signed in to change notification settings - Fork 0
/
menu.py
70 lines (65 loc) · 2.54 KB
/
menu.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
from file_parser import FileParser
def show_options():
options = ["Sair", "Abrir automato", "Processar lista de palavras", "Minimizar automato",
"Checar se linguagem é vazia",
"Gerar imagem do automato", "Exibir automato"]
for i in range(len(options)):
print(f'{i + 1} - {options[i]}')
def menu(afd=None, words=None, show=False):
if show:
show_options()
user_entry = input("Digite sua opção:\n")
if user_entry == '1': # Sair
return
elif user_entry == '2': # Abrir automato
file_location = input("Digite local do arquivo .txt do afd\n")
try:
arquivo = open(file_location, mode="r")
my_parser = FileParser(arquivo)
afd = my_parser.process_afd()
print("AFD carregado com sucesso")
except:
print("Erro ao carregar arquivo")
elif user_entry == '3': # Processar lista de palavras
if afd is None:
print("Afd não carregado")
else:
file_location = input("Digite local do arquivo .txt da lista de palavras\n")
try:
arquivo = open(file_location, mode="r")
my_parser = FileParser(arquivo)
words = my_parser.process_words()
response = afd.validate_words(words)
for word in response:
response_string = "valido" if response[word] == True else "invalido"
print(f'{word} - {response_string}')
except:
print("Erro ao carregar arquivo")
elif user_entry == '4': # Minimizar automato
if afd is None:
print("Afd não carregado")
else:
afd.minimize()
print("Afd minimizado com sucesso")
elif user_entry == '5': # Checar se linguagem é vazia
if afd is None:
print("Afd não carregado")
else:
if afd.check_empty_language() is True:
print("Linguagem vazia")
else:
print("Linguagem não vazia")
elif user_entry == '6': # Gerar imagem do automato
if afd is None:
print("Afd não carregado")
else:
png_name = input("Digite o nome que deseja dar para o arquivo (nao coloque a extensao):\n")
afd.generate_graphviz(png_name)
elif user_entry == '7': # Exibir automato
if afd is None:
print("Afd não carregado")
else:
afd.print_afd()
else:
print("Opcao invalida")
menu(afd, words, False)