Compilador e Intérprete (Lenguajes y Automatas 2)
Compilador e Intérprete (Lenguajes y Automatas 2)
Compilador e Intérprete (Lenguajes y Automatas 2)
Lenguajes y Autómatas II
1.- Analizador léxico o scanner. Esta parte tiene como objetivo convertir la entrada en tokens, eliminar espacios en
blanco, comentarios, etc. Estos tokens se comparten con el analizador sintáctico a través de un buffer, que puede
ser de distintos tipos pero que en este caso no vamos a explicar con más detalles.
2.- El analizador sintáctico o parser es la parte del compilador que tiene como finalidad construir una estructura de
árbol con los tokens que recibe del analizador léxico. Este árbol es el AST (Abstract Syntax Tree).
3.- El analizador semántico, que tiene como finalidad la realización de aquellas comprobaciones que el analizador
sintáctico no puede hacer. Algunas de estas comprobaciones son los tipos de datos, que las constantes no tengan
nuevas asignaciones.
4.- Generador de código intermedio. Esta parte genera un código intermedio que puede ser en ensamblador o
similar. Se crea mediante instrucciones y con estructuras de datos como listas. Después de esta fase se puede en un
fichero la salida del código como una cadena de texto formateada para comprobar si el código intermedio se ha
generado correctamente.
Las últimas dos fases forman parte del backend y tienen como objetivo obtener un código máquina, en el
caso que esto sea lo que queramos.
1.- Optimizador de código esta parte consiste en optimizar el código obtenido reduciendo el
número de instrucciones o realizando operaciones que el programador sabe que es una
mejora en la eficiencia, bien sea de memoria o, como se ha dicho, en tiempo de ejecución.
2.- Generador de código objetivo. Esta es la fase final del compilador. Al ser la que más cerca
del metal se encuentra hay que adaptar el código a la máquina a la que se quiera ejecutar. Por
lo general esta es una de las partes más complejas ya que requiere conocimiento específico
de la máquina sobre la que se va a ejecutar.
¿Qué es un Intérprete?
Lenguajes y Automatas II
Un intérprete es un programa o software capaz de analizar y ejecutar programas escritos en
lenguajes de alto nivel. Los intérpretes funcionan de manera distinta a los compiladores, ya que
van traduciendo y ejecutando el código hecho por el programador o desarrollador línea a línea,
cargando el código fuente y traduciendo las instrucciones a un lenguaje intermedio, para que el
programa pueda ser ejecutado por el ordenador o la computadora en donde se está ejecutando
el intérprete.
Ventajas
Las principales ventajas de utilizar un programa intérprete son las siguientes:
●Es mucho más cómodo para depurar y corregir errores, debido a su ejecución línea a línea.
●Se requiere el código fuente para ejecutar un programa (ideal para desarrolladores y
estudiantes de programación).
●Si el programa es muy largo la ejecución es mucho más rápida, ya que no suele ejecutar todo
el programa, y al analizar línea a línea, al finalizar el programa se cierra sin utilizar la parte del
●Es necesario tener el intérprete instalado en el equipo para que se ejecute el programa hecho
●Cuando los programas son pequeños, la velocidad de ejecución es bastante lenta con respecto
●Por lo general, hay que configurar manualmente el PATH del intérprete en el sistema para que
fuente se hace una sola vez, durante la generación del programa equivalente. En cambio, un
intérprete se ve obligado generalmente a analizar cada instrucción tantas veces como se ejecute
Un intérprete permite utilizar funciones y operadores más potentes, como por ejemplo ejecutar
código contenido en una variable en forma de cadenas de caracteres. Usualmente, este tipo de
instrucciones es imposible de tratar por medio de compiladores. Los lenguajes que incluyen este
tipo de operadores y que, por tanto, exigen un intérprete, se llaman interpretativos. Los
operadores. En pocas palabras "el compilador sólo traduce; el intérprete decodifica y ejecuta. "
Referencias