Definiciones dirigidas por la Sintaxis

Se escribe X.a para indicar el valor del atributo a de X en ese nodo. El valor de X.a en n se calcula por la regla semántica para el atributo a asociado con la producción de X utilizada en el nodo n. Al árbol de análisis sintáctico que muestre los valores de los atributos en cada nodo se dice que es un árbol de análisis sintáctico con anotaciones.

Una definición dirigida por la sintaxis utiliza gramática independiente del contexto para especificar la estructura sintáctica de la entrada. A cada símbolo de la gramática le asocia un conjunto de atributos y a cada producción, un conjunto de reglas semánticas para calcular los valores de los atributos asociados con símbolos que aparecen en esa producción. La gramática y el conjunto de reglas semánticas constituyen la definición dirigida por la sintaxis.

Una traducción es una transformación de una entrada en una salida. La salida para cada entrada x se especifica de la forma siguiente. Primero, se construye un árbol de análisis sintáctico para x. Supongase que un nodo n del arbol de analisis sintactico esta etiquetado con el símbolo X de la gramática.

Los atributos pueden ser de cualquier tipo:

  • Números
  • Tipos estructurados
  • Referencias a la tabla de símbolos
  • Strings, que pueden representar secuencias largas de código generado por la DDS. Este código puede ser el código intermedio usado por el compilador.

Los atributos de un nodo del árbol de análisis sintáctico, reciben valor mediante las reglas semánticas asociadas a la producción usada en ese nodo propietario del atributo.

Tenemos dos tipos de atributos:

  • Sintetizados
  • Heredado

Los atributos sintetizados se calculan a partir de los valores de los atributos de los nodos hijos del nodo actual, en el árbol de análisis sintáctico.

Los atributos heredados, se calculan a partir de los valores de los atributos del nodo padre y/o sus nodos hermanos

Los terminales pueden tener atributos sintetizados, pero no atributos heredados.Los valores de los atributos de un símbolo terminal, son provistos por el analizador léxico, por lo que no hay reglas para su calculo en la DDS.

Un ejemplo

Reglas semánticas

Las reglas semánticas establecen dependencias entre los atributos de los diferentes símbolos. Estas dependencias se pueden reflejar a través de un grafo, el cual a su vez ayuda a determinar un orden de evaluación de las reglas.

La evaluación de las reglas, es lo que carga de valores a los atributos.Un árbol de análisis sintáctico, que contiene también los atributos con sus valores, se denomina árbol de análisis sintáctico anotado o decorado.

Los atributos sintetizados se utilizan ampliamente. Si una definición dirigida por la sintaxis solo utiliza atributos sintetizados, la gramática se denomina S-Atribuida. El árbol de análisis sintáctico de una gramática S-Atribuida, puede decorarse con una recorrida en post orden del árbol.

Una recorrida en post orden, corresponde a la recorrida que realiza el parser bottom up al reconocer la cadena. Es muy eficiente evaluar una gramática de este tipo. Los atributos heredados sirven para expresar la dependencia que hay entre una construcción del lenguaje de programación y su contexto.

Siempre es posible reescribir una DDS para que sea S-Atribuida. En general, es mas natural utilizar atributos heredados.

FUENTE: DEFINICION DIRIGIDA POR LA SINTAXIS

Esta entrada fue publicada en Sin categoría. Guarda el enlace permanente.

Una respuesta a Definiciones dirigidas por la Sintaxis

  1. German dijo:

    en realidad me parece un muy buen aporte necesitaba mucho esta información… gracias sigue así.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s