SlideShare una empresa de Scribd logo
1 de 10
Descargar para leer sin conexión
Benjamín Joaquín Martínez Compiladores 2021B
3.3 Dada la gramática
exp  exp opsuma term|term
opsuma  + | -
term  term opmult factor|factor
opmult  *
factor  ( exp ) | número
Escriba derivaciones por la izquierda, árboles de análisis gramatical y árboles sintácticos
abstractos para las siguientes expresiones:
a. 3 + 4 * 5 – 6
b. 3 * (4 – 5 + 6)
c. 3 – ( 4 + 5 * 6 )
exp => exp opsuma term [ exp  exp opsuma term ]
=> exp opsuma factor [ term  factor ]
=> exp opsuma numero [ factor  número ]
=> exp – numero [ opsuma  - ]
=> exp opsuma term – numero [ exp  exp opsuma term ]
=> exp opsuma term opmult factor – numero [ term  term opmult factor]
=> exp opsuma term opmult numero – numero [ factor  número]
=> exp opsuma term * numero – numero [ opmult  *]
=> exp opsuma factor * numero – numero [ term  factor]
=> exp opsuma numero * numero – numero [ factor  número]
=> exp + numero * numero – numero [ opsuma  +]
=> term + numero * numero – numero [ exp  term]
=> factor + numero * numero – numero [ term  factor]
=> numero + numero * numero – numero [ factor  número]
3 + 4 * 5 – 6
Benjamín Joaquín Martínez Compiladores 2021B
exp => term [ exp  term]
=> term opmult factor [ term  term opmult factor]
=> term opmult ( exp ) [factor  ( exp )]
=> term opmult ( exp opsuma term ) [ exp  exp opsuma term ]
=> term opmult ( exp opsuma factor ) [ term  factor]
=> term opmult ( exp opsuma numero ) [ factor  número]
=> term opmult (exp opsuma term + numero ) [ opsuma  +]
=> term opmult (exp opsuma factor + numero ) [ term  factor]
=> term opmult (exp opsuma numero + numero ) [ factor  número]
=> term opmult (exp - numero + numero ) [ opsuma  - ]
=> term opmult (term - numero + numero ) [ exp  term]
=> term opmult (factor - numero + numero ) [ term  factor]
=> term opmult (numero - numero + numero ) [ factor  número]
=> term * (numero - numero + numero ) [ opmult  *]
=> factor * (numero - numero + numero ) [ term  factor]
=> numero * (numero - numero + numero ) [ factor  número]
3 * (4 – 5 + 6)
exp => exp opsuma term [ exp  exp opsuma term ]
=> exp opsuma factor [ term  factor]
=> exp opsuma ( exp ) [factor  ( exp )]
=> exp opsuma (exp opsuma term) [ exp  exp opsuma term ]
=> exp opsuma (exp opsuma term opmult factor) [ term  term opmult factor]
=> exp opsuma (exp opsuma term opmult numero) [ factor  número]
=> exp opsuma (exp opsuma term * numero) [ opmult  *]
=> exp opsuma (exp opsuma factor * numero) [ term  factor]
=> exp opsuma (exp opsuma numero * numero) [ factor  número]
=> exp opsuma (exp + numero * numero) [ opsuma  + ]
=> exp opsuma (term + numero * numero) [ exp  term]
Benjamín Joaquín Martínez Compiladores 2021B
=> exp opsuma (factor + numero * numero) [ term  factor]
=> exp opsuma (numero + numero * numero) [ factor  número]
=> exp - (numero + numero * numero) [ opsuma  - ]
=> term - (numero + numero * numero) [ exp  term]
=> factor - (numero + numero * numero) [ term  factor]
=> numero - (numero + numero * numero) [ factor  número]
3 – ( 4 + 5 * 6 )
exp
exp opsuma term
exp opsuma term
term
factor
numero
+ term opmult factor
factor
numero
* numero
- factor
numero
Benjamín Joaquín Martínez Compiladores 2021B
exp
term
term opmult
factor
factor
numero
*
( exp )
exp opsuma term
exp opsuma term
term
factor
numero
- factor
numero
factor
numero
+
Benjamín Joaquín Martínez Compiladores 2021B
exp
exp opsuma term
factor
(
exp )
exp opsuma term
term
factor
numero
+
term opmult factor
factor
numero
* numero
-
term
factor
numero
Benjamín Joaquín Martínez Compiladores 2021B
exp
numero
+
numero
*
numero
-
numero
exp
numero
*
( )
numero
-
numero
numero
+
Benjamín Joaquín Martínez Compiladores 2021B
exp
(
)
numero
+
numero
*
numero
-
numero
Benjamín Joaquín Martínez Compiladores 2021B
3.16 Vuelva a escribir el árbol sintáctico typedef al principio de la sección 3.3.2 ( página 111) para
utilizar una unión.
typedef enum {Plus,Minus,Times) OpKind;
typedef enum {OpKind,ConstKind) ExpKind;
union streenode
{ ExpKind kind;
OpKind op;
int val;
} ;
streenode *SyntaxTree;
3.7 a) Escriba declaraciones tipo C para una estructura de árbol sintáctico abstracto
correspondiente a la gramática del ejercicio 3.6
typedef enum (atom,list) LexpKind;
typedef enum (numero,identificador) AtomKind;
typedef enum (lexp-sec, lexp) LexpsecKind;
typedef union lexp-secUnion {
LexpsecKind ls;
LexpsecKind lp;
};
lexp-secUnion lu, *u;
typedef struct streenode{
LexpKind lkind;
AtomKind akind;
struct list {
char str [1];
u lexp-sec;
char str [1];
} List;
lexp-secUnion
}
streenode * SyntaxTree
Benjamín Joaquín Martínez Compiladores 2021B
b) Dibuje el árbol sintáctico para la cadena ( a 23 ( m x y ) ) que resultaría de sus declaraciones del
inciso a.
3.9 (Aho, Sethi y Ullman) Muestre que el siguiente intento para resolver la ambigüedad del else
ambigüo todavía es ambigüo (compare con la solución de la 121):
sentencia  if ( exp) sentencia | sent-igualada
sent-igualada  if (exp) sent-igualada else sentencia | otro
exp  0 |1
Al partir de un nodo padre “sentencia” ambas opciones llevan a la construcción de un árbol de
análisis gramatical que puede coincidir con la misma cadena. Por ejemplo la cadena
If(0) if(1) otro else otro tiene dos caminos iniciales que pueden llevar a dos árboles de análisis
gramatical.
lexp
lexp-sec list
( lexp-sec )
a 23
m x y
Benjamín Joaquín Martínez Compiladores 2021B
sentencia
if ( exp ) sentencia
0 sent-igualada
if ( exp ) sent-igualada else sentencia
sent-igualada
otro
otro
1
sentencia
if ( exp )
sentencia
1
sent-igualada
if ( exp ) sent-igualada else sentencia
sent-igualada
otro
otro
0
sent-igualada
sentencia

