Entradas

1.7 Manejo de errores semanticos

Imagen
Un error semántico se produce cuando la sintaxis del código es correcta, pero la semántica o significado no es el que se pretendía. La construcción obedece las reglas del lenguaje, y por ello el compilador o intérprete no detectan los errores semánticos. Los compiladores e intérpretes sólo se ocupan de la estructura del código que se escribe, y no de su significado. Un error semántico puede hacer que el programa termine de forma anormal, con o sin un mensaje de error. Hablando en     términos     coloquiales, puede     hacer     que     el     equipo     se     quede     "colgado". Los mensajes de error de la forma *** Error 111 *** *** Ocurrió un error *** *** Falta declaración *** *** Falta delimitador *** no son útiles para el programador y no deben presentarse en un ambiente de compilación amigable y bien diseñado. Por ejemplo, el mensaje de error ‘F...

1.6 Generacion de la tabla de simbolos y tabla de direcciones

Imagen
  Las tablas de símbolos (también llamadas tablas de identificadores y tablas de nombres), realizan dos funciones en el proceso de traducción: ·         Verificar que la semántica sea correcta. ·           Generación del código apropiado. Ambas funciones se realizan insertando o recuperando de la tabla de símbolos los atributos de las variables usadas en el programa fuente. Estos atributos, tales como: el nombre, tipo, dirección de almacenamiento y dimensión de una variable, usualmente se encuentran explícitamente en las declaraciones o más implícitamente a través del contexto en que aparecen los nombres de variables en el programa. La tabla de símbolos tiene típicamente la siguiente estructura: Una tabla de símbolos se designa por la entidad, token -derivados del análisis léxico; así como una serie de atributos (tipo de dato, dirección en memoria) que emanan de otras fases (anál isis gram atical y semántico). En el contexto de...

1.4 Pila semántica en un analizador sintáctico

  Las pilas y colas son estructuras de datos que se utilizan generalmente para simplificar ciertas operaciones de programación. Estas estructuras pueden implementarse mediante  arrays  o listas enlazadas. Pila: colección de datos a los cuales se les puede acceder mediante un extremo, que se conoce generalmente como tope. Las pilas tienen dos operaciones básicas:  ·   Push  (para introducir un elemento)  ·  Pop (para extraer un elemento)  Sus características fundamentales es que al extraer se obtiene siempre el último elemento que acabe de insertarse. Por esta razón también se conoce como estructuras de datos LIFO, una posible implementación mediante listas enlazadas seria insertando y extrayendo siempre por el principio de la lista.  Las pilas se utilizan en muchas aplicaciones que utilizamos con frecuencia. Las pilas y colas son estructuras de datos que se utilizan generalmente para simplificar ciertas operaciones de programación. Estas...

1.2 Acciones semánticas de un analizador sintáctico

  E s la fase del analizador que se encarga de chequear el texto de entrada en base a una gramática dada. Y en caso de que el programa de entrada sea válido, suministra el árbol sintáctico que lo reconoce. En teoría, se supone que la salida del analizador sintáctico es alguna representación del árbol sintáctico que reconoce la secuencia de Token   suministrada por el analizador léxico. En la práctica, el analizador sintáctico también hace: •  Acceder a la tabla de símbolos (para hacer parte del trabajo del analizador semántico). •  Chequeo de tipos (del analizador semántico). •  Generar código intermedio. •  Generar errores cuando se producen. •  En definitiva, realiza casi todas las operaciones de la compilación. Este método de trabajo da lugar a los métodos de compilación dirigidos por sintaxis. 1.3 Comprobaciones de tipos en expresiones   La labor de comprobación de tipos consiste en conferir a las construcciones sintácticas del lenguaje la s...

1.1 Árboles de expresiones

Imagen
Árbol de expresiones o árbol semántico.  Es una estructura jerárquica en la cual se registran las operaciones que realiza el programa fuente. En cada una de las ramas del el árbol se registra el valor o significado que este debe tener y el análisis se encarga de terminar cuál de los valores registrado en la ramas es aplicable. Los árboles de expresiones representan el código de nivel del lenguaje en forma de datos. Los datos se almacenan en una estructura con forma de árbol. Cada nodo del árbol de expresión representa una expresión.        ·           Cualquier hoja esta etiquetada solo  con un operando.             ·               Cualquier nodo interior n esta etiquetado por un operador.      ·          Nodo raíz es un operador.   Construcción de un árbol de expresión   Algoritmo   M...