Sie sind auf Seite 1von 8

Procesadores de lenguajes Ejercicios del Tema 5

Ejercicio 5.1 Ejercicio 5.2 Ejercicio 5.3 Ejercicio 5.4 Ejercicio 5.5 Ejercicio 5.6 Ejercicio 5.7

Procesadores de Lenguajes Ejercicio 5.8 Solucin:

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; }

Ciencias de la Computacin e Inteligencia Artificial

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)

Ciencias de la Computacin e Inteligencia Artificial

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; }

Ciencias de la Computacin e Inteligencia Artificial

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; }

Ciencias de la Computacin e Inteligencia Artificial

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; }

Scene Polygon Scene Polygon

heredado sintetizado heredado heredado

ListaDePuntos
{ ListaDeFiguras.escena = Escena.escena; }

ListaDeFiguras llavece ListaDePuntos Punto


{ ListaDePuntos.escena.addPoint( Punto.punto ); ListaDePuntos1.escena = ListaDePuntos.escena; }

ListaDePuntos1

Ciencias de la Computacin e Inteligencia Artificial

2012-2013

Procesadores de Lenguajes

ListaDePuntos Punto point id parab num1 coma num2 parce pyc


{ Punto.punto = new Point(id.lexema, num1.valor, num2.valor); }

ListaDeFiguras
{ Figura.escena = ListaDeFiguras.escena; }

Figura
{ ListaDeFiguras.escena.addFigure(Figura.figura); ListaDeFiguras1.escena = ListaDeFiguras.escena; }

ListaDeFiguras1 ListaDeFiguras Figura


{ Linea.escena = Figura.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; }

Lnea line parab id1 coma id2 parce pyc


{ Point p1 = Linea.escena.searchPoint(id1.lexema); Point p2 = Linea.escena.searchPoint(id2.lexema); Linea.linea = new Line(p1,p2); }

Ciencias de la Computacin e Inteligencia Artificial

2012-2013

Procesadores de Lenguajes

Rectngulo rectangle parab id1 coma id2 parce pyc


{ Point p1 = Rectangulo.escena.searchPoint(id1.lexema); Point p2 = Rectangulo.escena.searchPoint(id2.lexema); Rectangulo.rectangulo = new Rectangle(p1,p2); }

Polgono polygon parab id


{ Point p1 = Poligono.escena.searchPoint(id.lexema); Poligono.poligono = new Polygon(p1); ContinuaListaDePuntos.escena = Poligono.escena; ContinuaListaDePuntos.poligono = Poligono.poligono; }

ContinaListaDePuntos parce pyc ContinaListaDePuntos coma id


{ Scene escena = ContinuaListaDePuntos.escena; Polygon poligono = ContinuaListaDePuntos.poligono; Point p = escena.searchPoint(id.lexema); poligono.addPoint(p); ContinuaListaDePuntos1.escena = escena; ContinuaListaDePuntos1.poligono = poligono;}

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

Ciencias de la Computacin e Inteligencia Artificial

2012-2013

Das könnte Ihnen auch gefallen