Más contenido relacionado

La actualidad más candente

Electronic devices-and-circuit-theory-10th-ed-boylestad-chapter-7
Electronic devices-and-circuit-theory-10th-ed-boylestad-chapter-7Electronic devices-and-circuit-theory-10th-ed-boylestad-chapter-7
Electronic devices-and-circuit-theory-10th-ed-boylestad-chapter-7Shiwam Isrie
 
龍騰[掌握]數學C複習講義
龍騰[掌握]數學C複習講義龍騰[掌握]數學C複習講義
龍騰[掌握]數學C複習講義lungtengtech
 
Teorema thevenin stt telkom
Teorema thevenin stt telkomTeorema thevenin stt telkom
Teorema thevenin stt telkommomochi_zabuza
 
Formulario magnetismo electromagnetismo
Formulario magnetismo electromagnetismoFormulario magnetismo electromagnetismo
Formulario magnetismo electromagnetismoAlex Jonapá
 
Photoelectric calculations
Photoelectric calculationsPhotoelectric calculations
Photoelectric calculationsAngela Stott
 
Electronic devices-and-circuit-theory-10th-ed-boylestad-chapter-12
Electronic devices-and-circuit-theory-10th-ed-boylestad-chapter-12Electronic devices-and-circuit-theory-10th-ed-boylestad-chapter-12
Electronic devices-and-circuit-theory-10th-ed-boylestad-chapter-12Shiwam Isrie
 
Electronic devices-and-circuit-theory-10th-ed-boylestad-chapter-10
Electronic devices-and-circuit-theory-10th-ed-boylestad-chapter-10Electronic devices-and-circuit-theory-10th-ed-boylestad-chapter-10
Electronic devices-and-circuit-theory-10th-ed-boylestad-chapter-10Shiwam Isrie
 
Ejercicios_resueltos_Ctos_RLC_segundo_or.pdf
Ejercicios_resueltos_Ctos_RLC_segundo_or.pdfEjercicios_resueltos_Ctos_RLC_segundo_or.pdf
Ejercicios_resueltos_Ctos_RLC_segundo_or.pdfAlxanderSbas
 
Thevenin Norton Circuit
Thevenin Norton CircuitThevenin Norton Circuit
Thevenin Norton CircuitNovia Putri
 
Maths sequence and series grade 12 boitlamo
Maths sequence and series grade 12 boitlamoMaths sequence and series grade 12 boitlamo
Maths sequence and series grade 12 boitlamoVictor Dungwa
 
Konduktor dan dielektrik
Konduktor dan dielektrikKonduktor dan dielektrik
Konduktor dan dielektrikWinda Cynthia
 

La actualidad más candente (20)

metode analisis
metode analisismetode analisis
metode analisis
 
Electronic devices-and-circuit-theory-10th-ed-boylestad-chapter-7
Electronic devices-and-circuit-theory-10th-ed-boylestad-chapter-7Electronic devices-and-circuit-theory-10th-ed-boylestad-chapter-7
Electronic devices-and-circuit-theory-10th-ed-boylestad-chapter-7
 
龍騰[掌握]數學C複習講義
龍騰[掌握]數學C複習講義龍騰[掌握]數學C複習講義
龍騰[掌握]數學C複習講義
 
Mt3 #3 laplace
Mt3 #3 laplaceMt3 #3 laplace
Mt3 #3 laplace
 
Teorema thevenin stt telkom
Teorema thevenin stt telkomTeorema thevenin stt telkom
Teorema thevenin stt telkom
 
Rangkaian dua pintu
Rangkaian dua pintuRangkaian dua pintu
Rangkaian dua pintu
 
Formulario magnetismo electromagnetismo
Formulario magnetismo electromagnetismoFormulario magnetismo electromagnetismo
Formulario magnetismo electromagnetismo
 
Diktat sistem-linier
Diktat sistem-linierDiktat sistem-linier
Diktat sistem-linier
 
Photoelectric calculations
Photoelectric calculationsPhotoelectric calculations
Photoelectric calculations
 
Electronic devices-and-circuit-theory-10th-ed-boylestad-chapter-12
Electronic devices-and-circuit-theory-10th-ed-boylestad-chapter-12Electronic devices-and-circuit-theory-10th-ed-boylestad-chapter-12
Electronic devices-and-circuit-theory-10th-ed-boylestad-chapter-12
 
Electronic devices-and-circuit-theory-10th-ed-boylestad-chapter-10
Electronic devices-and-circuit-theory-10th-ed-boylestad-chapter-10Electronic devices-and-circuit-theory-10th-ed-boylestad-chapter-10
Electronic devices-and-circuit-theory-10th-ed-boylestad-chapter-10
 
Binomial
BinomialBinomial
Binomial
 
Ejercicios_resueltos_Ctos_RLC_segundo_or.pdf
Ejercicios_resueltos_Ctos_RLC_segundo_or.pdfEjercicios_resueltos_Ctos_RLC_segundo_or.pdf
Ejercicios_resueltos_Ctos_RLC_segundo_or.pdf
 
Separata 4
Separata 4Separata 4
Separata 4
 
Thevenin Norton Circuit
Thevenin Norton CircuitThevenin Norton Circuit
Thevenin Norton Circuit
 
Maths sequence and series grade 12 boitlamo
Maths sequence and series grade 12 boitlamoMaths sequence and series grade 12 boitlamo
Maths sequence and series grade 12 boitlamo
 
TE1-PE-2014-2S
TE1-PE-2014-2STE1-PE-2014-2S
TE1-PE-2014-2S
 
