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.

Entradas relacionadas: