INSTITUTO TECNOLOGICO SUPERIOR DE JEREZ
“LENGUAJES
Y AUTOMATAS II”
TAREA_2
“DOCUMENTO:
1.6 GENERACION DE TABLA DE SIMBOLO”
DOCENTE:
ISC.
JORGE MIGUEL VAZQUEZ MARQUEZ.
ALUMNA:
LIZETH
GUADALUPE GIRON ALVARADO
VILLANUEVA,
ZAC. A 15 DE OCTUBRE DEL 2013
Una tabla de símbolos está compuesta por frases o
instrucciones de un lenguaje libre de contexto, su principal función es
identificar palabras que son seguidas por otras, así como simplificar el
análisis sintáctico, las comprobaciones semánticas y la generación de código; están
estructuradas por el símbolo y los atributos de este mismo y dependen de la
gestión de la memoria, el lenguaje y los parámetros.
Para construir una tabla de símbolos trabajan en conjunto dos tipos de
analizadores en principio el analizador
léxico quien es el encargado de
insertar los símbolos detectados a la tabla y crearla y señalar la línea del
programa fuente en la que aparece, mientras tanto el analizador semántico es el encargado de añadir los tipos de
símbolos para que aparezca en la tabla, si estos son agregados y calificados de
una sola pasada se en ese m ismo instante son detectados por ambos
analizadores.
También una tabla de símbolos cuenta con operaciones como INSERTAR,CONSULTAR, MODIFICAR, que son
declaradas según el lenguaje y se clasifica en dos tipos de variables: Explicitas, son declaraciones para
INSERTAR y referencia solo para CONSULTAR; otra variable son las Implícitas, que pueden tener acciones
de CONSULTAR, INSERTAR y crear su tablas; la manera de implementación dependerá
de la distribución de la información
según las características del lenguaje y sus restricciones y está estructurada
por varios campos establecidos de la siguiente manera:
*Campos para el símbolo:
contiene un formato fijo que es utilizado cuando
tiene un límite de caracteres es decir un área fija para almacenar el símbolo. Un
formato variable aquí es donde se introducen los símbolos de
modo consecutivo donde se sustituye el nombre del símbolo por la longitud.
*Campo dirección: se clasifica en dos tipos de lenguaje
el SIN estructura de Bloque su función es asignar las direcciones según el
orden en el que son declaradas, y los
Lenguajes CON estructura de Bloques,
para cada bloque se asigna una subtabla con dos campos y se utiliza en la fase
de generación de código.
*Campo Tipo: se utiliza para el almacenamiento de
la memoria y la comporbacion de los tipos y se aplica cuando una variable es implícita
o explícita.
*Campo Nº de
dimensiones /Nº de parámetros: se trata de una función
o procedimiento, donde el número de argumentos que posee y sus tipos
para la reserva de memoria.
*Campos Lista Cruzada
de referencia y Puntero de orden: es el traductor con el objeto para facilitar el uso de la
tabla de símbolos.
En la organización de la tabla de símbolos(TS), el lenguaje
SIN estructura de Bloque está
estructurado por una lista que puede estar ordenada por medio de árboles binarios
y tablas de Hash o simplemente no ordenada, mientras tanto los lenguajes CON
estructura de Bloque utilizan una tabla para cada Bloque como una PILA + Índice
que nos muestra el principio y el final de un bloque además podemos consultar,
insertar y modificar los bloques utilizando operaciones como set(inicio del bloque), y
Reset(fin del bloque).
GRAMATICA CON ATRIBUTOS
Es una gramática libre de contexto en donde los símbolos pueden tener asociados atributos en número
finito y las producciones tienen un numero finito de reglas de evaluación de
atributos, y sus valores están asociados con un dominio, existen dos tipos de
atributo Heredado es cuando b está asociado con algún símbolo dea; mientras que el atributo sintetizado es aquel cuando b está asociado con un símbolo no
terminal de A.
Dentro de los atributos
sintetizados se realiza una evaluación que consiste en
aplicar reducciones al análisis sintáctico,
de manera ascendente utilizando la reglas según los símbolos
gramaticales utilizando las gramáticas S-Atribuidas existe solo cuando todos
los atributos de los símbolos son
sintetizados. La evaluación de los atributos se realiza cuando se REDUCE.
Los atributos Heredados
dependen de los atributos asociados con los símbolos precedentes en la derivación,
a diferencia del anterior atributo este realiza el análisis de manera
descendente; por lo tanto es necesario establecer un orden de evaluación de los atributos.
Una técnica de simplificación de gramáticas es el grafo de
dependencia construido por medio de nodos que representan los símbolos y los
arcos que representa las reglas semánticas clasificando la evaluación en árbol de análisis donde cada entrada tiene
su árbol sintáctico, Basado en las reglas semánticas que establece el orden de
evaluación y dirigido por sintaxis que se utiliza según la estrategia del
análisis. Es necesario contar con
diferentes tipos de comprobaciones para cada evaluación algunas de ellas son:
Comprobaciones ESTATICAS (son sintácticas y semánticas), Comprobaciones DINAMICAS
(se realizan en tiempo de ejecución),
Comprobaciones SEMANTICAS (de tipo, de flujo de control, de unicidad, relación
de nombres).
Las expresiones de tipos básicos es nombrada por un nombre, como por ejemplo: boolean,
char, integer, real,… en tanto los constructores de tipos están clasificados
por matrices (arrays), producto (producto
cartesiano), registro; y pueden ser representados mediante un grafo dirigido
aciclico (GDA), o por expresiones de tipos
por mapa de bit en donde se parte de los constructores básicos de codificación
como la expresión puntero, función y array. Tiene como ventaja
ahorrar espacio.
La equivalencia estructural de dos expresiones de tipos se da
solo si responde a un mismo tipo básico o si se aplica el mismo constructor y
se puede determinar aplicando el GDA o el algoritmo de análisis de los
constructores. La equivalencia de nombre es
posible cuando las expresiones
son nombradas y si y solo si son idénticas.
Existe también un comprobador de tipos que dispone de la asignación
de tipos y puede estar comprobando las expresiones, las sentencias o proposiciones y las funciones por medio de dos tareas
llamadas de asignación y otra de evaluación y comprobación, utiliza tópicos de comprobación
o conversión por medio de la coerción implícita (la realiza el compilador) y la
explicita (la realiza el programador). La sobre carga de funciones y operadores
+,-, son símbolos en el que su significado dependerá del contexto y usan como o
elementos matrices.
3 comentarios:
muy buena tarea
Esto quiere decir que por medio de la verificacion de tipos
podemos determinar que los operadores a los que estamos
accediendo sean los correctos y si no esta nos marcara las expresiones que no sean aceptadas dentro del lenguaje.
gracias!!
Publicar un comentario