Capacitor
CapacitorCapacitor
Capacitor
 
Konduktor dan dielektrik
Konduktor dan dielektrikKonduktor dan dielektrik
Konduktor dan dielektrik
 
Funciones de legendre
Funciones de legendre Funciones de legendre
Funciones de legendre
 

Similar a 133467_COMPILADORES3.pdf

Similar a 133467_COMPILADORES3.pdf (20)

Factoreo
FactoreoFactoreo
Factoreo
 
Estructuras De Datos
Estructuras De DatosEstructuras De Datos
Estructuras De Datos
 
La factorización (nathanael francisco)
La factorización (nathanael francisco) La factorización (nathanael francisco)
La factorización (nathanael francisco)
 
Progresiones aritméticas y geométricas
Progresiones aritméticas y geométricasProgresiones aritméticas y geométricas
Progresiones aritméticas y geométricas
 
Ecuaciones y Factorización
Ecuaciones y Factorización Ecuaciones y Factorización
Ecuaciones y Factorización
 
Factorizacion
FactorizacionFactorizacion
Factorizacion
 
presentacion de matematica.pptx
presentacion de matematica.pptxpresentacion de matematica.pptx
presentacion de matematica.pptx
 
2 eso matematicas - ud01
2 eso matematicas - ud012 eso matematicas - ud01
2 eso matematicas - ud01
 
Presentacion Matematica Yorhelys Espinoza 31121988.pptx
Presentacion Matematica Yorhelys Espinoza 31121988.pptxPresentacion Matematica Yorhelys Espinoza 31121988.pptx
Presentacion Matematica Yorhelys Espinoza 31121988.pptx
 
Presentación Matemática
Presentación Matemática Presentación Matemática
Presentación Matemática
 
4b2b3ec41178e5169a2e2e5f987098f5 (1).pptx
4b2b3ec41178e5169a2e2e5f987098f5 (1).pptx4b2b3ec41178e5169a2e2e5f987098f5 (1).pptx
4b2b3ec41178e5169a2e2e5f987098f5 (1).pptx
 
Clase07 (1)
Clase07 (1)Clase07 (1)
Clase07 (1)
 
Casos de Factorización
Casos de FactorizaciónCasos de Factorización
Casos de Factorización
 
11 matematicasi-1
11 matematicasi-111 matematicasi-1
11 matematicasi-1
 
Factorización
FactorizaciónFactorización
Factorización
 
multiplicacion parte 2
multiplicacion parte 2multiplicacion parte 2
multiplicacion parte 2
 
Polinomios 3eso
Polinomios 3esoPolinomios 3eso
Polinomios 3eso
 
Clasificacion de Funciones
Clasificacion de FuncionesClasificacion de Funciones
Clasificacion de Funciones
 
Algebra inofensiva
Algebra inofensivaAlgebra inofensiva
Algebra inofensiva
 
Gramaticas
GramaticasGramaticas
Gramaticas
 

Más de Benjamín Joaquín Martínez

Más de Benjamín Joaquín Martínez (20)

Sistemas de detección de intrusiones.pdf
Sistemas de detección de intrusiones.pdfSistemas de detección de intrusiones.pdf
Sistemas de detección de intrusiones.pdf
 
Portafolio ingles.pdf
Portafolio ingles.pdfPortafolio ingles.pdf
Portafolio ingles.pdf
 
Tabla de llamadas para linux x86_64 bits.pdf
Tabla de llamadas para linux x86_64 bits.pdfTabla de llamadas para linux x86_64 bits.pdf
Tabla de llamadas para linux x86_64 bits.pdf
 
Sistema de registro con php
Sistema de registro con phpSistema de registro con php
Sistema de registro con php
 
compiladores6Benjamin133467.pdf
compiladores6Benjamin133467.pdfcompiladores6Benjamin133467.pdf
compiladores6Benjamin133467.pdf
 
Compiladores5_Benjamin133467.pdf
Compiladores5_Benjamin133467.pdfCompiladores5_Benjamin133467.pdf
Compiladores5_Benjamin133467.pdf
 
133467 compiladores 4.pdf
133467 compiladores 4.pdf133467 compiladores 4.pdf
133467 compiladores 4.pdf
 
