-
Notifications
You must be signed in to change notification settings - Fork 19
/
Copy pathmain.py
118 lines (89 loc) · 3.01 KB
/
main.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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
import sys
from PyQt5.QtWidgets import *
from PyQt5.uic.properties import QtGui
""" Importamos todas nuetras Ventana y funciones utiles"""
from vista.home import *
from analizador_lexico import *
from analizador_sintactico import *
class Main(QMainWindow):
""" Clase principal de nuestra app"""
def __init__(self):
""" Incializamos nuestra app"""
QMainWindow.__init__(self)
# Instaciamos nuestra ventanas widget home
self.home = Ui_home()
self.home.setupUi(self)
# Eventos
self.home.bt_lexico.clicked.connect(self.ev_lexico)
self.home.bt_sintactico.clicked.connect(self.ev_sintactico)
self.home.bt_archivo.clicked.connect(self.ev_archivo)
self.home.bt_limpiar.clicked.connect(self.ev_limpiar)
#Desarrollandores
self.home.estado.showMessage("Desarrollando por Maryon Torres y Michael Abril")
def ev_lexico(self):
'''
Manejo de analisis de expresion lexemas
:return:
'''
# print("lexico")
# limpiamos el campo
self.home.tx_lexico.setText('')
#Obtenemos los datos ingresados
datos = self.home.tx_ingreso.toPlainText().strip()
# analizamos la lexemas de los datos ingresados
resultado_lexico = prueba(datos)
# self.home.tx_lexico.setText("Analizando lexico")
cadena= ''
for lex in resultado_lexico:
cadena += lex + "\n"
self.home.tx_lexico.setText(cadena)
def ev_sintactico(self):
'''
Manejo de analisis gramatico
:return:
'''
# print("sintactico")
# limpiamos el campo
self.home.tx_sintactico.setText('')
#Obtenemos los datos ingresados
datos = self.home.tx_ingreso.toPlainText().strip()
#analizamos la gramatica de los datos ingresados
resultado_sintactico = prueba_sintactica(datos)
cadena = ''
#Armanos la cadena a mostrar
for item in resultado_sintactico:
cadena += item + "\n"
# mostramos en pantalla
self.home.tx_sintactico.setText( cadena )
def ev_archivo(self):
'''
Manejo de subir archivo
:return:
'''
dlg = QFileDialog()
if dlg.exec_():
filenames = dlg.selectedFiles()
f = open(filenames[0], 'r')
with f:
data = f.read().strip()
if data:
self.home.tx_ingreso.setText(data+"\n")
def ev_limpiar(self):
'''
Manejo de limpieza de campos
:return:
'''
self.home.tx_ingreso.setText('')
self.home.tx_lexico.setText('')
self.home.tx_sintactico.setText('')
def iniciar():
# Instaciamos nuestro app por defecto esto no cambia
app = QApplication(sys.argv)
# Instaciomos nuestro ventana
ventana = Main()
# Mostramos nuestra app
ventana.show()
#Controlamos el cierre de la app
sys.exit(app.exec_())
if __name__ == '__main__':
iniciar()