You are on page 1of 9

Compiladores I Ing.

Carlos Vallejo Tarea #2 MICHAEL GUSTAVO ANDINO BORJAS 10841181 Agosto 27 2012

1 Fecha de Entrega: Lunes 27 de Agosto 1. Considere la siguiente gramática: S→SS+|SS*|a Y la cadena aa+a* a) Proporcione una derivación por la izquierda para la cadena S => SS* => SS + S* => aS + S* => aa + S* => aa + a* b) Proporcione una derivación por la derecha para la cadena S => SS* => Sa* => SS+a* => Sa+a* => aa+a* c) Proporcione un árbol sintáctico para la cadena Por la Izquiera Por la derecha d) ¿La gramática es ambigua o no? Justifique su respuesta Por lo tanto la gramática NO es AMBIGUA ya que cuando se elaboran los arboles sintácticos sea por la izquierda o por la derecha generan el mismo árbol. e) Describa el lenguaje generado por esta gramática y compruébelo.Tarea No. . El lenguaje que es generado por esta gramatica cnsite en genrar expresiones regulares con los caracteres +y* y se aplican como operadores de expresiones regulares.

Escriba una gramática no ambigua para los siguientes lenguajes.2. a) El conjunto de todas las cadenas de 0 y 1 tales que todo 0 va seguido inmediatamente de al menos un 1. S → bS | aA | λ A → aA | bB | λ B → aA | λ w=aabab =>S =>aA =>aaA => aabB => aabaA => aababB => aabab λ => aabab No es Ambigua c) Las cadenas de 0s y 1s con un número igual de 0s y 1s. S → 1S | 01S | λ w=0101 =>S =>01S =>0101S =>0101 λ =>0101 No es Ambigua b) Las cadenas de símbolos a y b en las que abb no es una subcadena. S → 0S1 | 1S0 | 1A1 | 0B0 | λ A → 0S0 | 0A1 | 1A0 B → 1S1 | 0B1 | 1B0 w=10010011 =>S =>1 A 1 =>1 0 A 1 1 =>1 0 0 S 0 1 1 =>1 0 0 1 S 0 0 1 1 =>1 0 0 1 λ 0 0 1 1 =>1 0 0 1 0 0 1 1 No es Ambigua .

.d) Instrucciones if para el lenguaje Ada de la forma If E1 then S1 Elsif E2 then S2 … Elsif En then Sn Else Sn+1 Endif S → S_emp S→S_no_emp S_emp→ if E then S_emp else S_emp end if S_emp→…. S_no _emp→ if E then S_emp end if S_no _emp→ if E then s_emp else S_emp end if S_no _emp→ E then S_emp A end if A→else if E then A| λ→S →S_no_emp →if E then S_emp A end inf →if E then …..{else if E then …else if E then…} end if .

También los primeros no terminales repetidos.3. . . VACIO D L T PRIMERO id id int real SIGUIENTE $ :. Considere la gramática D→L:T. id L -> id int [ ] num real $ T ->int T ->int [num] T -> real Se demostró que No es LL(1) ya que existe recursión por la izquierda. id D -> L : T. id L → id T → int T → int [ num ] T →real a) Calcule PRIMERO y SIGUIENTE. L -> L. b) Construya la tabla de análisis sintáctico y muestre por qué no es LL(1) Analisis Sintáctico D L T : . . L → L.

id D -> L : T . . id L → id T → int T → int [ num ] T →real D→ L:T. Análisis Sintáctico : D L L' T T' . idL’ T ->intT’ T’ -> [num]T’ T ->real Se demostro que es LL(1) por que no existe ningún conflicto en las TAS. int real [ SIGUIENTE $ : : . L → L. . .c) Modifique la gramática lo menos posible para hacerla LL(1) y demuestre que es LL(1) D→L:T. L → id L’ L’ → . L -> id L’ int [ ] num real $ L’ -> λ T’ ->λ L ->. id L’ L’ → λ T → int T’ T’ → [ num] T’ T’ → λ T → real VACIO D L L' T T' * * PRIMERO id id .

Case REAL: eat(REAL). Default: error(). } } d) Cree un analizador predictivo para la gramática del inciso c . PYC = 4. break. break. eat(NUM). } } Void Lp() { Switch ( tok ) { Case COMA: eat(COMA). Default: error(). Default: error(). DP = 3. Default: error(). INT = 5. Tp(). Case CORI: eat(CORI). CORI = 8. eat(PYC).Final int ID = 1. } } Void L() { Switch ( tok ) { Case ID: eat(ID). eat(ID). eat(CORD). break. REAL = 6. } } Void T() { Switch ( tok ) { Case INT: eat(INT). } } Void Tp() { Switch ( tok ) { Case PYC: return. break. Void D() { Switch ( tok ) { Case ID: L(). eat(DP). NUM = 7. Lp(). COMA = 2. break. Case DP: return. break. Tp(). Lp(). Default: error(). DOLAR = 10 Int token = getToken(). T(). CORD = 9.

.4. Muestre si la siguiente gramática es LR(0) y SLR E → id E → id ( E ) E → E + id E’ → E$ E → id E → id ( E ) E → E + id Análisis Sintáctico id 1 S3 2 3 R1 4 S5 5 R3 6 S3 7 8 R2 ( ) + S4 R1 R3 S4 R2 $ a R1 R3 G7 R2 S8 R2 R2 E G2 S6/R1 R3 R1 R3 Se demuestra que no es LR(0) por que no hay conflicto en el estado 3.

Determinando si es SLR VACIO E PRIMERO id SIGUIENTE $)+ Análisis Sintáctico para SLR id 1 S3 2 3 4 S5 5 6 S3 7 8 ( ) + S4 R1 R3 S4 R2 $ a R1 R3 G7 S8 R2 R2 E G2 S6 R1 R3 Se demuestra que es SLR ya que no exite conflicto con la TAS. .