Analizador sintactico descendente
Budget: $10 – $30 USD
La entrada puede contener varios casos de prueba, cada caso consiste de una gramatica libre de contexto
G = (V, Σ, P, S)1 y una lista de cadenas para analizar de longitud n > 0.
Para cada caso de prueba debe imprimir una lista que contiene ´unicamente las palabras ‘si’ y ‘no’, donde ‘si’ representa que la cadena pertenece a L(G) y ‘no’ representa que no pertenece a L(G).
Si no se puede implementar el analizador
retornar el mensaje “error”, no analizar las cadenas y pasar al siguiente caso, si lo hay.
Input
Un numero entero c > 0 indicando el numero de casos de prueba que se van a recibir. Luego, c casos de
prueba con el siguiente formato:
1. Una linea con tres numeros m, k, n > 0, separados por espacios en blanco, donde m es el numero de
simbolos no terminales y k el n´umero de reglas (producciones) de la gramatica; n es el numero de
cadenas que se van a analizar.
2. Una linea con los m simbolos no terminales de la gramatica separados por espacios en blanco. El
primer simbolo (desde la izquierda) es el simbolo inicial de la gramatica (S).
3. Luego, k lıneas con las producciones de la gramatica con el formato A−α, donde A ∈ V y α ∈ (V ∪ Σ)∗.
La cadena vacia se representa con el simbolo e.
Despues, se debe recibir una lista de n > 0 cadenas, cada cadena en una linea independiente.
Output
Si no se puede implementar el analizador retornar el mensaje “error”. De lo contrario, por cada cadena de
la entrada imprimir ‘si’, si la cadena pertenece a L(G), o ‘no’, si la cadena no pertenece a L(G). Se debe
imprimir una linea independiente por cada cadena
Se tiene que calcular los conjuntos First y Follow. Tambien se debe implementar la funcion para calcular el conjunto Fisrt de una cadena.
G = (V, Σ, P, S)1 y una lista de cadenas para analizar de longitud n > 0.
Para cada caso de prueba debe imprimir una lista que contiene ´unicamente las palabras ‘si’ y ‘no’, donde ‘si’ representa que la cadena pertenece a L(G) y ‘no’ representa que no pertenece a L(G).
Si no se puede implementar el analizador
retornar el mensaje “error”, no analizar las cadenas y pasar al siguiente caso, si lo hay.
Input
Un numero entero c > 0 indicando el numero de casos de prueba que se van a recibir. Luego, c casos de
prueba con el siguiente formato:
1. Una linea con tres numeros m, k, n > 0, separados por espacios en blanco, donde m es el numero de
simbolos no terminales y k el n´umero de reglas (producciones) de la gramatica; n es el numero de
cadenas que se van a analizar.
2. Una linea con los m simbolos no terminales de la gramatica separados por espacios en blanco. El
primer simbolo (desde la izquierda) es el simbolo inicial de la gramatica (S).
3. Luego, k lıneas con las producciones de la gramatica con el formato A−α, donde A ∈ V y α ∈ (V ∪ Σ)∗.
La cadena vacia se representa con el simbolo e.
Despues, se debe recibir una lista de n > 0 cadenas, cada cadena en una linea independiente.
Output
Si no se puede implementar el analizador retornar el mensaje “error”. De lo contrario, por cada cadena de
la entrada imprimir ‘si’, si la cadena pertenece a L(G), o ‘no’, si la cadena no pertenece a L(G). Se debe
imprimir una linea independiente por cada cadena
Se tiene que calcular los conjuntos First y Follow. Tambien se debe implementar la funcion para calcular el conjunto Fisrt de una cadena.