Python - No funciona el analisis sintactico

   
Vista:

No funciona el analisis sintactico

Publicado por Gimel (2 intervenciones) el 30/05/2014 07:24:53
Buenas, tengo el siguiente codigo:

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
class Componente:
	diccionario = []
	def leer(self, nombreArchivo):
		archi=open(nombreArchivo,'r')
		linea = archi.readline()
		indice = 0
		while linea!="":
			self.diccionario.insert(indice,linea.rstrip('\n'))
			linea=archi.readline()
		archi.close()
 
	def escribir(self, nombreArchivo):
		f = open(nombreArchivo,'w')
		for variable in lexico.diccionario:
			f.write(variable+" ")
			f.close
	def configurar(self):
		print ("Esta funcion no tiene su funcionalidad")
	def procesar(self):
		print ("Esta funcion no tiene su funcionalidad")
 
class AnLexico(Componente):
	validos = []
	def configurar(self,nombreArchivo):
		archi=open(nombreArchivo,'r')
		linea = archi.readline()
		self.validos.insert(0,' ')
		indice = 1
		while linea!="":
			self.validos.insert(indice,linea.rstrip('\n'))
			linea=archi.readline()
		archi.close()
 
	def procesar(self):
		for token in lexico.diccionario:
			bandera = False;
			for tokenvalido in lexico.validos:
				if token == tokenvalido:
					bandera = True
					break
			if bandera == False:
				return False
		return True
 
 
class AnSintactico(Componente):
	validos = []
	def configurar(self,nombreArchivo):
		archi=open(nombreArchivo,'r')
		linea = archi.readline()
		self.validos.insert(0,' ')
		indice = 1
		while linea!="":
			self.validos.insert(indice,linea.rstrip('\n'))
			linea=archi.readline()
		archi.close()
 
	def procesar (self):
		nuevaLista = []
		string = ""
		indice = 0
		for token in self.diccionario:
			if token == " ":
				nuevaLista.insert(indice,string)
				string = ""
				indice+=1
			else:
				string += token
		nuevaLista.insert(indice,string)
		self.diccionario = nuevaLista
		for token in self.diccionario:
			bandera = False;
			for tokenvalido in self.validos:
				if token == tokenvalido:
					bandera = True
					break
			if bandera == False:
				return False
		return True
 
 
 
lexico = AnLexico()
lexico.leer("EjemploMorse.txt")
lexico.configurar("ConfigurarLexico.txt")
if lexico.procesar():
	lexico.escribir("salida.txt")
	sintactico = AnSintactico()
	sintactico.leer("salida.txt")
	sintactico.configurar("ConfigurarSintactico.txt")
	if sintactico.procesar():
		sintactico.escribir("salida2.txt")
		print ("paso por ambos analisis")
	else:
		print ("no pasó el analisis sintactico")
else:
	print ("No paso el analisis léxico")

Mi problema esta en que el analisis sintactico por alguna razon no pasa, el codigo trabaja al 100, pero me lanzá el siguiente mensaje:

"no pasó el analisis sintactico"

Por lo tanto la funcion procesar de sintactico esta tronando en algún lugar pero no logro encontrar dónde.

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder