Ciencia computacional

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.

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.

javatlacati

Compartir
Publicado por
javatlacati
Etiquetas: compilador

Entradas recientes

Cursos de Código Facilito

Te comparto aquí mis recomendaciones de cursos de Código Facilito. Codigofacilito.com es una plataforma virtual…

2 meses hace

Cursos de LinkedIn Learning

Te comparto aquí mis recomendaciones de cursos de Linkedin Learning. LinkedIn Learning es una plataforma…

4 meses hace

Mockito: Snippets de código

Estos snippets de código para entrevista acerca de mockito espero te sean de mucha utilidad.…

4 meses hace

Expresiones regulares en Java: analizar un String

En este tutorial aprenderá a usar expresiones regulares en Java de manera práctica para contar…

4 meses hace

Preguntas para entrevista de programación Java full-stack

¿Entrevista de programación Java fullstack? No te preocupes, te tengo un compendio de preguntas de…

5 meses hace

SoftSkills: cursos de Udemy

Te recomiendo algunos cursos de Udemy para mejorar tus softskills y así mejorar en tu…

5 meses hace