Está en la página 1de 5

LENGUAJES Y AUTOMATAS II

Reporte capítulo 6

MISAEL ANGELITO SALINAS


18320798
Introducción.

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.

Atributos y Gramáticas con atributos.

Un atributo es cualquier propiedad de una construcción del lenguaje de programación. Los


atributos pueden variar ampliamente en cuanto a la información que contienen, su complejidad y
en particular el tiempo que les toma realizar el proceso de traducción/ejecución cuando pueden
ser determinados. En ejemplos típicos de atributos tenemos

 El tipo de datos de una variable


 El valor de una expresión
 La ubicación de una variable en la memoria
 El código objeto de un procedimiento
 El número de dígitos significativos en un número.

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.

Gramáticas con atributos

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

Una gramática con atributos completa


para el atributo val se da en la tabla 1 el significado de las ecuaciones de atributo para una cadena
particular pueden visualizarse utilizando el árbol de análisis gramatical para la cadena. Por
ejemplo, el árbol de análisis gramatical para el número 345 se da en el ejemplo 1 en este ejemplo
el cálculo correspondiente a la ecuación de atributo apropiada se muestra debajo de cada nodo
interior. Visualizar las ecuaciones de atributo como cálculos en el árbol de análisis gramatical es
importante para los algoritmos que calculan valores de atributo.

Simplificaciones y extensiones a gramática con 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:

Int numval (chard D)

{ return (int)D – (int)’0’; }

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.

Algoritmos para cálculo de atributos

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

Xi.aj = fij(X0.a1,. . ., X0.a2, X1.a1,. . . , Xn.a1,. . ., Xn.ak)

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.

El problema de implementar un algoritmo correspondiente a una gramática con atributos consiste


ante todo en hallar un orden para la evaluación y asignación de atributos que aseguran todos los
valores de atributos utilizados en cada cálculo estén disponible cuando este se realice. Las mismas
ecuaciones de atributos indican las limitantes de orden en el cálculo de los atributos, y la primera
tarea es hacer explicitas las limitaciones de orden utilizado graficas dirigidas para representarlas.
Estas graficas dirigidas se conocen como graficas de dependencia

Bibliografía:

Libro: Construcción de compiladores principios y practicas 1ra edición

Autor: Kenneth Louden.

También podría gustarte