Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ejercicio 5.1 Ejercicio 5.2 Ejercicio 5.3 Ejercicio 5.4 Ejercicio 5.5 Ejercicio 5.6 Ejercicio 5.7
Las gramticas LL(1) suelen requerir de atributos heredados para construir el rbol de sintaxis abstracta. En este caso, vamos a asociar dos atributos a los diferentes smbolos: arbol_h y arbol_s. El primero es un atributo heredado que representa el rbol reconocido hasta el momento de analizar un smbolo. El segundo atributo es sintetizado y representa el rbol reconocido tras analizar el smbolo. El esquema de traduccin queda de la siguiente forma: Circuito CircuitoSerie {RamaParalela.arbol_h = CircuitoSerie.arbol_s; } RamaParalela {Circuito.arbol_s = RamaParalela.arbol_s; } RamaParalela | CircuitoSerie { Paralelo nodo = new Paralelo(); nodo.p1 = RamaParalela.arbol_h; nodo.p2 = CircuitoSerie.arbol_s; RamaParalela1.arbol_h = nodo; } RamaParalela { RamaParalela.arbol_s = RamaParalela1.arbol_s; } RamaParalela { RamaParalela.arbol_s = RamaParalela.arbol_h; } CircuitoSerie CircuitoBase {ConexinSerie1.arbol_h = CircuitoBase.arbol_s; } ConexionSerie { ConexinSerie.arbol_s = ConexinSerie1.arbol_s; } ConexionSerie - CircuitoBase { Serie nodo = new Serie(); nodo.s1 = ConexinSerie.arbol_h; nodo.s2 = CircuitoBase.arbol_s; ConexinSerie1.arbol_h = nodo; } ConexionSerie { ConexinSerie.arbol_s = ConexinSerie1.arbol_s; } ConexionSerie { ConexinSerie.arbol_s = ConexinSerie.arbol_h; } CircuitoBase resistencia { Resistencia nodo = new Resistencia(); nodo.R = resistencia.lexema; CircuitoBase.arbol_s = r; } CircuitoBase ( Circuito ) { CircuitoBase.arbol_s = Circuito.arbol_s; }
2012-2013
Procesadores de Lenguajes Ejercicio 5.9 Ejercicio 5.10 SOLUCIN: Atributos: - Figura: objeto (sintetizado) (es un objeto de la clase Figura) - Dimensin: width (sintetizado) y height (sintetizado) - Particion: width (heredado), height (heredado) y objeto (sintetizado) (de clase Particion)
- Horizontal: width (heredado), height (heredado) y objeto (sintetizado) (de clase Horizontal) - Vertical: width (heredado), height (heredado) y objeto (sintetizado) (de clase Vertical) - Color: width (heredado), height (heredado) y objeto (sintetizado) (de clase Rectangulo) - Factor: valor (sintetizado)
2012-2013
Procesadores de Lenguajes Esquema de traduccin: Figura figura Dimensin { Particin.width = Dimensin.width; Particin.height = Dimensin.height; } Particin { Figura.objeto = new Figura(Dimensin.width, Dimensin.height, Particin.objeto); } Dimensin [ entero , entero ] { Dimensin.width = entero1.valor; Dimensin.height = entero2.valor; } Particin { Horizontal.width = Particin.width; Horizontal.height = Particin.height; } Horizontal { Particin.objeto = Horizontal.objeto; } Particin { Vertical.width = Particin.width; Vertical.height = Particin.height; } Vertical { Particin.objeto = Vertical.objeto; } Particin { Color.width = Particin.width; Color.height = Particin.height; } Color { Particin.objeto = Color.objeto; }
2012-2013
Procesadores de Lenguajes
Horizontal horizontal Factor { { Particin1.width = Horizontal.width * Factor.valor; Particin1.height = Horizontal.height; } Particin1 , { Particin2.width = Horizontal.width * (1 -Factor.valor); Particin2.height = Horizontal.height; } Particin2 } { Horizontal.objeto = new Horizontal( Particin1.objeto, Particin2.objeto); } Vertical vertical Factor { { Particin1.width = Vertical.width; Particin1.height = Vertical.height * Factor.valor; } Particin1 , { Particin2.width = Vertical.width; Particin2.height = Vertical.height * (1 - Factor.valor); } Particin2 } { Vertical.objeto = new Vertical( Particin1.objeto, Particin2.objeto); } Color color ( entero1 , entero2 , entero3 ) { Color.objeto = new Rectangulo( Color.width, Color.height, entero1.valor, entero2.valor, entero3.valor); } Factor [ real ] { Factor.valor = real.valor; }
2012-2013
Procesadores de Lenguajes Ejercicio 5.11 SOLUCIN Los atributos de cada smbolo son los siguientes: Smbolo Escena ListaDePuntos ListaDeFiguras Punto Figura Atributo escena escena escena punto escena figura Lnea escena linea Rectngulo escena Clase Scene Scene Scene Point Scene Figure Scene Line Scene Tipo sintetizado heredado heredado sintetizado heredado sintetizado heredado sintetizado heredado
rectangulo Rectangle sintetizado Polgono escena poligono ContinuaListaDePuntos escena poligono El ETDS queda as: Escena scene llaveab
{ Escena.escena = new Scene(); ListaDePuntos.escena = Escena.escena; }
ListaDePuntos
{ ListaDeFiguras.escena = Escena.escena; }
ListaDePuntos1
2012-2013
Procesadores de Lenguajes
ListaDeFiguras
{ Figura.escena = ListaDeFiguras.escena; }
Figura
{ ListaDeFiguras.escena.addFigure(Figura.figura); ListaDeFiguras1.escena = ListaDeFiguras.escena; }
Lnea
{ Figura.figura = Linea.linea; }
Figura
{ Rectangulo.escena = Figura.escena; }
Rectngulo
{ Figura.figura = Rectangulo.rectangulo; }
Figura
{ Poligono.escena = Figura.escena; }
Polgono
{ Figura.figura = Poligono.poligono; }
2012-2013
Procesadores de Lenguajes
ContinaListaDePuntos1 ContinaListaDePuntos
Ejercicio 5.12 Ejercicio 5.13 Ejercicio 5.14 Ejercicio 5.15 Ejercicio 5.16 Ejercicio 5.17 Ejercicio 5.18 Ejercicio 5.19
2012-2013