Programa3 - Toquenización

Programa3 - Toquenización

de Solano Rios Gamio -
Número de respuestas: 1

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.


En respuesta a Solano Rios Gamio

Re: Programa3 - Toquenización

de Lucia Thais De Oliveira Gude -
Con respecto a las asignaciones, deben tener espacio entre la variable y el signo y entre el signo y el numero. O sea es correcto: a += 4. En cualquier otro caso debe devolver NO PERTENECE- FUERA DE VOCABULARIO. En cuanto a los espacios dentro del for, no se van a hacer pruebas dejando espacios a propósito entre sus elementos, no es la idea probar ese tipo de cosas, ya que depende, como vos decis, de como definis los terminales. Por lo tanto las pruebas no van a testear nada que dependa de la implementación y que pueda tener dos posibles salidas "correctas".