viernes, 18 de octubre de 2013

CREAR TABLA DE SIMBOLOS Y DE DIRECCIONES

TAREA_2_FERNANDEZ
ANALISIS SEMANTICO
COMO SE LLEVA A CABO LA CREACION DE LA TABLA DE SIMBOLOS Y DE DIRECCIONES
·         FUNCION
·         CARACTERISTICAS
·         CONTENIDO
·         ESTRUCTURA
·         OPERACIONES
RESUMEN
Una  tabla de símbolos es la estructura de datos que permite almacenar información semántica, es decir en ella se encuentra el significado asociado a las estructuras formales (sintaxis) del lenguaje.
Su objetivo es delimitar el contexto de un conjunto de frases o instrucciones de un lenguaje libre de contexto, es decir que los lenguajes representados por las variables se describen recursivamente en términos de otros lenguajes o de símbolos primitivos llamados terminales y las reglas que describen el lenguaje asociado con cada variable se llaman producciones.
Algunas de las utilidades de la tabla de símbolos son:
o   Simplifica el análisis sintáctico
o   Ayudan en las comprobaciones semánticas
o   Y en la generación de código.
El contenido de la tabla de símbolos es de dos tipos: el propio símbolo y los atributos necesarios para definir el símbolo a nivel semántico y de generación de código, los atributos dependen a nivel general si:
§  Del tipo de gestión de memoria
§  El lenguaje esta, o no, estructurado en bloques
§  El símbolo es, o no, parámetros de un procedimiento o función
CONSTRUCCION DE LA TABLA DE SIMBOLOS
1.      El analizador léxico deberá:
ü  Insertar los símbolos detectados en la tabla de símbolos
ü  Crear la tabla de símbolos parcialmente
ü  Señalar la línea del programa fuente en donde aparecen
2.      El analizador semántico:
ü  Añadir los tipos, si procede, a los símbolos que aparecen en la tabla de símbolos.
OPERACIONES SOBRE LA TABLA DE SIMBOLOS
1.      Insertar
2.      Consultar
3.      Modificar (añadir atributos nuevos).
Lenguaje con declaraciones de variables está conformado por dos tipos: explicitas e implícitas, en la primera está compuesta por declaraciones de tipo operación de insertar y de referencia donde solo se puede consultar; y en las implícitas contiene las operaciones de consulta si no está ya incluida e inserta en caso contrario y además tiene lenguajes con estructura de bloque, es decir crea subtablas.
En la implementación de la tabla de símbolos, la distribución de la información dependerá de las características del lenguaje y de las restricciones establecidas para los símbolos. Está conformado por campos:
Campo para el símbolo que a su vez se divide en formato fijo y variable respecto al primero como su nombre lo dice establece un límite en el número de caracteres que forman los símbolos. En el segundo se dispone de la TS de un área auxiliar en donde se introducen los símbolos de un modo consecutivo.
Campo de dirección: este se divide en dos lenguajes sin y con estructura de bloques en esta última se necesitan dos campos número y dirección de bloque.
Campo tipo: este se introduce cuando se identifica una declaración explícita o implícita de una variable. Y se utiliza para determinar la memoria de almacenamiento y la comprobación de tipos.
Campo núm. de dimensiones / núm. de parámetros: la realiza el analizador semántico y sirve para delimitar el tamaño de memoria necesaria para representar el símbolo.
Campo lista cruzada de referencia y puntero de orden: son útiles para el programador del traductor con objeto de facilitar el uso de la TS.
ORGANIZACIÓN DE LA TS
Esta se subdivide en dos fases:
1-      Lenguaje SIN estructura de bloque: es por medio de una lista está dividida por ordenada y no ordenada en la primera se representa por medio de árboles binarios y tablas hash.
2-      Lenguajes CON estructura de bloque: una tabla para cada bloque con estructura de PILA. La estructura consta de una PILA + INDICE.
GRAMATICA CON ATRIBUTOS
Una gramática con atributos es una gramática de contexto libre cuyos símbolos pueden tener asociados atributos y las producciones pueden tener asociadas reglas de evaluación de los atributos. Los atributos a mencionar son dos:
1)    ATRIBUTO HEREDADO: si b está asociado con algún símbolo de .
Las reglas de evaluación se realizan cuando se aplican reducciones en el análisis sintáctico. Dentro de los requisitos de evaluación los atributos deben definirse en función de los atributos asociados con los símbolos gramaticales a su derecha y realizar un análisis ascendente. 
2)    ATRIBUTO SINTETIZADO: si b está asociado con el símbolo no terminal A.
Su evaluación depende de los atributos asociados con los símbolos precedentes en la derivación. Como requisito es realizar un análisis descendente.
GRAFOS DE DEPENDENCIA
Cuando aparecen definidos atributos sintetizados y heredados, es necesario establecer un ORDEN DE EVALUACION DE LOS ATRIBUTOS, para ello se utilizan los grafos de dependencia estos están construidos por nodos y arcos, cada uno de ellos tiene algún método de evaluación de las reglas semánticas; por ejemplo el nodo está compuesto por uno método de evaluación que es árbol de análisis dice que para cada entrada se construye el árbol sintáctico. Y en arco basado en reglas semánticas  dependiendo de estas (atributos heredados o sintetizados) se establece el orden de evaluación.
COMPROBACIONES SEMANTICAS
ESTATICAS: las comprobaciones sintácticas y semánticas.
DINAMICAS: realizadas en tiempo de ejecución.
SEMANTICAS:
o   De tipo: operandos en las expresiones    
o   De flujo de control: puntos de salida y entrada.
o   De unicidad: verifica la presencia de símbolos de forma única.
o   Relación de nombres. Un mismo nombre puede aparecer más de una vez.
EXPRESIONES DE TIPOS
·         Tipos básicos: boolean, char, integer, real,….
·         Nombre de tipos
Las expresiones de tipos es representado mediante el grafo dirigido aciclico (GDA).
CONSTRUCTORES DE TIPOS:
§  Matrices
§  Producto
§  Registro
§  Apuntadores
§  Funciones
EQUIVALENCIA ESTRUCTURAL
Modo de determinar si dos expresiones de tipos son equivalentes:
·         Aplicando GDA
·         Algoritmo de análisis de los constructores
1)      EQUIVALENCIA  DE NOMBRE: cuando las expresiones son nombradas, entonces dos expresiones de tipos son equivalentes de nombre si y solo si ambas expresiones son idénticas.
2)      ESPECIFICACION DE UN COMPROBADOR DE TIPOS ELEMENTAL
Un comprobador de tipos ha de dispones de:
o   Asignación de tipos
o   Comprobador de tipos en las expresiones
o   Comprobador de tipos en las proposiciones o sentencias
o   Comprobador de tipos de las funciones
o   Básicamente se advierten dos tareas:
o   De asignación
o   De evaluación y comprobación
TOPICOS EN LA COMPROBACION DE TIPOS
1)      Conversión de tipos (Coerción).
o   Implícita: se realiza automáticamente por medio del compilador
o   Explicita: se explicita por parte del programador la conversión
2)      Sobrecarga de funciones y operadores
+,-, son símbolos sobrecargados ya que su significado dependerá del contexto.
(,), Pueden estar sobrecargadas (ADA, FORTRAN), ya que se usan como referencia de elementos de matrices y como funciones.

CONCLUSION PERSONAL:
Me pareció la lectura muy interesante, que sirve como base para lenguajes y autómata II, pero a su vez algo extensa me refiero a que para realizar una tabla de símbolos hay que tener bien claros la secuencia o contenidos que tiene cada uno de sus atributos y saber identificarlos. En resumen el analizador sintáctico se limita a comprobar, mediante una GLC, que un identificador forma parte de una expresión. Una vez comprobado que la sentencia es sintácticamente correcta, el analizador semántico deberá verificar que el identificador empleado como parte de una expresión haya sido declarado previamente. Para llevar a cabo esta tarea, es típica la utilización de una estructura de datos llamada TABLA DE SIMBOLOS.

No hay comentarios:

Publicar un comentario