Sie sind auf Seite 1von 24

TRADUCTORES E INTERPRETES II

GRAMTICAS CON ATRIBUTOS


Julio Delgado Mangas

TRADUCTORES E INTERPRETES II
.- ANLISIS SEMNTICO .- Por qu? - Aspectos que no captura el anlisis lxico-sintctico - Aspectos que no captura una gramtica libre de contexto
char micaracter; //Correcto sintcticamente micaracter = 25; //Incorrecto semnticamente

.- Tipos - Anlisis semntico esttico - Anlisis semntico de optimizacin

TRADUCTORES E INTERPRETES II
.- ANLISIS SEMNTICO .- Formas de Expresar la semntica -Semntica operacional: Mquina abstracta -Semntica denotacional: Efecto de la ejecucin -Semntica axiomtica: Asertos -Semntica algebraica: Tipos de datos abstractos -Semntica de acciones: Pseudocdigo -Gramticas con atributos: Atributos, reglas semnticas -Otras

TRADUCTORES E INTERPRETES II
.- GRAMTICAS CON ATRIBUTOS -Atributos: Cualquier propiedad de un elemento del lenguaje - Tipo de una variable - Valor de una expresin - Posicin en memoria - Otros -Reglas semnticas: Expresan cmo el clculo de los atributos est relacionado con las reglas gramaticales del lenguaje - tiles para lenguajes que siguen el principio de semntica dirigida por sintaxis: El contenido semntico se encuentra estrchamente relacionado con la sintaxis

TRADUCTORES E INTERPRETES II
EJEMPLO: GRAMTICA SIMPLE PARA NMEROS SIN SIGNO nmero nmero dgito | dgito dgito 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 Atributo: Valor - nmero.val - dgito.val digito 1 ; digito.val = 1 nmero dgito; nmero.val = dgito.val nmero1 nmero2 dgito; nmero1.val = numero2.val * 10 + dgito.val

TRADUCTORES E INTERPRETES II
.- GRAMTICAS CON ATRIBUTOS -Metalenguaje: Conjunto de expresiones permitidas en una regla semntica. - if .. then .. else - funciones externas -Especificar la gramtica con atributos mediante gramticas ambiguas ms sencillas exp exp + term | exp term | term term term * factor | factor factor (exp) | nmero exp exp + exp | exp exp | exp * exp | (exp) | nmero

TRADUCTORES E INTERPRETES II
.- GRAMTICAS CON ATRIBUTOS -rbol sintctico abstracto para exhibir valores de atributo

3 * (4 - 2) rbol Abstracto *
ENTERO ENTERO

rbol de anlisis sintctico Term Term Factor ENTERO ENTERO

* ( Expr Term Factor


ENTERO

Factor Expr ) Term Factor


ENTERO

TRADUCTORES E INTERPRETES II
.- ALGORITMOS -Anlisis semntico posterior al anlisis sintctico -Mtodo basado en el grafo de dependencias -Mtodo basado en reglas -Ms sencillo -Encontrar un recorrido para el rbol sintctico. -Anlisis semntico y sintctico simultaneos -Anlisis sintctico y semntico en una pasada -Diferentes potencias en funcin del tipo de anlisis sintctico

TRADUCTORES E INTERPRETES II
.- ALGORITMOS X i . a j = f ij X 0 . ai ,... , X 0 . a k , X 1 . ai , ... , X 1 . a k ,... , X n . ai , ... , X n . a k -Buscar un orden de evaluacin que asegure que todos los valores de atributo van a estar disponibles. -Grafos de dependencia

nmero1 . val=nmero2 . val10dgito.val

TRADUCTORES E INTERPRETES II
.- ALGORITMOS X i . a j = f ij X 0 . ai ,... , X 0 . a k , X 1 . ai , ... , X 1 . a k ,... , X n . ai , ... , X n . a k -Buscar un orden de evaluacin que asegure que todos los valores de atributo van a estar disponibles. -Grafos de dependencia

nmero1 . val=nmero2 . val10dgito.val

TRADUCTORES E INTERPRETES II
.- ALGORITMOS -Grafos de dependencia vs rbol sintctico
Produccin ->E1+E2 Regla Semntica E.val:=E1.val+E2.val

TRADUCTORES E INTERPRETES II
.- ALGORITMOS -Grafos de dependencia vs rbol sintctico float x,y

TRADUCTORES E INTERPRETES II
.- ALGORITMOS -Mtodo del rbol de anlisis gramatical -Grafos de dependencia <--> Limitantes de orden -Recorrido del grafo segn los limitantes -> Clasificacin Topolgica -Condicin necesaria y suficiente -> Grafo acclico (DAG) -Mtodo complejo -> construccin del grafo en tiempo de compilacion -Algoritmo para comprobar que una gramtica de atributos est bien construida --> Orden exponencial

