Skip to content

estebanghinamo/CompiladorJava

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 

Repository files navigation

🧠 Compilador Java - Subconjunto de C++ (ANTLR4)

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++.


🚀 Descripción

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.


🎯 Objetivos

  • 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


⚙️ Tecnologías Utilizadas

  • ☕ Java
  • 🧩 ANTLR4
  • 📦 Maven

📂 Estructura del Proyecto

CompiladorJava/
├── demo/
│   ├── src/
│   ├── target/
│   └── pom.xml
├── ejemplos/
├── README.md

🚀 Instalación y Uso

1. Clonar repositorio

git clone https://github.com/estebanghinamo/CompiladorJava.git
cd CompiladorJava/demo

2. Compilar el proyecto

mvn clean generate-sources compile
mvn package assembly:single

3. Ejecutar el compilador

java -jar target/demo-1.0-SNAPSHOT-jar-with-dependencies.jar archivo.txt

🔍 Fases del Compilador

🟢 1. Análisis Léxico

  • Definido mediante gramática ANTLR4
  • Reconoce tokens: variables, literales, operadores, etc.
  • Manejo de errores léxicos

🔵 2. Análisis Sintáctico

  • Construcción del Parse Tree
  • Validación de estructura del lenguaje
  • Posibilidad de visualización del AST

🟡 3. Análisis Semántico

  • Construcción de tabla de símbolos

  • Validaciones:

    • Variables no declaradas
    • Tipos incompatibles
    • Uso incorrecto de variables
  • Distinción entre errores y warnings


🟣 4. Código Intermedio (C3D)

  • Generación de código de tres direcciones

  • Manejo de:

    • Expresiones
    • Condicionales
    • Funciones

🔴 5. Optimización

  • Eliminación de código innecesario
  • Simplificación de expresiones
  • Propagación de constantes

🛠️ Ejemplo de Código

int suma(int a, int b) {
    return a + b;
}

void main() {
    int r = suma(5, 3);
}

📄 Salidas Generadas

  • *_c3d.txt → Código intermedio
  • *_opt.txt → Código optimizado

👨‍💻 Autor

Esteban Ghinamo Estudiante de Ingeniería Informática Universidad Blas Pascal


📌 Notas

Este proyecto fue desarrollado con fines académicos, aplicando los conceptos teóricos de compiladores en una implementación práctica.


About

Compilador desarrollado en Java con ANTLR4 que implementa análisis léxico, sintáctico, semántico y generación de código intermedio.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors