Compilador: conceptos básicos

En este curso aprenderás a crear tus propios traductores o intérpretes de lenguajes, que te permitirán correr en un lenguaje ya hecho algún otro lenguaje de programación.

Bibliografía de curso

Definición de Compilador

Un compilador es un programa que traduce un lenguaje informático a un lenguaje máquina o en su caso a un lenguaje ejecutable.

Partes de un compilador

Un compilador esencialmente se conforma de los siguientes elementos:

  1. Front End
    1. Analizador Léxico
    2. Analizador Sintáctico
    3. Símbolos
  2. Back End
    1. Generador de código
    2. Enlazador

Front End de un compilador

Es un conjunto de componentes totalmente portables que conforman a un compilador.

Back End de un compilador

Es el conjunto de componentes que son totalmente dependientes de una arquitectura real o virtual. Para el caso de los códigos ejecutables, es imprescindible en enlazador o linker por su nombre en inglés.

Fases de compilación

Conceptualmente un compilador opera en varias etapas o fases de compilación, cada una de las cuales cambia la representación del programa.

fases de compilación
Navegabilidad entre fases de compilación

El diagrama fue creado con el software plantUML con mediante el siguiente código:

@startuml

title "Fases de compilación"

state "Código Fuente" as fuente
state "Análisis Léxico" as lexico
state "Manejo de errores" as errores
state "Administración de la tabla de símbolos" as tabla
state "Análisis Sintáctico" as sintactico
state "Análisis Semántico" as semantico
state "Generación de código intermedio" as intermedio
state "Optimización de código" as optimizador
state "Generación de código ejecutable" as generador
state "Ensamblaje de programa objeto" as enlazador

[*] --> fuente
fuente --> lexico
lexico --> errores
errores --> lexico
lexico --> tabla
tabla --> lexico
lexico --> sintactico
sintactico --> errores
sintactico --> tabla
tabla --> sintactico
errores --> sintactico
sintactico --> semantico
semantico --> errores
semantico --> tabla
tabla --> semantico
errores --> semantico
semantico --> intermedio
intermedio --> errores
intermedio --> tabla
tabla --> intermedio
errores --> intermedio
intermedio --> optimizador
optimizador --> errores
optimizador --> tabla
tabla --> optimizador
errores --> optimizador
optimizador --> generador
generador --> enlazador
generador --> errores
generador --> tabla
tabla --> generador
errores --> generador
enlazador --> [*]
@enduml

Tipos de compiladores

Como parte de una clasificación básica podemos mencionar a los siguientes tipos de compiladores:

Compiladores Cruzados

También conocidos como crosscompilers su principal caracteística es que son compiladores multiplataforma.

Optimizadores

Son compiladores que generan código ejecutable de alto desempeño, a partir de el código generado por otro compilador o desde cero.

Compiladores de 1 pasada

Hacen un análisis del código antes de proceder a al generación del código ejecutable

Compiladores de varias pasadas

Realizan varios análisis del código antes de proceder a la generación del código ejecutable.

Compiladores JIT

Las siglas JIT significan Just-In-Time. Estos compiladores forman parte de in intérprete, y para aumentar su desempeño compilan código según se necesite en tiempo de ejecución.


  • Cursos de Código Facilito

    Te comparto aquí mis recomendaciones de cursos de Código Facilito. Codigofacilito.com es una plataforma virtual de cursos en idioma exclusivamente español que inició como un canal de YouTube. Opinión de la plataforma En mi opinión la plataforma aún es incipiente y los cursos necesitan más trabajo, ya que es muy común hallarse con clases de…


  • Cursos de LinkedIn Learning

    Te comparto aquí mis recomendaciones de cursos de Linkedin Learning. LinkedIn Learning es una plataforma virtual de cursos propiedad de Microsoft. Hallarás mucho material en inglés, pues prácticamente todos los cursos vienen con subtítulos en castellano y en la parte técnica son muy buenos debido a la adquisición de Lynda.com. En mi opinión la plataforma…


  • Mockito: Snippets de código

    Estos snippets de código para entrevista acerca de mockito espero te sean de mucha utilidad. Claro que también los puedes usar para tu desarrollo en el día a día. Mock básico Si te llegan a mostrar algo como esto es mejor que sospeches, mockito se usa principalmente para pruebas de integración. Si llegas a ver…


javapro.org