{"id":31805482,"url":"https://github.com/juaniv2002/compiler","last_synced_at":"2026-07-15T10:32:11.586Z","repository":{"id":313805546,"uuid":"1052759950","full_name":"JuaniV2002/compiler","owner":"JuaniV2002","description":"Compilador completo para el lenguaje C-TDS desarrollado en C. Incluye análisis léxico (Flex), sintáctico (Bison), semántico, generación de código intermedio (TAC), optimizaciones y generación de código ensamblador. Proyecto académico de compiladores con documentación completa.","archived":false,"fork":false,"pushed_at":"2025-11-14T20:47:25.000Z","size":470,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-11-14T22:20:56.597Z","etag":null,"topics":["abstract-syntax-tree","compiler-design","symbol-table","three-address-code","x86-64","yacc-lex"],"latest_commit_sha":null,"homepage":"https://juaniv2002.github.io/compiler/","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JuaniV2002.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-08T14:06:18.000Z","updated_at":"2025-11-13T17:43:50.000Z","dependencies_parsed_at":"2025-09-08T16:34:12.417Z","dependency_job_id":"03a7de05-5dc2-41ac-8868-e1407b7b236e","html_url":"https://github.com/JuaniV2002/compiler","commit_stats":null,"previous_names":["juaniv2002/compiler"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/JuaniV2002/compiler","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JuaniV2002%2Fcompiler","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JuaniV2002%2Fcompiler/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JuaniV2002%2Fcompiler/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JuaniV2002%2Fcompiler/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JuaniV2002","download_url":"https://codeload.github.com/JuaniV2002/compiler/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JuaniV2002%2Fcompiler/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35501663,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-15T02:00:06.706Z","response_time":131,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["abstract-syntax-tree","compiler-design","symbol-table","three-address-code","x86-64","yacc-lex"],"created_at":"2025-10-11T02:51:26.320Z","updated_at":"2026-07-15T10:32:11.568Z","avatar_url":"https://github.com/JuaniV2002.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Compilador C-TDS\n\n## Documentación\n\nPara acceder a la documentación online, generada con docmd, dirigirse a:\n\n[Documentación del Compilador C-TDS](https://juaniv2002.github.io/compiler/)\n\n## Branches\n\n- `main`: Versión estable del compilador.\n- `parser`: Versión terminal del parser.\n- `analizador-semantico`: Versión terminal del analizador semantico.\n- `codigo-intermedio`: Versión terminal del generador de código intermedio.\n- `assembly`: Versión terminal del generador de código ensamblador.\n- `optimizations`: Versión terminal con optimizaciones implementadas.\n\n## Compilación\n\nPara compilar el compilador:\n```bash\nmake\n```\n\nEsto genera el ejecutable `c-tds`.\n\n## Uso\n\n### Sintaxis\n```bash\nc-tds [opcion] nombreArchivo.ctds\n```\n\n### Opciones\n\n- **`-o \u003csalida\u003e`**: Renombra el archivo ejecutable a `\u003csalida\u003e`\n- **`-target \u003cetapa\u003e`**: Compila hasta la etapa especificada\n  - `scan`: Análisis léxico (genera `.lex`)\n  - `parse`: Análisis sintáctico (genera `.sint`)\n  - `codinter`: Código intermedio (genera `.ci`)\n  - `assembly`: Ensamblador (genera `.ass`)\n- **`-opt [optimización]`**: Realiza optimizaciones sobre el código intermedio (TAC)\n  - `constant-propagation`: Propagación de constantes y constant folding\n  - `dead-code`: Eliminación de código muerto (no implementado)\n  - `pattern-matching`: Búqueda de patrones en expresiones aritmeticas\n  - `all`: Aplica todas las optimizaciones disponibles\n- **`-debug`**: Imprime información de debugging. Si la opción no es dada, cuando la compilación es exitosa no se imprime ninguna salida\n\n### Ejemplos\n\nCompilar hasta análisis sintáctico (comportamiento por defecto):\n```bash\n./c-tds programa.ctds\n```\n\nCompilar con información de debugging:\n```bash\n./c-tds -debug programa.ctds\n```\n\nCompilar hasta la etapa de análisis léxico:\n```bash\n./c-tds -target scan programa.ctds\n```\n\nEspecificar nombre de salida:\n```bash\n./c-tds -o mi_programa programa.ctds\n```\n\nCombinar múltiples opciones:\n```bash\n./c-tds -target assembly -o programa.asm -opt all -debug programa.ctds\n```\n\nAplicar optimización de propagación de constantes:\n```bash\n./c-tds -opt constant-propagation programa.ctds\n```\n\nGenerar código intermedio optimizado:\n```bash\n./c-tds -target codinter -opt constant-propagation -debug programa.ctds\n```\n\n## Tests\n\nPara ejecutar tests usando el Makefile:\n```bash\nmake test-correct      # Test sintácticamente correcto\nmake test-incorrect    # Test sintácticamente incorrecto\nmake test              # Ambos tests\n```\n\nPara ejecutar con archivo personalizado:\n```bash\nmake run FILE=mi_archivo.txt\n```\n\n## Limpieza\n\nPara limpiar archivos generados:\n```bash\nmake clean\n```\n\n## Notas\n\n- El archivo de entrada debe tener extensión `.ctds`.\n- El nombre del archivo no puede comenzar con `-`.\n- Por defecto, sin especificar `-target`, la compilación procede hasta la etapa corriente.\n- Sin `-o`, el archivo de salida tiene el nombre base del archivo de entrada con extensión según la etapa (`.out` por defecto).\n- Sin `-debug`, cuando la compilación es exitosa no se imprime el AST ni la tabla de símbolos.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjuaniv2002%2Fcompiler","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjuaniv2002%2Fcompiler","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjuaniv2002%2Fcompiler/lists"}