TRADUCTORES E INTERPRETES II
.- ALGORITMOS -Mtodos basado en reglas -Anlisis de la gramtica y fijacin de orden de evaluacin en tiempo de construccin del compilador -Aplicable para gramticas con atributos completamente no circulares -Se basan en un recorrido explcito o implcito del rbol gramtical o del rbol sintctico. -Diferentes recorridos <--> Diferente potencia frente a tipos de atributos

TRADUCTORES E INTERPRETES II
.- ALGORITMOS BASADOS EN REGLAS - Atributos sintetizados -Todas sus dependencias apuntan de hijo a padre en el rbol sintctico a es atributo sintetizado A X 1 X 2 ... X n A.a= f X 1 . a1 , ... , X 1 . a k ,... , X n . a1 ,... , X n . a k

A.a X1.a X2.a ... Xn.a

TRADUCTORES E INTERPRETES II
.- ALGORITMOS BASADOS EN REGLAS - Atributos sintetizados -Gramtica S --> Todos los atributos sintetizados -Recorrido ascendente o postorden del arbol gramatical

345 nmero.val nmero.val dgito.val

nmero.val dgito.val dgito.val

TRADUCTORES E INTERPRETES II
.- ALGORITMOS BASADOS EN REGLAS -Atributos heredados -Un atributo no sintetizado es heredado -Herencia de padres a hijos -Herencia de hermanos a hermanos

A.a X1.a ... X2.a

A.a X1.a ... X2.a

TRADUCTORES E INTERPRETES II
.- ALGORITMOS BASADOS EN REGLAS -Atributos heredados float x,y

TRADUCTORES E INTERPRETES II
.- ALGORITMOS BASADOS EN REGLAS -Atributos heredados -Recorrido preorden, o combinado, preorden/enorden del rbol sintctico procedure PreEval (T:nodo); begin for cada hijo C de T do calcule todos los atributos heredados de C; PreEval(C); end; - El orden de clculo de los atributos heredados de los hijos es importante por las posibles herencias hijo-hijo

TRADUCTORES E INTERPRETES II
.- ALGORITMOS BASADOS EN REGLAS -Atributos heredados y sintetizados -Sintetizados dependen de heredados, heredados no dependen de sintetizados --> Un solo recorrido del rbol -Sintetizados dependen de heredados, heredados dependen de sintetizados --> Situacin ms compleja, ms de un recorrido del rbol sintctico

TRADUCTORES E INTERPRETES II
.- ALGORITMOS SEMNTICO SINTCTICO SIMULTNEO -Histricamente importante emplear pocas pasadas -> recursos limitados -Potencia de clculo depende del mtodo de anlsis sintctico -Los mtodo sintcticos habituales procesan Left to Right -Atributos sintetizados -> no es un problema -Atributos heredados -> no puede haber dependencias hacia atrs (derecha izquierda) en el grafo de dependencias -Gramtica de atributos L -Una gramtica S es una gramtica L

TRADUCTORES E INTERPRETES II
.- ALGORITMOS SEMNTICO SINTCTICO SIMULTNEO -Gramtica L + Atributos heredados no dependientes de sintetizados -Analizador sintctico descendente -A. Heredados --> Parmetros -A. Sintetizados --> Valores devueltos -Analizador sintctico ascendente -Ms problemticos, uso menos directo -Posponen la decisin de la regla a utilizar hasta la formacin completa del lado derecho

TRADUCTORES E INTERPRETES II

.- ALGORITMOS SEMNTICO SINTCTICO SIMULTNEO -Atributos sintetizados vs analizador LR -Pila de valores Pila de anlisis sintctico -Reduccin -> pila de valores -> Clculo de A. sintetizados E -> E1 + E2; E.val = E1.val+E2.val ; $$ = $1 + $2

TRADUCTORES E INTERPRETES II
.- ALGORITMOS SEMNTICO SINTCTICO SIMULTNEO -Herencia de un atributo sintetizado previamente vs LR
<S> <A> <B> <A> a <B> b B.e = f(A.s) A.s = a.s B.s = g(B.e)

-El atributo heredado no puede pasarse a la ltima produccin para que pueda calcularse B.e
<S> <A> <B> <C> <A> <C> <B> a A.s = a.s b B.s = g(topepila-1.e) C.e = f(topepila.s)

-Aadiendo una produccin vaca se soluciona

Das könnte Ihnen auch gefallen