Traducción Dirigida por la Sintáxis El significado de una sentencia de entrada está relacionado con su estructura sintáctica.  Encierran aquellos formalismos utilizados para especificar las traducciones para las construcciones de los lenguajes de programación guiadas por una GLC. ◦ Se Asocian Atributos a los símbolos de la gramática. ◦ Se computan los valores de atributos por reglas semánticas asociadas a las producciones de la gramática.  La evaluación de las reglas semánticas puede: ◦ Generar Código. ◦ Insertar información en la Tabla de Símbolos. ◦ Realizar el Chequeo Semántico. ◦ Dar mensajes de error ◦ Etc. Existen dos notaciones para asociar información a las reglas semánticas:

Definiciones Dirigidas por la Sintáxis: es una especificación de alto nivel que oculta detalles de implementación. Es una generalización de una gramática independiente de contexto en la que cada símbolo gramatical tiene asociado un conjunto de atributosEspecifica la traducción de una construcción en función de los atributos asociados con sus componentes sintácticos. Para traducir una construcción de un lenguaje de programación, un compilador puede necesitar tener en cuenta muchas características, además del código generado para la construcción. Una definición dirigida por sintaxis es un formalismo para especificar las traducciones para las construcciones en funciónde atributos asociados con sus componentes sintácticos.

Utiliza una gramática independiente de contexto para especificar la estructura sintáctica de la entrada, la idea es asociar con cada símbolo de la gramática un conjunto de atributos quepueden ser sintetizados o heredados y además a cada producción un conjunto de reglas semánticas para calcular los valores de los atributos asociados con los símbolos que aparecen en esa producción.

Ladefinición dirigida por sintaxis consiste en sí entonces de la gramática y el conjunto de reglas semánticas. En una definición dirigida por sintaxis, para cada producción gramatical A=>α se asocia un conjunto de reglas semánticas de la forma b:=f(c1,c2,…,ck) donde f es una función y b es un atributo sintetizado de A o un atributo heredado de uno de los símbolos gramaticales de la parte derecha de laproducción y c1,c2,…,ck son atributos que pertenecen a los símbolos gramaticales de la producción. Se dice que b depende de c1,c2,…,ck. •

Utilizan una gramática independiente de contexto para especificar la estructura sintáctica de la entrada

• A cada símbolo de la gramática se le asocia un conjunto de atributos

• A cada regla de la gramática se le asocia un conjunto de reglas semánticas para calcular los valores de los atributos asociados con los símbolos de esa regla

• La gramática y el conjunto de reglas semánticas constituyen la definición dirigida por la sintaxis

ATRIBUTOS • El conjunto de atributos asociado a cada símbolo gramatical se divide en dos subconjuntos

Atributos sintetizados. Se pueden calcular durante un solo recorrido ascendente del árbol de análisis sintáctico –

Atributos heredados. Sirven para expresar la dependencia de una construcción en de un lenguaje en el contexto en el que aparece • Si se considera un nodo de un símbolo gramatical de un árbol sintáctico como un registro para guardar información entonces un atributo se corresponde con el nombre de un campo •

. Un atributo puede representar cualquier cosa (una cadena, un número, un tipo, una posición de memoria…)

• El proceso de calcular los valores de los atributos en los nodos se denomina anotar o decorar el árbol de análisis sintáctico

• El valor de un atributo se define mediante la regla semántica asociada a la regla de producción utilizada en ese nodo

• El valor de un atributo sintetizado se calcula a partir de los valores de los atributos de los hijos de ese nodo en el árbol de análisis sintáctico

• El valor de un atributo heredado se calcula a partir de los valores de los atributos de los hermanos y el padre de ese nodo

• En una definición dirigida por la sintaxis, se asume que los terminales sólo tienen atributos sintetizados (la definición no proporciona ninguna regla semántica para los terminales)

• Los valores para los atributos de los terminales son proporcionados generalmente por el analizador léxico

REGLAS SEMÁNTICAS • Las reglas semánticas establecen las dependencias entre los atributos que serán representadas mediante un grafo

• El grafo de dependencias proporciona el orden de evaluación de las reglas semánticas

• La evaluación de las reglas semánticas define los valores de los atributos de los nodos del árbol

• Una regla semántica puede tener también efectos colaterales (imprimir un valor, actualizar una variable global…)

• Una gramática con atributos es una definición dirigida por la sintaxis en la que las funciones de las reglas semánticas no pueden tener efectos colaterales

EJEMPLO Definición Dirigida por la Sintaxis de una calculadora de escritorio sencilla

Para ampliar el tema pulsa aqy o aqy