Lenguaje

Enviado por Programa Chuletas y clasificado en Otras materias

Escrito el en español con un tamaño de 8,71 KB

Un traductor es un programa que recibe una entrada escrita en un lenguaje (el lenguaje fuente) a una salida perteneciente a otro lenguaje (el lenguaje objeto), conservando su significado.

  • ensamblador es el programa encargado de llevar a cabo un proceso denominado de ensamble o ensamblado. Este proceso consiste en que, a partir de un programa escrito en lenguaje ensamblador, se produzca el correspondiente programa en lenguaje máquina (sin ejecutarlo), realizando.
  • Un compilador es un programa que recibe como entrada un programa escrito en un lenguaje de nivel medio o superior (el programa fuente) y lo transforma a su equivalente en lenguaje ensamblador (el programa objeto), e inclusive hasta lenguaje máquina (el programa ejecutable) pero sin ejecutarlo.
    1. Funciones de un Compilador:
      • Análisis Léxico: reconocer los elementos básicos del lenguaje y generar las tablas de símbolos y de literales. Para cumplir esta misión, debe leer cada instrucción y separarla en TOKENS. El Token es comparado en una tabla de palabras claves, y si lo consigue se mueve al siguiente Token.
      •  Análisis Sintáctico: realizado por la fase sintáctica y su función básica es la averiguar la validez sintáctica de las instrucciones fuentes, para cual debe reconocer, primero, el tipo de la instrucción o sentencia (si es IF, WHILE, etc.) para poder conocer las reglas sintácticas que debe aplicar
      • Análisis Semántico: lo ejecuta la fase de interpretación la que se encarga de determinar el sentido de la instrucción siempre y cuando no haya tenido error de sintaxis. La interpretación depende de si la instrucción es o no ejecutable. En el primer caso, la interpretación consiste en generar una forma intermedia que se guarda en una estructura de datos apropiada.
      • Optimización: minimiza el número de instrucciones del programa objeto o hace mejor uso de los recursos (tipo de registros) con que cuenta la máquina. La optimización puede dividirse en dos fase: Fase de Optimización Independiente: la cual se puede realizar en varias pasadas dependiendo de la técnica aplicada. Esta optimización se realiza sobre la matriz de formas intermedias. Fase de Optimización Dependiente: la cual hace un mejor uso de los registros que dispone la máquina, también hay la posibilidad de generar un menor número de instrucciones.
      • Asignación de Almacenamiento: la ejecuta la fase de asignación de almacenamiento y su propósito es asignar la dirección relativa a todos los identificadores y a los literales.
      • Generación de Código Objeto: su propósito es obvio. Al finalizar la compilación no se requiere mantener el traductor en memoria principal. Si el proceso de traducción ha sido exitoso y se desea correr el programa objeto, en memoria solo debe estar el módulo obtenido.

Un intérprete, es un programa que ejecuta cada una de las instrucciones y declaraciones que encuentra conforme va analizando el programa que le ha sido dado de entrada (sin producir un programa objeto o ejecutable). La ejecución consiste en llamar a rutinas ya escritas en código máquina cuyos resultados u operaciones están asociados de manera unívoca al significado de la instrucciones o declaraciones identificadas.

Los programas translator convierten las instrucciones fuentes de un lenguaje en las equivalentes instrucciones fuentes de un segundo lenguaje, este nuevo programa fuente puede ser compilado. Un programa simulador logra que un computador actúe como si fuera otro distinto. La recepción, tratamiento y salida de datos aparentemente es igual que el computador simulado. A diferencia del programa translator (que trabaja con el programa fuente), el simulador trabaja con el programa objeto. El principal inconveniente de los programas simuladores es que aumentan mucho el tiempo de proceso y necesitan más memoria, ya que el programa simulador debe permanecer en memoria junto con el programa objeto que va a ser procesado.




Un interpretador es considerado menos eficiente que un compilador porque debe llevar a cabo tanto el análisis sintáctico, interpretación y la ejecución de la instrucción procesada. Esto significa que cada vez que se requiere ejecutar el programa el interpretador debe repetir todo el proceso como si fuese la primera vez, aún cuando ya el programa fuente no tenga errores de sintaxis. Ad+, el interpretador permanece en memoria durante todo el tiempo de ejecución lo que no sucede con los traductores que generan un programa objeto, ya que luego de la generación desocupan el almacenamiento principal y no es necesario que estén en memoria mientras se realiza la ejecución del módulo objeto. Al ejecutar instrucción por instrucción, el interpretador permite conocer resultados parciales antes de que finalice la ejecución de la ultima sentencia y como reporta los errores de sintaxis aceptando la corrección de los mismos en forma iterativa. El interpretador, por su forma de trabajo, solo realiza una pasada sobre el programa fuente lo que implica que no optimiza y obliga a que la gramática del lenguaje establezca que los atributos que puedan asignársele a los identificadores deban estar declarados antes que el símbolo.
Interpretadores VS Compiladores: 1 La zona de memoria necesaria para operar con un interpretador es menor que la que se precisa para operar con un compilador.2 El programa compilado se ejecuta más rápidamente que el interpretado. Ello se debe a que el programa interpretado es ejecutado por otro programa que, a su vez, lo es por el computador.3Es más fácil programar contando con interpretadores, ya que nos avisa de los errores tan pronto como los cometemos.

Pasos Intérprete 1. Lee una instruccióndel prog. fuente. 2. Examina instrucción para determinar la validez sintáctica en funcion de la gramática del lenguaje fuente. 3. Si instrucción correcta sintácticamente, la interpreta para determinar su semántica, pudiendo producir una estructura de datos intermedias (por ejemplo un árbol binario) que establezca la secuencia lógica de ejecución, facilitando la generación de las instrucciones de máquina equivalente. 4. Inmediatamente, el mismo interpretador ejecuta las instrucciones de máquina generadas. Si es el caso, se almacenan los resultados parciales para un posible uso posterior. 5. Si error de sintaxis se detiene el proceso, se reporta el error y hasta tanto este no se corrija, no se interpretará ni ejecutará la instrucción en proceso. 6. Se repite el ciclo a partir del paso 1. 7. La traducción finaliza cuando se lee la última instrucción fuente.

Precompilador: también llamado preprocesador, es un programa que se ejecuta antes de invocar al compilador. Este programa es utilizado cuando el programa fuente, escrito en el lenguaje que el compilador es capaz de reconocer (de aquí en adelante denominado lenguaje anfitrión), incluye estructuras, instrucciones o declaraciones escritas en otro lenguaje (el lenguaje empotrado).

Un pseudocompilador es un programa que actua como un compilador, salvo que su producto no es ejecutable en ninguna máquina real sino en una máquina virtual.
Gramatica -> simbolos basicos de caracteres multiples (palabras claves)+ elementos basicos (identif, valores, etiquetas, cadenas)
sintaxis -> Reglas (expresiones, proposiciones)
semántica -> Sentido ó Significado

Entradas relacionadas: