Proyecto desarrollado para la materia Técnicas de Compilación. Implementa un compilador completo en Java utilizando ANTLR4, capaz de procesar un subconjunto del lenguaje C++.
Este compilador implementa las fases clásicas de compilación, desde el análisis léxico hasta la optimización de código intermedio.
El sistema permite analizar código fuente, detectar errores, generar representación intermedia (C3D) y aplicar optimizaciones.
-
Implementar un compilador funcional para un subconjunto de C++
-
Aplicar conceptos fundamentales de compiladores:
- Análisis Léxico
- Análisis Sintáctico (Parse Tree / AST)
- Análisis Semántico
- Generación de Código Intermedio
- Optimización
-
Detectar y reportar errores y warnings de forma clara
- ☕ Java
- 🧩 ANTLR4
- 📦 Maven
CompiladorJava/
├── demo/
│ ├── src/
│ ├── target/
│ └── pom.xml
├── ejemplos/
├── README.md
git clone https://github.com/estebanghinamo/CompiladorJava.git
cd CompiladorJava/demomvn clean generate-sources compile
mvn package assembly:singlejava -jar target/demo-1.0-SNAPSHOT-jar-with-dependencies.jar archivo.txt- Definido mediante gramática ANTLR4
- Reconoce tokens: variables, literales, operadores, etc.
- Manejo de errores léxicos
- Construcción del Parse Tree
- Validación de estructura del lenguaje
- Posibilidad de visualización del AST
-
Construcción de tabla de símbolos
-
Validaciones:
- Variables no declaradas
- Tipos incompatibles
- Uso incorrecto de variables
-
Distinción entre errores y warnings
-
Generación de código de tres direcciones
-
Manejo de:
- Expresiones
- Condicionales
- Funciones
- Eliminación de código innecesario
- Simplificación de expresiones
- Propagación de constantes
int suma(int a, int b) {
return a + b;
}
void main() {
int r = suma(5, 3);
}*_c3d.txt→ Código intermedio*_opt.txt→ Código optimizado
Esteban Ghinamo Estudiante de Ingeniería Informática Universidad Blas Pascal
Este proyecto fue desarrollado con fines académicos, aplicando los conceptos teóricos de compiladores en una implementación práctica.