{"id":19009910,"url":"https://github.com/matcom/cool-compiler-2021","last_synced_at":"2026-04-24T04:30:20.206Z","repository":{"id":37663587,"uuid":"338663799","full_name":"matcom/cool-compiler-2021","owner":"matcom","description":null,"archived":false,"fork":false,"pushed_at":"2023-02-14T21:04:44.000Z","size":2037,"stargazers_count":3,"open_issues_count":20,"forks_count":43,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-01-01T21:21:48.986Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Cool","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/matcom.png","metadata":{"files":{"readme":"Readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2021-02-13T20:30:31.000Z","updated_at":"2023-02-23T20:54:56.000Z","dependencies_parsed_at":"2025-01-01T21:20:59.396Z","dependency_job_id":"92781db0-d00b-4eac-aaaa-be4343b613dc","html_url":"https://github.com/matcom/cool-compiler-2021","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matcom%2Fcool-compiler-2021","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matcom%2Fcool-compiler-2021/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matcom%2Fcool-compiler-2021/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matcom%2Fcool-compiler-2021/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/matcom","download_url":"https://codeload.github.com/matcom/cool-compiler-2021/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240037303,"owners_count":19737910,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":[],"created_at":"2024-11-08T19:09:15.139Z","updated_at":"2026-04-24T04:30:20.152Z","avatar_url":"https://github.com/matcom.png","language":"Cool","funding_links":[],"categories":[],"sub_categories":[],"readme":"# COOL: Proyecto de Compilación\n\n\u003e Proyecto base para el compilador de 4to año en Ciencia de la Computación.\n\n## Generalidades\n\nLa evaluación de la asignatura Complementos de Compilación, inscrita en el programa del 4to año de la Licenciatura en Ciencia de la Computación de la Facultad de Matemática y Computación de la\nUniversidad de La Habana, consiste este curso en la implementación de un compilador completamente\nfuncional para el lenguaje _COOL_.\n\n_COOL (Classroom Object-Oriented Language)_ es un pequeño lenguaje que puede ser implementado con un esfuerzo razonable en un semestre del curso. Aun así, _COOL_ mantiene muchas de las características de los lenguajes de programación modernos, incluyendo orientación a objetos, tipado estático y manejo automático de memoria.\n\n## Cómo comenzar (o terminar)\n\nEl proyecto de Compilación será recogido y evaluado **únicamente** a través de Github. Es imprescindible tener una cuenta de Github para cada participante, y que su proyecto esté correctamente hosteado en esta plataforma. A continuación le damos las instrucciones mínimas necesarias para ello:\n\n### 1. Si no lo han hecho ya, regístrense en [Github](https://github.com) todos los miembros del equipo (es gratis).\n\n![](img/img1.png)\n\n### 2. Haga click en el botón **Fork** para hacer una copia del proyecto en el perfil de Github de uno de los miembros.\n\nOpcionalmente pueden [crear una organización](https://github.com/organizations/new) y copiar el proyecto en el perfil de la misma.\n\n![](img/img2.png)\n\n### 3. Una vez hecho esto, tendrá un nuevo repositorio en `github/\u003cusuario\u003e`.\n\nRevise que el repositorio de su equipo está en su perfil.\nEn este ejemplo se ha copiado a la cuenta de `github.com/apiad`.\n\nDebe indicar bajo el nombre del repositorio: `\"forked from matcom/cool-compiler-2021\"`.\n\n![](img/img3.png)\n\n### 4. Clone este proyecto en un repositorio local.\n\nBusque la URL de su proyecto en la interfaz web de Github.\n\nAsegúrese de clonar **su copia** y no el proyecto original en `matcom/cool-compiler-2021`.\n\n![](img/img4.png)\n\n```bash\n$ git clone git@github.com:\u003cusuario\u003e/cool-compiler-2021.git\n```\n\n\u003e Donde `\u003cusuario\u003e` es posiblemente el nombre de su equipo o del miembro donde se hizo el _fork_.\n\nA partir de este punto debe tener un proyecto `cool-compiler-2021` local.\nEl siguiente paso depende de si usted ya tiene su código versionado con `git` o no.\n\n### 5.A. Si tiene su proyecto en git (y no quiere perder la historia):\n\n#### 5.1. Mezcle hacia el nuevo respositorio su repositorio anterior:\n\n```bash\n$ cd cool-compiler-2021\n$ git pull --allow-unrelated-histories \u003cmy-old-compiler-project\u003e master\n```\n\n#### 5.2. Organice su proyecto, código fuente y documentación, de acuerdo a las instrucciones de este documento, y vuelva a hacer `commit`.\n\n```bash\n$ mv \u003cmy-old-code\u003e src/\n$ git add .\n$ git commit -a -m \"Mezclado con el proyecto base\"\n```\n\n#### 5.3. A partir de este punto puede hacer `push` cada vez que tenga cambios que subir.\n\n```bash\n$ git push origin master\n```\n\n### 5.B Si aún no tiene su proyecto en git (o no le importa la historia):\n\n#### 5.1. Simplemente copie el código de su proyecto en la carpeta correspondiente `src` y haga su primer commit.\n\n```bash\n$ mv \u003cmy-old-code\u003e src/\n$ git commit -a -m \"Hello Git!\"\n```\n\n#### 5.2. A partir de este punto asegúrese de hacer `commit` de forma regular para mantener su repositorio actualizado.\n\nSi necesita saber más sobre `git`, todo lo imprescindible está en [esta guía](doc/github-git-cheat-sheet.pdf).\n\n#### 5.3. A partir de este punto puede hacer `push` cada vez que tenga cambios que subir.\n\n```bash\n$ git push origin master\n```\n\n## Entregas\n\nEn este proyecto se realizarán entregas parciales a lo largo del curso. Para realizar una entrega, siga los siguientes pasos.\n\n### 1. Cree un pull request al proyecto original desde su copia.\n\n![](img/img5.png)\n\n### 2. Asegúrese de tener la siguiente configuración antes de hacer click en **Create pull request**.\n\n- **base repository**: `matcom/cool-compiler-2021` (repositorio original)\n  - **branch**: `master`\n- **head repository**: `\u003cusuario\u003e/cool-compiler-2021` (repositorio propio)\n  - **branch**: `master` (o la que corresponda)\n\n\u003e Asegúrese que se indica **Able to merge**. De lo contrario, existen cambios en el repositorio original que usted no tiene, y debe actualizarlos.\n\n\u003e **NOTA**: Asegúrese que el _pull request_ se hace a la rama `master`.\n\n![](img/img6.png)\n\n### 3. Introduzca un título y descripción adecuados, y haga click en **Create pull request**.\n\n![](img/img7.png)\n\n### 4. Espere mientras se ejecutan las pruebas.\n\nVerá la indicación **Some checks haven't completed yet**.\n\n![](img/img8.png)\n\nEs posible que tenga que actualizar los cambios que se hayan hecho en el repositorio original, por ejemplo, si se han agregado nuevos tests. En este caso obtendrá el siguiente mensaje:\n\n\u003e **This branch is out-of-date with base branch**\n\nHaga click en **Update branch** y siga las instrucciones.\n### 5. Verifique que no hubo errores en las pruebas.\n\nSi ve el mensaje **(All | Some) checks have failed**, significa que su código no pasó las pruebas.\n\n![](img/img9.png)\n\nPara ver los resultados de las pruebas haga click en el link **Details**.\n\n![](img/img10.png)\n\n\n### 6. Arregle los errores y repita el paso 5 hasta que todas las pruebas pasen.\n\nPara cualquier modificación que haga a su proyecto, haga _commit_ y _push_ para **su repositorio personal** y automáticamente se actualizará el estado del _pull request_ y se volverán a ejecutar las pruebas. **No es necesario** abrir un _pull request_ nuevo por cada entrega, sino actualizar el anterior.\n\n\u003e **Por favor asegúrese de mantener un solo _pull request_ activo por equipo**. En caso de abrir uno nuevo, cerrar el anterior.\n\n## Sobre la implementación\n\nPonga todo su código e instrucciones necesarias en la carpeta `src`. Más información en [`src/Readme.md`](src/Readme.md).\n\n## Sobre la documentación\n\nUsted debe presentar un reporte escrito documentando el proceso de construcción de su compilador y los detalles más importantes de su funcionamiento. Más información en [`doc/Readme.md`](doc/Readme.md).\n\n## Sobre los equipos de desarrollo\n\nPara desarrollar el compilador del lenguaje COOL se trabajará en equipos de 2 o 3 integrantes.\n\n## Sobre los casos de prueba\n\nLa carpeta `tests` contiene todos los casos de prueba que son obligatorios de pasar para que su proyecto tenga derecho a ser evaluado.\n\nEstos tests se ejecutan automáticamente cada vez que hace un _pull request_ al repositorio `matcom/cool-compiler-2021`. Solo aquellos proyectos que pasen todas las pruebas con éxito serán evaluados.\n\nPara ejecutar las pruebas localmente, debe tener instalado `Python 3.7`, `pip` y `make` (normalmente viene con Linux). Ejecute:\n\n```bash\n$ pip install -r requirements.txt\n$ cd src\n$ make test\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatcom%2Fcool-compiler-2021","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmatcom%2Fcool-compiler-2021","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatcom%2Fcool-compiler-2021/lists"}