Hola razpeitia. Gracias por tu respuesta.
Tienes razón, no puse el suficiente código.
Lo que pasa, es que es un poco mas complicado.
Aunque lo qu tu pusiste es un buen reusmen de lo que necesito hacer:
Código:
for nt in grammar:
if nt.leftHand == currentNT:
newItem = LRItem()
newItem.rule = nt
newItem.dot = 0
newItem.lookAhead = lrItem.lookAhead
newItem.show()
lookAheads = getLookAheads(grammar, newItem)
for la in lookAheads:
newItem.lookAhead = la
if newItem not in itemsList:
itemsList.append(newItem)
Sin embargo, sustituyendo newItem.lookAhead = la por:
Código:
tempItem = LRItem()
tempItem.rule = newItem.rule
tempItem.dot = newItem.dot
tempItem.lookAhead = la
funciona de manera correcta.
Todavía me confunde la manera en que python maneja algunas cosas, como el caso de los objetos mutables y no mutables.
Me surge una duda aqui.
Si tengo 2 objetos que fueron creados, pero con el mismo contenido. ¿Cómo los toma el operador in?
Código:
class Foo(object):
def __init__(self):
self.data=0
objA = Foo()
objA.data = 1
objB = Foo()
objB.data = 1
mylist = [objA]
Como se evaluaría
Supongo que daría falso porque son objetos diferentes apesar de que el contenido es el mismo.
Alguien que me despeje esta duda?
Como lo haría para que esa condicion evalue verdadero?
SAludos