0% encontró este documento útil (0 votos)
36 vistas3 páginas

Compiladores

Cargado por

Oriana Paredes
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
36 vistas3 páginas

Compiladores

Cargado por

Oriana Paredes
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

Compiladores

Los compiladores traducen programas escritos en lenguajes de alto nivel a código de


máquina que una computadora entiende. Y los ensambladores traducen programas escritos
en lenguaje ensamblador o de bajo nivel a código de máquina. En el proceso de
compilación, hay varias etapas.

Un Intérprete es un programa que ejecuta directamente las instrucciones escritas en un


lenguaje de programación dado

Un compilador es un programa que transforma el código fuente de un programa a su


equivalente en otro lenguaje de programación de más bajo

La implementación de lenguajes de programación permite que la CPU ejecute código de


cualquier lenguaje dependiendo de la arquitectura de bits.

Los intérpretes van traduciendo el código dinámicamente lo que lo vuelve más lento que en
lenguajes compilados, como ventaja tiene la portabilidad de plataformas solo se cambia el
intérprete, ejemplo PYTHON.

Los compiladores traducen el código fuente a código maquina antes de ejecutarse, son
eficientes y rápidos, ejemplo C++. Sus etapas son:

● 1- análisis léxico: se procesan como entrada los símbolos uno por uno y como salida
se los agrupa en elementos sintácticos como palabras reservadas, operadores,
comentarios, etc., ejemplo I+N+T=INT.
● 2-análisis sintáctico: se satisfacen las reglas sintácticas que especifica la gramática,
por ejemplo, que alguna palabra reservada esté rodeada de los demás campos que
especifique la gramática.
● 3-análisis semántico: se evalúa la estructura semántica en base a sus reglas y se
realiza el chequeo, la salida va a ser código ejecutable.
● 4- Optimización: entra el código objeto anterior y se intenta optimizar en base a la
arquitectura, da como salida código ejecutable optimizado.
● 5- vinculación y carga: tiene que ver con el sistema operativo a través de sus Apis,
como entradas tenemos los códigos anteriores se van a vincular en un único código
ejecutable.

Un compilador, ademas de traducir realiza otra serie de operaciones que en su mayoria


estan enfocadas a la deteccion de errores en la escritura del programa fuente. Esta
constituido por:

● Analizador lexicografico(scanner).
● Analizador sintáctico(parser).
● Generador de codigo intermedio.
● Optimizador de codigo.
● Generador de codigo final.
● Tabla de simbolos.
● Modulo de tratamiento de errores.
El compilador utiliza internamente una tabla de simbolos para introducir determinados datos
que necesita, y esta relacionada con todos sus elementos: asimismo, posee un modulo de
tratamiento de errores tambien relacionado con sus elementos.

5- Analizador lexicográfico o scanner. Detecta en el programa fuente unidades básicas de


información que pertenecen al lenguaje. Estas se denominan tokens o unidades léxicas. En
el caso de no existir errores realiza una primera traducción a un código propio del
compilador (generalmente numérico), eliminando a su vez toda información superflua como
pueden ser los comentarios y blancos no significativos del programa fuente.

Un token es un elemento del programa fuente que tienen significado propio como las
palabras reservadas del lenguaje, identificados, operadores, etc.

El analizador sintáctico o parser. Toma la tira de tokens que recibe del scanner e investiga
en ella los posibles errores sintácticos que aparecen, estos errores suelen ser de formato de
instrucciones, duplicidad de identificadores de distintas variables, etc.

Tanto en un analizador como en otro, todo error detectado es comunicado al programa por
medio de un listado de errores, en el que se indican donde están situados y qué tipo de
error es.

En ocasiones , se indican al programador determinados posibles errores que pueda haber


sin que perjudiquen el resto del proceso de compilación. Estos mensajes se denominan
warming o advertencias.

Un lenguaje portable es un lenguaje de programación que tiene la facultad de portar su


propio intérprete o compilador, así por ejemplo se dice que java es un lenguaje robusto y
portable, ya que implementa su propia JVM que le hace independiente de la máquina.

Resulta muy interesante entender cómo se ejecutan los programas y que ocurre en cada
momento en el. Para ellos algunos sistemas poseen unos programas depuradores cuya
misión es permitir la ejecución paso a paso por tramos del programa manteniendo el
entorno que se va produciendo (valores de variables). El programador en cada parada de la
ejecución de su programa puede comprobar e incluso modificar valores de las variables,
con lo cual resulta muy interesante este tipo de ejecución para la detección de errores y
comprobación del buen o mal funcionamiento del programa. Los puntos de parada en la
ejecución son determinados por el propio programador mediante sentencias destinadas a tal
fin.

Editores de enlace o montadores(linkers)

En general el producto de la compilación suele ser un conjunto de módulos independientes


denominados segmentos en lenguaje máquina que necesitan ser montados para formar el
programa completo para el que han sido creados . La misión del editor de enlace es unir los
distintos módulos que configuran el programa asignando la memoria al conjunto e
incorporando aquellas rutinas del propio lenguaje a las que se hacen referencia.

Algunos editores de enlace permiten el montaje de modulos escritos en distintos lenguajes y


compilados con los correspondientes compiladores.

También podría gustarte