133467_COMPILADORES2
133467_COMPILADORES2133467_COMPILADORES2
133467_COMPILADORES2
 
COMPILADORES1.pdf
COMPILADORES1.pdfCOMPILADORES1.pdf
COMPILADORES1.pdf
 
Algoritmos de búsqueda.pdf
Algoritmos de búsqueda.pdfAlgoritmos de búsqueda.pdf
Algoritmos de búsqueda.pdf
 
Logica proposicional
Logica proposicionalLogica proposicional
Logica proposicional
 
Lenguajes para dispositivos moviles 133467
Lenguajes para dispositivos moviles 133467Lenguajes para dispositivos moviles 133467
Lenguajes para dispositivos moviles 133467
 
Bd distribuidas
Bd distribuidasBd distribuidas
Bd distribuidas
 
diseño de bases de datos distribuidas
diseño de bases de datos distribuidas   diseño de bases de datos distribuidas
diseño de bases de datos distribuidas
 
procesamiento de consultas distribuidas
procesamiento de consultas distribuidasprocesamiento de consultas distribuidas
procesamiento de consultas distribuidas
 
Algoritmo de INGRES
Algoritmo de INGRES Algoritmo de INGRES
Algoritmo de INGRES
 
Fragmentación
FragmentaciónFragmentación
Fragmentación
 
Modelo cliente servidor
Modelo cliente servidorModelo cliente servidor
Modelo cliente servidor
 
Arquitectura de bases de datos distribuidas
Arquitectura de bases de datos distribuidasArquitectura de bases de datos distribuidas
Arquitectura de bases de datos distribuidas
 
Bases de datos distribuidas heterogeneas
Bases de datos distribuidas heterogeneasBases de datos distribuidas heterogeneas
Bases de datos distribuidas heterogeneas
 

