UTNianos

Versión completa: Final Sintaxis 23/07/2012
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Páginas: 1 2
Pregunta, el junto Primero(S)={x,y,e}, e=epsilon, esta bien?
para el ejercicio del conjunto primero me dio {x,yx} estara bien?
A mi me dio lo mismo el conjunto primero {x, yx}
a mi tambien me dio lo mismo que a ustedes, rindo hoy a la noche, espero aprobar !
Para mi: Primero(S)={x,yx,ε}.

porque ε puede ser primero tambien... Segun lo que entendi yo, no hay que tener en cuenta a ε cuando en producciones intermedias, no puede llegar a ser primero, pero en este caso si puede ser primero.
En el libro vol. 2 pag. 71 lo explica, y da un ejemplo que no tiene ε...
Cita:Por el momento, lo introducimos informalmente de la siguiente manera: Si el
noterminal expresión tiene varias producciones, entonces PRIMERO(expresión) sería el conjunto
formado por todos los terminales (o tokens) que pueden comenzar una expresión. En el caso de
ANSI C y otros LPs, este conjunto incluye números, el signo menos, el paréntesis que abre y otros
tokens; pero nunca puede incluir al paréntesis que cierra.
(...)
Como un símbolo de preanálisis siempre es un único terminal, se necesita el primer símbolo (de la
izquierda) que puede ser producido por X1...Xm. Llamamos Primero(X1...Xm) al conjunto de
“primer símbolo” que pueden ser producidos por X1...Xm.

4.3.3.3.1 OBTENCIÓN DEL CONJUNTO PRIMERO
Supongamos que existen dos o más producciones para un determinado noterminal. Para distinguir
entre estas producciones y saber, entonces, cómo se expande ese noterminal, se debe examinar el
conjunto Primero del lado derecho de cada una de las producciones. Este conjunto se define así:
Sea la producción A->X1...Xm; entonces Primero(X1...Xm) es el conjunto de terminales que
pueden iniciar cualquier cadena de derivación que se obtenga a partir de X1...Xm. Si X1...Xm
puede derivar en ε, entonces el conjunto Primero también contiene a ε. Una ayuda para comprender
mejor esta definición la da la siguiente descripción del algoritmo para obtener Primero:
1º Si el primer símbolo, X1, es un terminal, entonces Primero(X1...Xm) = {X1}.
2º Si X1 es un noterminal, entonces se calculan los conjuntos Primero para cada lado derecho de
las producciones que tenga X1.
3º Si X1 puede generar ε, entonces X1 puede ser eliminada y, en consecuencia,
Primero(X1...Xm) depende de X2.
5º Si X2 es un terminal, entonces es incluido en Primero(X1...Xm).
6º Si X2 es un noterminal, entonces se calculan los conjuntos Primero para cada lado derecho de
las producciones que tenga X2.
7º En forma similar, si tanto X1 como X2 pueden producir ε, consideramos X3, luego X4, etc.
Ejemplo 10
Calculemos el conjunto Primero para cada noterminal de la GIC con producciones:
S -> aSe | B
B -> bBe | C
C -> cCe | d
Primero(S) = {a,b,c,d}
Primero(B) = {b,c,d}
Primero© = {c,d}
* Ejercicio 25 *
Explique cómo se obtuvieron los conjuntos del ejemplo anterior.
* Ejercicio 26 *
Obtenga los conjuntos Primero para los noterminales de la GIC con producciones:
S -> ABc
A -> a | ε
B -> b | ε

y en los resueltos por la Prof. Ana Díaz Bott:

Cita:* Ejercicio 26 * (pág.71)
Primero(S) = Primero(ABc)
como A es un noterminal, por (2), entonces hay que calcular los conjuntos Primero para cada lado derecho de A:
A -> a|ε esto implica que Primero(a) = {a} U Primero(ε) = {ε}
pero como A puede generar ε, por (3), entonces Primero(S) depende de B (X2) y como B es un noterminal, por (2), hay que calcular los conjuntos Primero para cada lado derecho de B:
B -> b|ε esto implica que Primero(b) = {b} U Primero(ε) = {ε}
pero como B puede generar ε por (3), entonces Primero(S) depende de c,
y como c es un terminal, por (1), Primero( c) = {c}.
Por lo tanto:
Primero(S) = {a,b,c}
y al final del libro vol. 2 pag. 88 los resueltos:
Cita:CAPÍTULO 4
* Ejercicio 26 *
Primero(S) = {a,b,c}
Primero(A) = {a,ε}
Primero(B) = {b,ε}
(25-02-2013 14:52)GeRod escribió: [ -> ]Para mi: Primero(S)={x,yx,ε}.

porque ε puede ser primero tambien... Segun lo que entendi yo, no hay que tener en cuenta a ε cuando en producciones intermedias, no puede llegar a ser primero, pero en este caso si puede ser primero.
En el libro vol. 2 pag. 71 lo explica, y da un ejemplo que no tiene ε...
Cita:Por el momento, lo introducimos informalmente de la siguiente manera: Si el
noterminal expresión tiene varias producciones, entonces PRIMERO(expresión) sería el conjunto
formado por todos los terminales (o tokens) que pueden comenzar una expresión. En el caso de
ANSI C y otros LPs, este conjunto incluye números, el signo menos, el paréntesis que abre y otros
tokens; pero nunca puede incluir al paréntesis que cierra.
(...)
Como un símbolo de preanálisis siempre es un único terminal, se necesita el primer símbolo (de la
izquierda) que puede ser producido por X1...Xm. Llamamos Primero(X1...Xm) al conjunto de
“primer símbolo” que pueden ser producidos por X1...Xm.

