1: def tomaToken(listaToken, esperado):
2: if listaToken[0] == esperado:
3: listaToken[0:1] = [] # quita el token
4: return 1
5: else:
6: return 0
7: def obtieneProducto(listaToken) :
8:
9: a = obtieneNumero(listaToken)
10: if tomaToken(listaToken, '*') :
11: b = obtieneProducto(listaToken)
12: return Arbol('*', a, b)
13: else :
14: return a
15:
16: def obtieneSuma(listaToken) :
17: a = obtieneProducto(listaToken)
18: if tomaToken(listaToken, '+') :
19: b = obtieneSuma(listaToken)
20: return Arbol('+', a, b)
21: else :
22: return a
23:
24: def obtieneNumero(listaToken):
25:
26: if tomaToken(listaToken, '(') :
27: x = obtieneSuma(listaToken) # obtiene subexpresion
28: tomaToken(listaToken, ')') # se come el cierre de parentesis
29: return x
30: else :
31: x = listaToken[0]
32:
33: if type(x) != type(0) : return None
34: listaToken[0:1] = [] # quita el token
35: return Arbol(x, None, None) # devuelve una hoja sin el numero
Deja un comentario