133467_COMPILADORES3.pdf

  • 1. Benjamín Joaquín Martínez Compiladores 2021B 3.3 Dada la gramática exp  exp opsuma term|term opsuma  + | - term  term opmult factor|factor opmult  * factor  ( exp ) | número Escriba derivaciones por la izquierda, árboles de análisis gramatical y árboles sintácticos abstractos para las siguientes expresiones: a. 3 + 4 * 5 – 6 b. 3 * (4 – 5 + 6) c. 3 – ( 4 + 5 * 6 ) exp => exp opsuma term [ exp  exp opsuma term ] => exp opsuma factor [ term  factor ] => exp opsuma numero [ factor  número ] => exp – numero [ opsuma  - ] => exp opsuma term – numero [ exp  exp opsuma term ] => exp opsuma term opmult factor – numero [ term  term opmult factor] => exp opsuma term opmult numero – numero [ factor  número] => exp opsuma term * numero – numero [ opmult  *] => exp opsuma factor * numero – numero [ term  factor] => exp opsuma numero * numero – numero [ factor  número] => exp + numero * numero – numero [ opsuma  +] => term + numero * numero – numero [ exp  term] => factor + numero * numero – numero [ term  factor] => numero + numero * numero – numero [ factor  número] 3 + 4 * 5 – 6
  • 2. Benjamín Joaquín Martínez Compiladores 2021B exp => term [ exp  term] => term opmult factor [ term  term opmult factor] => term opmult ( exp ) [factor  ( exp )] => term opmult ( exp opsuma term ) [ exp  exp opsuma term ] => term opmult ( exp opsuma factor ) [ term  factor] => term opmult ( exp opsuma numero ) [ factor  número] => term opmult (exp opsuma term + numero ) [ opsuma  +] => term opmult (exp opsuma factor + numero ) [ term  factor] => term opmult (exp opsuma numero + numero ) [ factor  número] => term opmult (exp - numero + numero ) [ opsuma  - ] => term opmult (term - numero + numero ) [ exp  term] => term opmult (factor - numero + numero ) [ term  factor] => term opmult (numero - numero + numero ) [ factor  número] => term * (numero - numero + numero ) [ opmult  *] => factor * (numero - numero + numero ) [ term  factor] => numero * (numero - numero + numero ) [ factor  número] 3 * (4 – 5 + 6) exp => exp opsuma term [ exp  exp opsuma term ] => exp opsuma factor [ term  factor] => exp opsuma ( exp ) [factor  ( exp )] => exp opsuma (exp opsuma term) [ exp  exp opsuma term ] => exp opsuma (exp opsuma term opmult factor) [ term  term opmult factor] => exp opsuma (exp opsuma term opmult numero) [ factor  número] => exp opsuma (exp opsuma term * numero) [ opmult  *] => exp opsuma (exp opsuma factor * numero) [ term  factor] => exp opsuma (exp opsuma numero * numero) [ factor  número] => exp opsuma (exp + numero * numero) [ opsuma  + ] => exp opsuma (term + numero * numero) [ exp  term]
  • 3. Benjamín Joaquín Martínez Compiladores 2021B => exp opsuma (factor + numero * numero) [ term  factor] => exp opsuma (numero + numero * numero) [ factor  número] => exp - (numero + numero * numero) [ opsuma  - ] => term - (numero + numero * numero) [ exp  term] => factor - (numero + numero * numero) [ term  factor] => numero - (numero + numero * numero) [ factor  número] 3 – ( 4 + 5 * 6 ) exp exp opsuma term exp opsuma term term factor numero + term opmult factor factor numero * numero - factor numero
  • 4. Benjamín Joaquín Martínez Compiladores 2021B exp term term opmult factor factor numero * ( exp ) exp opsuma term exp opsuma term term factor numero - factor numero factor numero +
  • 5. Benjamín Joaquín Martínez Compiladores 2021B exp exp opsuma term factor ( exp ) exp opsuma term term factor numero + term opmult factor factor numero * numero - term factor numero
  • 6. Benjamín Joaquín Martínez Compiladores 2021B exp numero + numero * numero - numero exp numero * ( ) numero - numero numero +
  • 7. Benjamín Joaquín Martínez Compiladores 2021B exp ( ) numero + numero * numero - numero
  • 8. Benjamín Joaquín Martínez Compiladores 2021B 3.16 Vuelva a escribir el árbol sintáctico typedef al principio de la sección 3.3.2 ( página 111) para utilizar una unión. typedef enum {Plus,Minus,Times) OpKind; typedef enum {OpKind,ConstKind) ExpKind; union streenode { ExpKind kind; OpKind op; int val; } ; streenode *SyntaxTree; 3.7 a) Escriba declaraciones tipo C para una estructura de árbol sintáctico abstracto correspondiente a la gramática del ejercicio 3.6 typedef enum (atom,list) LexpKind; typedef enum (numero,identificador) AtomKind; typedef enum (lexp-sec, lexp) LexpsecKind; typedef union lexp-secUnion { LexpsecKind ls; LexpsecKind lp; }; lexp-secUnion lu, *u; typedef struct streenode{ LexpKind lkind; AtomKind akind; struct list { char str [1]; u lexp-sec; char str [1]; } List; lexp-secUnion } streenode * SyntaxTree
  • 9. Benjamín Joaquín Martínez Compiladores 2021B b) Dibuje el árbol sintáctico para la cadena ( a 23 ( m x y ) ) que resultaría de sus declaraciones del inciso a. 3.9 (Aho, Sethi y Ullman) Muestre que el siguiente intento para resolver la ambigüedad del else ambigüo todavía es ambigüo (compare con la solución de la 121): sentencia  if ( exp) sentencia | sent-igualada sent-igualada  if (exp) sent-igualada else sentencia | otro exp  0 |1 Al partir de un nodo padre “sentencia” ambas opciones llevan a la construcción de un árbol de análisis gramatical que puede coincidir con la misma cadena. Por ejemplo la cadena If(0) if(1) otro else otro tiene dos caminos iniciales que pueden llevar a dos árboles de análisis gramatical. lexp lexp-sec list ( lexp-sec ) a 23 m x y
  • 10. Benjamín Joaquín Martínez Compiladores 2021B sentencia if ( exp ) sentencia 0 sent-igualada if ( exp ) sent-igualada else sentencia sent-igualada otro otro 1 sentencia if ( exp ) sentencia 1 sent-igualada if ( exp ) sent-igualada else sentencia sent-igualada otro otro 0 sent-igualada sentencia