Buenas ...
Las asignaciones deben ir sin espacio? O sea esto sería válido: a+=4
y que pasa con las que tiene espacios , ejemplo: a += 4 esta sería válida?
Y esta otra: a + = 4 sería válida?
Aquí nos surge una duda genérica: Nuestro programa al igual que el programa0 ,consta de dos partes:
1) la toquenización, que consiste en leer la entra y generar una lista de token
2) el parsear la gramática con la lista de toquen (de la parte1), generando el árbol de derivación.
Dependiendo de cómo consideremos cada token, o sea el alfabeto, podemos adaptar la gramática para que genere el lenguaje esperado.
Pero los token me definen si algo "NO PERTENECE" o esta fuera del alfabeto "NO PERTENECE - FUERA DE ALFABETO"
Por ejemplo: si para el caso del FOR , me defino "in range" como un token, entonces si ingresamos:
"for (i in range(10):" (notar que tiene 3 espacios entre el "in" y "range"), el programa va a retornar
"NO PERTENECE - FUERA DE ALFABETO". Sin embargo si me defino "in" y "range" como tokens independientes, el programa me va a retornar "PERTENECE", ya que al tokenizar me elimina los espacios entre token.
Un criterio podría ser usar la función word_tokenize (que se usa en el programa 0). Esta genera un token cada vez que encuentra un espacio o paréntesis. Este es el criterio que quieren que tomemos?
Existen otras funciones como RegexpTokenizer que me permite utilizar expresiones regulares para obtener los tokens. Esta es evidentemente es más potente. Podríamos utilizarla, pero debemos tener claro cuál es el alfabeto. O sea “33” es un solo token o son dos tokens “3” y “3”. O “!=” es un solo token?, etc.