Un compilador es una pieza de software que traduce el código de un lenguaje de programación a lenguaje máquina. Los compiladores no son la única pieza de software capaz de hacer esto, existen también los intérpretes, y su principal diferencia es que estos realizan la traducción en tiempo de ejecución. El compilador traduce el código fuente dando como resultado el código objeto, que es el código que será ejecutado. Algunos ejemplos de lenguajes de programación interpretados son Python, JavaScript y PHP.
Existen, además, transpiladores, que son piezas de software que traducen de un lenguaje de programación a otro. Un ejemplo de transpilador es Cython, que traduce código escrito en Python a código en C para posteriormente ser compilado con el compilador de C.
Gramática usada para este proyecto
- Analizador léxico
- Analizador sintáctico
- Analizador semántico
- Generación de código intermedio
- Optimización de código
- Generación de código objeto.
La fase del análisis léxico agrupa las cadenas de caracteres escritas en el código y las separa en lexemas, y para cada lexema genera un token.
El análisis léxico agrega los token encontrados a la tabla de símbolos, que serán necesarios para la siguiente fase del compilador.
El analizador sintáctico (o parser) determina que la estructura gramatica del código sea válida.
El analizador toma como entrada un flujo de Tokens producida por analizador léxico, y crea una representación en forma de árbol.
El producto del análisis sintáctico es un árbol de sintáxis, que representa el orden en que se deben ejecutar las operaciones.
El analizador semántico trabaja con la tabla de símbolos y con el árbol sintáctico producido en el analizador sintáctico para validar la consistencia del código escrito.
Una de las responsabilidades del analizador semántico, es la validación de tipos, donde se verifica que el tipo de operador coincida con el tipo de operando.
Aún no implementado.
Aún no implementado.
Aún no implementado.
Por definir.
Por definir
Por definir.
Por definir.
Por definir. Aún no implementado.