Definición dirigida por la sintaxis

1 02 2011

(REGLAS SEMÁNTICAS)

Una definición dirigida por la sintaxis es una generación de una gramática independiente del contexto en la que cada símbolo gramatical tiene un conjunto de atributos asociados, divididos en los subconjuntos llamados atributos sintetizados y atributos herederos de dicho símbolo gramatical.

Un atributo puede representar cualquier cosa: una cadena, un numero, un tipo, una posición en memoria, etc. El valor de un atributo en nodo de un árbol de análisis sintáctico es definido a partir de una regla semántica asociada a la producción que esta utilizando dicho nodo. El valor de un atributo sintetizado en un nodo se calcula a partir de los valores de los atributos de los hijos de dicho nodo en el árbol d análisis sintáctico; el valor de un atributo heredado se calcula a partir de los valores de los atributos en los hermanos y el padre de dicho nodo.

Las reglas semánticas establecen las dependencias entre los atributos que serán representados mediante un grafo. Del grafo de dependencias se obtiene un orden de evaluación de las reglas semánticas y la evaluación de a las reglas semánticas definen los valores de los atributos en los nodos del árbol de análisis sintáctico para una cadena de entrada. Una regla semántica también puede tener efectos colaterales por ejemplo imprimir un valor o actualizar una variable global.

Las funciones de las reglas semánticas se escriben como expresiones; el único propósito de una regla semántica en una definición dirigida por la sintaxis es crear un efecto colateral. Dichas reglas se escriben como llamadas a procedimientos o fragmentos de programa.

Se puede considerar como reglas que definen los valores de atributos sintetizados ficticios, del no terminal del lado izquierdo de la producción asociada, pues no muestra el atributo ficticio y el signo ( : = ) de las reglas semánticas.

NOTA : el operador || representa en las reglas semánticas la concatenación de las cadenas.

TABLA DE SÍMBOLOS

En esta tabla se registra información sobre cada nombre de símbolo en un programa. Históricamente los nombres fueron llamados símbolos, y por ahora se consideran la tabla de símbolos, en lugar de la tabla de nombres.

Puede haber mas de una ocurrencia de un nombre de un símbolo representado por el mismo identificador.

Por ejemplo un símbolo puede ser redefinido en los procedimientos de los lenguajes estructurados.

Este esquema implica que hay un procedimiento externos con una declaración de “X” y los procedimientos internos, donde cada uno de los cuales tiene su propia declaración “X”; así un simple identificador puede representar tres diferentes nombres o símbolos. Muchos compiladores configuran una tabla en el momento del análisis léxico y le agregan información de los símbolos utilizados durante el análisis semántico, cuando se conoce mas información sobre las variables.

Una tabla de símbolo provee la siguiente información:

  1. Da un identificador.
  2. Que información es asociada con un nombre.
  3. Como se asocia esa información con un nombre.
  4. Como acceder esta información.

Algunas tablas de símbolos también incluyen claves dentro de las líneas. La alternativa seria tener una tabla separada por claves.

Cada pieza de información asociada con un nombre es llamado un atributo (distinto de un atributo semántico). Estos atributos son un lenguaje dependiente, pero puede incluir caracteres en el nombre, información del tipo, y lugar de almacenamiento, ejemplo: cuantos bytes ocupara.

La clase de un nombre es un atributo importante.

Un nombre es un programa que puede representar una variable, un tipo, una constante, un parámetro, un registro, campo registrado, un procedimiento o función, un arreglo. Una etiqueta o un archivo, por nombrar solo unas pocas posibilidades. Hay valores para un atributo llamado clases de símbolos.

Una vez que es conocida la clase del nombre o del símbolo, el resto de la información puede variar dependiendo del valor de clase. Para un nombre cuya clase es procedimiento o función, hay otros atributos los cuales indican el número de parámetros, los propios parámetros y el tipo de resultado.

Para un nombre cuya clase es un arreglo, sus atributos son:

  1. El número de dimensiones
  2. Los arreglos

Para un nombre cuya clase es archivo sus atributos pueden ser:

  1. El registro de tamaño
  2. El registro tipo
  3. Etc.

OPERACIONES DENTRO DE UNA TABLA DE SIMBOLOS

Hay dos operaciones principales sobre la tabla de símbolos:

  1. Insertar o introducir
  2. Buscar o recuperar

La mayoría de los lenguajes requieren declaración de nombres cuando se procesa la declaración los nombres son insertados en la tabla de símbolos cada uso subsecuente de un nombre causa una operación de búsqueda con la tabla de símbolos.

Proceso

Forma de Definiciones Dirigidas por Sintaxis

  • Para cada producción A => α

– Reglas semánticas b = f(c1,c2,…,ck)

– b es atributo sintetizado de A
*   c1,c2,…,ck son atributos de simbolos en la producción
– b es atributo heredado
*  de algún símbolo del lado derecho (α)
* c1,c2,…,ck son atributos de simbolos en la producción
Ejemplo Calculadora


Acciones

Information

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




A %d blogueros les gusta esto: