Está en la página 1de 9

1

COMPILADORES

Emmanuel Jesús Medina Vazquez

Universidad del sur

Compiladores

Lic. Juan Pablo Cocom Solís


2

INTRODUCCIÓN

Los compiladores desempeñan un papel fundamental en el ámbito de la informática,

facilitando la traducción eficiente de programas escritos en lenguajes de alto nivel a instrucciones

ejecutables por una computadora. Este proceso de traducción es crucial para que los

desarrolladores puedan expresar sus ideas de manera más comprensible y abstracta, mientras que

la máquina puede ejecutar las instrucciones de manera eficaz. Esta introducción aborda la

descripción general de un compilador, destacando su importancia en el desarrollo de software y

proporcionando una visión esencial de la estructura lógica que subyace en su funcionamiento. La

comprensión de estos aspectos es fundamental para aquellos que buscan adentrarse en el diseño y

la implementación de compiladores, así como para los desarrolladores de software que desean

mejorar su conocimiento sobre la cadena de herramientas de desarrollo.


3

COMPILADORES

Descripción General

Compilar es el proceso de transformar un programa informático escrito en un lenguaje en

un conjunto de instrucciones en otro formato o lenguaje. Un compilador es un programa de

computadora que realiza dicha tarea. Normalmente, un compilador transforma código escrito en

un lenguaje de alto nivel como C++, Rust o Java en código ejecutable llamado código binario o

código máquina. WebAssembly, por ejemplo, es una forma de código binario ejecutable que

puede ser compilado desde código escrito en C++, Rust, C#, Go, Swift y muchos otros lenguajes

y luego puede ser ejecutado en cualquier página web de cualquier navegador.

Tanto los compiladores como los intérpretes desempeñan un papel esencial al convertir el

código de software escrito a un formato ejecutable y legible por máquina. Esta traducción es

fundamental para permitir que los procesadores informáticos ejecuten programas en lenguajes

como C, C++, PHP, Python o Ruby, convirtiéndolos en componentes indispensables para el uso

de dispositivos como ordenadores, portátiles o smartphones. En los apartados anteriores, se han

destacado algunas diferencias básicas entre compiladores e intérpretes, factores importantes a

considerar al seleccionar un lenguaje de programación para el desarrollo de software.

Tabla 1

Aspectos clave que caracterizan intérpretes y compiladores

Intérprete Compilador

Momento en que se traduce el Durante el tiempo de ejecución Antes de ejecutar el software

código fuente del software

Procedimiento de traducción Línea por línea Siempre todo el código


4

Presentación de errores de Después de cada línea En conjunto, después de toda

código la compilación

Velocidad de traducción Alta Baja

Eficiencia de traducción Baja Alta

Coste de desarrollo Bajo Alto

Lenguajes típicos PHP, Perl, Python, Ruby, C, C++, Pascal

BASIC

Estructura lógica de un compilador

De manera general el proceso de compilación consta de dos fases principales: Fase se

análisis y Fase se síntesis.

Fase Se Análisis (El Frontend El Compilador)

Se le conoce como frontend, porque es donde se analiza la parte donde el código fuente es

leído y este es analizado tanta léxica, sintáctica y semánticamente y a partir de estos procesos es

que nace una representación intermedia del programa fuente y la creación de la tabla de símbolos

que serán los elementos de entrada en la fase de síntesis. Esta fase está compuesta por las

subfases de:

Análisis léxico. Hace referencia a que todas las palabras del lenguaje sean estructuras

apegadas al alfabeto y sean palabras que estén definidas en el lenguaje.

Análisis Sintáctico. Que cada estructura respete las reglas gramaticales, es decir, tener un

sentido estructuralmente correcto.

Análisis Semántico. Se encarga del sentido con respecto a lo que significa.


5

Fase De Síntesis (El Backend El Compilador)

Conocido como el back-end del compilador, la fase de síntesis genera al programa destino

con la ayuda del código fuente y su representación intermedia y tabla de símbolos. Un

compilador puede tener muchas fases y pases.

Pase: un pase se refiere a la travesía de un compilador a través de todo el programa.

Fase: una fase de un compilador es una etapa distinguible, que toma la entrada de la etapa

anterior, los procesos y los rendimientos de salida que puede ser utilizado como entrada para la

siguiente etapa. Un pase puede tener más de una fase.

Código Fuente

Es un conjunto de líneas de texto con los pasos que debe seguir la computadora para

ejecutar dicho programa, el cual normalmente este hecho con lenguajes de programación de alto

nivel.

Tabla De Símbolos

Este elemento de un compilador se crea en la fase de análisis léxico y se enriquece y

utiliza a lo largo de todo el proceso de compilación. En ella se registran únicamente todos los

identificadores utilizados en el código fuente ya sean: nombres de variables, funciones, métodos,

etc.

Tabla De Símbolos Al Final Del Análisis Léxico

Tabla de símbolos al final de la fase de análisis semántico. Usando formato JSON para un

manejo más sencillo

Manejador De Errores
6

Este elemento del compilador cumple con la tarea de identificar, clasificar y notificar o

incluso corregir los errores que se presenten a lo largo del proceso de compilación.

Análisis Léxico

En primer lugar, antes de definir esta etapa del proceso, vamos a definir dos partes muy

importantes Alfabeto y Léxico el alfabeto es un conjunto de símbolos utilizados para formar

palabras en un determinado idioma y el léxico (También es conocido como un diccionario), el

léxico no es más que un conjunto de palabras que el idioma ofrece a sus usuarios.

Después de lo anterior vamos a definir las funciones de la fase de análisis léxico.

Análisis Léxico

En esta fase, se verifica que cada uno de los componentes léxicos (es decir las palabras)

del programa y las actividades clave son las siguientes:

 Verificación de la pertenencia de cada símbolo presente en el código fuente

respecto al lenguaje en el cual se presume fue hecho.

 Verificación y clasificación de cada componente léxico (cada palabra) presente en

el código fuente pertenezca al lenguaje y esté escrito de acuerdo a los patrones de

cada uno de ellos.

 Creación de la tabla de símbolos registrando en ella todos los identificadores

(variables, constantes, nombres de funciones o métodos) presentes en el código

fuente.
7

Análisis Sintaxis

Sintaxis

Se refiere al conjunto de reglas (formales o informales, escritas o interpretadas

intuitivamente) utilizadas para precisar si una determinada cadena de palabras forma parte de una

oración válida.

Análisis Sintáctico

En esta fase de la compilación se verifica que las construcciones correspondan con la

gráfica del lenguaje en el cual se presume fue escrito el programa. Para ello es indispensable

conocer la gramática del lenguaje. La principal herramienta utilizada en el análisis sintáctico son

los “Arboles de derivación”.

Análisis Semántico

Cumple con la tarea de verificar que el código guarde coherencia en la aplicación de sus

estructuras, básicamente en tres aspectos:

 Utilización de tipos de datos

 Controles de flujo de instrucciones

 Controles de ciclos

Generación De Código Intermedio

Realiza una primera traducción del código en el cual elimina aspectos característicos del

lenguaje de alto nivel, pero sin entrar en compilaciones de un lenguaje de bajo nivel. En este

punto, el código sigue teniendo independencia de la arquitectura de un hardware sobre el cual se

ejecutará.
8

Optimización De Código

En esta fase se obtiene una versión mejorada pero equivalente del código, es decir,

logrando en la medida de lo posible mejorar el desempeño del programa y el suso óptimo de los

recursos como la memoria del CPU, pero sin alterar la funcionalidad de este.

Generación De Código Objeto

Consiste en la última transformación que se realiza sobre el código. El resultado de esta

fase es un programa ejecutable totalmente dependiente de la arquitectura del hardware sobre el

cual se ejecutará.

Código Máquina

Es el sistema de códigos directamente interpretable por un circuito micro programable,

como el microprocesador de una computadora o el microcontrolador de un autómata. Este

lenguaje está compuesto por un conjunto de instrucciones que determinan acciones a ser tomadas

por la máquina. Este puede ser ceros o unos, o bien, código ensamblador.
9

Referencias

Aguilera, V. (2021, abril 17). Estructura general de un compilador - Vicente Aguilera.

Medium. https://vicente-aguilera-perez.medium.com/estructura-general-de-un-

compilador-df97892f91c3

Compilador e intérprete: definición y diferencias. (2020, junio 16). IONOS Digital

Guide; IONOS. https://www.ionos.mx/digitalguide/paginas-web/desarrollo-

web/compilador-e-interprete/

Compilar. (s/f). MDN Web Docs. Recuperado el 1 de febrero de 2024, de

https://developer.mozilla.org/es/docs/Glossary/Compile

También podría gustarte