Reporte capítulo 6
En este capítulo se analiza lo que es los atributos y gramáticas, algoritmos para calculo, tabla de
símbolos y tipos de datos con su verificación en el análisis semántico.
Esta fase involucra el cálculo de información que rebasa las capacidades de las gramáticas libres de
contexto y los algoritmos de análisis sintácticos.
Control de lectura.
Los atributos se pueden establecer antes del proceso de compilación (o incluso la construcción de
un compilador). Por ejemplo el número de dígitos significativos en un número se puede establecer
mediante la definición de un lenguaje.
El proceso de calcular un atributo y asociar su valor calculado con la construcción del lenguaje en
cuestión se define como fijación del atributo. El tiempo que toma el proceso de
compilación/ejecución cuando se presenta la fijación de un atributo se denomina tiempo de
fijación. Los tiempos de fijación de atributos diferentes varían, e incluso el mismo atributo puede
tener tiempos de fijación bastante diferentes de un lenguaje.
En la semántica dirigida por sintaxis los atributos están directamente asociados con los símbolos
gramaticales del lenguaje (los terminales y no terminales). Si X es un símbolo gramatical, y a es un
atributo asociado con X, entonces escribirnos X.a para el valor de u asociado con X. Esta notación
nos recuerda el indicador de campo de registro de pascal o (de manera equivalente) una
operación de miembros de estructura en C. en realidad una manera de un árbol sintáctico
utilizando campos de registro.
Una gramática con atributos para los atributos a 1,…. ,an es la colección de todas esas ecuaciones
para todas las reglas gramaticales del lenguaje.
En esta generalidad las gramáticas con atributos pueden parecer muy complejas. En la práctica las
funciones fij por lo regular son bastantes simples.
Tabla 1. Gramáticas con
atributos ejemplo.
Ejemplo 1. Árbol que muestra los
cálculos de atributos
El uso de una expresión if-then-else extienden las clases de expresiones que puedan aparecer en
una ecuación de atributos de una manera útil. La colección de expresiones permisibles en una
ecuación de atributos se conoce como metalenguaje para la gramática con atributos. Por lo
regular queremos un metalenguaje cuyo significado sea suficiente claro para que no se surja
confusión sobre su propia semántica. También deseamos un metalenguaje que sea cercano a un
lenguaje de programación real, ya que, como veremos en breve, queremos convertir las
ecuaciones de atributo en código de trabajo en un analizador semántico.
Ejemplo 2:
Aquí numval es una funcion cuya definición debe ser especifica en otra parte como un suplemento
para la gramática con atributos. Por ejemplo, podemos dar la siguiente definición de numval como
código C:
Una simplificación adicional que puede ser útil al especificar gramática con atributos es utilizar una
forma ambigua, pero más simple, de la gramática original. De hecho, puesto que se supone que el
analizador sintáctico ya fue construido, toda ambigüedad se habrá abordado en esta etapa, y la
gramática con atributos puede basarse libremente en construcciones ambiguas, sin implicar
ninguna ambigüedad en los atributos resultantes. Por ejemplo, la gramática de expresión
aritmética.
En esta sección se estudia las maneras en que se puede utilizar una gramática con atributos como
base para un compilador a fin de calcular y utilizar los atributos definidos por las ecuaciones de la
gramática con atributos. Fundamentalmente, esto equivale a convertir las ecuaciones de atributos
en reglas de cálculo. De este modo, la ecuación de atributo
Se visualiza como una asignación del valor de la expresión funcional en el lado derecho para el
atributo Xi.aj. Para que esto tenga éxito, los valores de todos los atributos que aparecen en el lado
derecho ya deben existir. Este requerimiento se puede pasar por alto en la especificación de las
gramáticas con atributos, donde las ecuaciones se pueden escribir en orden arbitrario sin afectar
su validez.
Bibliografía: