Modelos formales de traducción y verificaciones en lenguajes de programación
Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones
Escrito el en
español con un tamaño de 3,25 KB
Modelos formales de traducción
Modelos gramaticales: Primer intento. Se agregaban extensiones a la gramática BNF.
Modelos imperativos: Se fundamentan en una definición que especifica cómo se ejecutan los programas en una máquina virtual (autómata).
Modelos funcionales: Construyen una definición de la función que calcula cada programa. Cada operación primitiva definida por el programador representa una función matemática.
Modelos lógicos: Amplían el cálculo de predicados para incluir programas.
Modelos de especificación: Se describe la relación entre las funciones que implementan un programa.
Analizadores
Analizador léxico
Lee un programa fuente y lo transforma en una secuencia de elementos léxicamente válidos llamados tokens. Son las palabras reservadas, separadores, operadores, identificadores, constantes y signos de puntuación.
Analizador sintáctico
Fase que verifica la secuencia de tokens y, si es correcta, suministra el árbol sintáctico.
Analizador semántico
Se revisa el árbol sintáctico con los atributos para encontrar errores.
Verificación de tipos
Comprueba que cada operación ejecutada recibe el número apropiado de argumentos del tipo correcto de datos. Pueden ser:
- Estática: se verifica en tiempo de compilación.
- Dinámica: se verifica en tiempo de ejecución.
Ventajas e inconvenientes de la verificación dinámica de datos
- Ventaja: no se requieren declaraciones y su tipo de datos puede cambiar.
- Desventajas: difícil depuración; la información de tipos se debe conservar en toda la ejecución; la velocidad de ejecución se verá reducida.
Control de secuencia
Controla el orden en que se ejecutan las líneas de código. Pueden ser:
Estructuras usadas en expresiones
- Implícitas: las que define el lenguaje.
- Explícitas: las que permiten al programador alterar el orden con instrucciones.
Estructuras usadas entre enunciados
Condicionales e iterativos.
Estructuras usadas entre subprogramas
Llamadas a subprogramas.
Transmisión de parámetros
Parámetro real: objeto que se comparte con el subprograma de llamada.
Parámetro formal: objeto copia del objeto real.
- Llamada por nombre: se evalúa el parámetro real.
- Llamada por referencia: se pone un apuntador a la posición del objeto.
- Llamada por valor: se transfiere el valor al parámetro formal. NO MODIFICA.
- Llamada por valor-resultado: el parámetro formal es igual que el real. Se copia el valor, y al acabar la llamada se sustituye el original. SÍ MODIFICA.
- Llamada por valor constante: actúa como constante. NO MODIFICA.
- Llamada por resultado: transmite el resultado. SÍ MODIFICA.