4.3.3.3.1 OBTENCIÓN DEL CONJUNTO PRIMERO
Supongamos que existen dos o más producciones para un determinado noterminal. Para distinguir
entre estas producciones y saber, entonces, cómo se expande ese noterminal, se debe examinar el
conjunto Primero del lado derecho de cada una de las producciones. Este conjunto se define así:
Sea la producción A->X1...Xm; entonces Primero(X1...Xm) es el conjunto de terminales que
pueden iniciar cualquier cadena de derivación que se obtenga a partir de X1...Xm. Si X1...Xm
puede derivar en ε, entonces el conjunto Primero también contiene a ε. Una ayuda para comprender
mejor esta definición la da la siguiente descripción del algoritmo para obtener Primero:
1º Si el primer símbolo, X1, es un terminal, entonces Primero(X1...Xm) = {X1}.
2º Si X1 es un noterminal, entonces se calculan los conjuntos Primero para cada lado derecho de
las producciones que tenga X1.
3º Si X1 puede generar ε, entonces X1 puede ser eliminada y, en consecuencia,
Primero(X1...Xm) depende de X2.
5º Si X2 es un terminal, entonces es incluido en Primero(X1...Xm).
6º Si X2 es un noterminal, entonces se calculan los conjuntos Primero para cada lado derecho de
las producciones que tenga X2.
7º En forma similar, si tanto X1 como X2 pueden producir ε, consideramos X3, luego X4, etc.
Ejemplo 10
Calculemos el conjunto Primero para cada noterminal de la GIC con producciones:
S -> aSe | B
B -> bBe | C
C -> cCe | d
Primero(S) = {a,b,c,d}
Primero(B) = {b,c,d}
Primero© = {c,d}
* Ejercicio 25 *
Explique cómo se obtuvieron los conjuntos del ejemplo anterior.
* Ejercicio 26 *
Obtenga los conjuntos Primero para los noterminales de la GIC con producciones:
S -> ABc
A -> a | ε
B -> b | ε

y en los resueltos por la Prof. Ana Díaz Bott:

Cita:* Ejercicio 26 * (pág.71)
Primero(S) = Primero(ABc)
como A es un noterminal, por (2), entonces hay que calcular los conjuntos Primero para cada lado derecho de A:
A -> a|ε esto implica que Primero(a) = {a} U Primero(ε) = {ε}
pero como A puede generar ε, por (3), entonces Primero(S) depende de B (X2) y como B es un noterminal, por (2), hay que calcular los conjuntos Primero para cada lado derecho de B:
B -> b|ε esto implica que Primero(b) = {b} U Primero(ε) = {ε}
pero como B puede generar ε por (3), entonces Primero(S) depende de c,
y como c es un terminal, por (1), Primero( c) = {c}.
Por lo tanto:
Primero(S) = {a,b,c}
y al final del libro vol. 2 pag. 88 los resueltos:
Cita:CAPÍTULO 4
* Ejercicio 26 *
Primero(S) = {a,b,c}
Primero(A) = {a,ε}
Primero(B) = {b,ε}

Justamente, no incluye al signo ε, entonces no va...
Quedamos en que
Primero(S)={x,yx}?
Porque se me ocurre que si incluis a yx deberias tomar xy tambien
Primero(S)={xy,yx}
Para mi no incluis ninguno, y te queda
Primero(S)={x,y}.
Porque dice que es unico simbolo en la definicion que pegaste
(05-08-2013 00:26)franciscodiez escribió: [ -> ]Quedamos en que
Primero(S)={x,yx}?
Porque se me ocurre que si incluis a yx deberias tomar xy tambien
Primero(S)={xy,yx}
Para mi no incluis ninguno, y te queda
Primero(S)={x,y}.
Porque dice que es unico simbolo en la definicion que pegaste

El alfabeto es {x,yx}.
Si el conjunto primero no incluye ε,seria Primero(S)={x,yx}.
(01-12-2013 06:39)mariano0 escribió: [ -> ]
(05-08-2013 00:26)franciscodiez escribió: [ -> ]Quedamos en que
Primero(S)={x,yx}?
Porque se me ocurre que si incluis a yx deberias tomar xy tambien
Primero(S)={xy,yx}
Para mi no incluis ninguno, y te queda
Primero(S)={x,y}.
Porque dice que es unico simbolo en la definicion que pegaste

El alfabeto es {x,yx}.
Si el conjunto primero no incluye ε,seria Primero(S)={x,yx}.

No habia visto que yx era un simbolo entero!
afirmaciones:
1- F: las constantes enteras son LR => las reconocen los AF, y ademas la Maquina de Turing
2- V: siempre la clausura-epsilon(X) va a tener a X
3- F: la gramática no genera la palabra vacía
4- F: es analizada por el preprocesador
5- V...bah no se, me suena a que si
6- F: el ++ opera sobre valorL (variables modificables), nunca sobre constantes
7- V: es un ciclo infinito que no hace nada.

Pueden ser asi? =P
Es lo que me parece.
Saludos
CONJUNTO PRIMERO

Primero(S)={x,yx,ε}.

DE "S" agrega x (aca muere lo de la primera produccion) y se fija el noterminal M (es una segunda produccion)
De M, agrega yx (que es un caracter que pertenece al alfabeto por mas que se vean dos letras, primera produccion de M) y encuentra el noterminal T(segunda produccion de M), se fija en T y como esta genera epsilon, la elimina (elimina tanto T gracias a M pero tmb M pq esta genera epsilon). Y vuelve a la segunda produccion de S, donde teniamos MT
Por M genero epsilon y eso permitio que evaluemos T, por eso se incluye el epsilon.
Páginas: 1 2
URLs de referencia