Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Entrega del compilador con todos los test pasados en el repo local 🤞🏿 #61

Open
wants to merge 121 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
121 commits
Select commit Hold shift + click to select a range
50e12b0
init cool_compiler
Mar 3, 2021
3da3b8b
bug in readme
Mar 4, 2021
427e8ea
add ast factory interface
Mar 4, 2021
8a44db0
add poetry
Mar 16, 2021
6661eee
add comment lexer
Mar 17, 2021
de1afb2
kill tester
Mar 23, 2021
318ef11
reinit proyect
Oct 3, 2021
9fe9ca9
ready for reinit dev
danielorlando97 Oct 8, 2021
7df3c47
add dependency
danielorlando97 Oct 8, 2021
0e126ae
refactor(semantic-checking): rename and refactor import
danielorlando97 Oct 23, 2021
d0f30f9
feat(semantic-checking): replaces visitor
danielorlando97 Oct 23, 2021
1e0c6e0
feat(semantic): finish checking
danielorlando97 Oct 26, 2021
00162bb
add md off teacher
danielorlando97 Nov 18, 2021
0d81684
reafctor semantic
danielorlando97 Jan 13, 2022
7ca8998
good path to codegenerate
danielorlando97 Jan 13, 2022
4b4766b
firts cil
danielorlando97 Feb 17, 2022
5015082
delete numpy
danielorlando97 Feb 17, 2022
59491c9
reedit req
danielorlando97 Feb 18, 2022
c3229a0
casi term
danielorlando97 Feb 20, 2022
e2a957e
write v4
danielorlando97 Feb 22, 2022
d804a98
codemips
Feb 22, 2022
68d3307
Merge branch 'master' of https://github.com/CeroMB/cool-compiler-2021
Feb 22, 2022
abfce9a
merger with aldo
danielorlando97 Feb 22, 2022
57a190d
Merge branch 'master' of https://github.com/CeroMB/cool-compiler-2021
danielorlando97 Feb 22, 2022
329b955
write mips hello work
danielorlando97 Feb 22, 2022
21dd9d9
refactor v0 codegen
danielorlando97 Feb 22, 2022
9ab2455
refactor v0 codegen func name with class
danielorlando97 Feb 22, 2022
77f4992
finsh refactor
danielorlando97 Feb 22, 2022
5c0efce
escribiendoast
Feb 22, 2022
962a9aa
Merge branch 'master' of https://github.com/CeroMB/cool-compiler-2021
Feb 22, 2022
f98b5d5
escrast
Feb 22, 2022
baac653
fist misp
danielorlando97 Feb 22, 2022
d6a2fa2
ready print hello word init test
danielorlando97 Feb 22, 2022
8fa3ae8
add write .s
danielorlando97 Feb 22, 2022
5651f3d
fusion
Feb 23, 2022
eea912b
Merge branch 'master' of https://github.com/CeroMB/cool-compiler-2021
Feb 23, 2022
4f926a9
add comment
danielorlando97 Feb 23, 2022
c16b112
Merge branch 'master' of https://github.com/CeroMB/cool-compiler-2021
danielorlando97 Feb 23, 2022
d31111a
ready helloe work
danielorlando97 Feb 23, 2022
fba5745
ya hello wold
danielorlando97 Feb 23, 2022
df11740
com
Feb 23, 2022
bdf8fd0
Merge branch 'master' of https://github.com/CeroMB/cool-compiler-2021
Feb 23, 2022
a7897f5
cil compile ol test
danielorlando97 Feb 23, 2022
7779539
fib
Feb 23, 2022
5044147
Merge branch 'master' of https://github.com/CeroMB/cool-compiler-2021
Feb 23, 2022
1bb2bd9
refactor mpis
danielorlando97 Feb 23, 2022
b62718c
Merge branch 'master' of https://github.com/CeroMB/cool-compiler-2021
danielorlando97 Feb 23, 2022
972b491
miercoles con solo hello word
danielorlando97 Feb 23, 2022
f4dd7ed
refactor call
danielorlando97 Feb 24, 2022
1efe275
add report
danielorlando97 Feb 24, 2022
14b6210
creado test de mips
danielorlando97 Feb 24, 2022
26b1fd2
mipstest
Feb 24, 2022
2424b4b
Merge branch 'master' of https://github.com/CeroMB/cool-compiler-2021
Feb 24, 2022
9638a65
mipsss
Feb 24, 2022
e9135e7
megre
danielorlando97 Feb 24, 2022
38de961
Merge branch 'master' of https://github.com/CeroMB/cool-compiler-2021
danielorlando97 Feb 24, 2022
ba8a3c6
defasaje de la pila
danielorlando97 Feb 24, 2022
d36a3ed
mipsgen
Feb 24, 2022
19c1b87
nn
Feb 24, 2022
e938fb7
Merge branch 'master' of https://github.com/CeroMB/cool-compiler-2021
Feb 24, 2022
bcc01fb
refactor assing ra
danielorlando97 Feb 24, 2022
763a739
Merge branch 'master' of https://github.com/CeroMB/cool-compiler-2021
Feb 24, 2022
4714508
fib
Feb 24, 2022
48c2ae1
cambiando la pila
danielorlando97 Feb 24, 2022
0c72c60
Merge branch 'master' of https://github.com/CeroMB/cool-compiler-2021
danielorlando97 Feb 24, 2022
7b339a2
fib
danielorlando97 Feb 24, 2022
6d6da5d
refactor nodes
danielorlando97 Feb 24, 2022
be45bae
space
danielorlando97 Feb 24, 2022
e1c885e
cilo de mips
danielorlando97 Feb 24, 2022
3c61a17
palind
Feb 24, 2022
3c82d30
Merge branch 'master' of https://github.com/CeroMB/cool-compiler-2021
Feb 24, 2022
1a0806e
dslnas
danielorlando97 Feb 24, 2022
048c09b
3 test pass
danielorlando97 Feb 25, 2022
f6b0457
refactor type name
danielorlando97 Feb 25, 2022
3d0884d
al2
Feb 25, 2022
371ebef
al22
Feb 25, 2022
ca103ae
Merge branch 'master' of https://github.com/CeroMB/cool-compiler-2021
Feb 25, 2022
191eb3b
mira a ver
danielorlando97 Feb 25, 2022
8ea3647
Merge branch 'master' of https://github.com/CeroMB/cool-compiler-2021
Feb 25, 2022
13f90e6
los que faltan
danielorlando97 Feb 25, 2022
fff7ec9
ultimodia
Feb 25, 2022
378204e
Merge branch 'master' of https://github.com/CeroMB/cool-compiler-2021
Feb 25, 2022
b0c5b29
fladjnf
danielorlando97 Feb 25, 2022
a86768b
Merge branch 'master' of https://github.com/CeroMB/cool-compiler-2021
danielorlando97 Feb 25, 2022
3564f6c
bug en las comparaciones
danielorlando97 Feb 25, 2022
1bbad08
complemte
Feb 25, 2022
4db9616
Merge branch 'master' of https://github.com/CeroMB/cool-compiler-2021
Feb 25, 2022
edd4f12
refactor basics
danielorlando97 Feb 25, 2022
170d03c
fxdghjkl
Feb 25, 2022
fcfc4ef
Merge branch 'master' of https://github.com/CeroMB/cool-compiler-2021
danielorlando97 Feb 25, 2022
02d4b81
refactor los tipos basicos
danielorlando97 Feb 25, 2022
09cb5a3
kkk
Feb 25, 2022
95d33de
Merge branch 'master' of https://github.com/CeroMB/cool-compiler-2021
Feb 25, 2022
e893829
complex
danielorlando97 Feb 25, 2022
773370d
refactor native
danielorlando97 Feb 25, 2022
525a796
unio
Feb 25, 2022
f7e4c4f
Merge branch 'master' of https://github.com/CeroMB/cool-compiler-2021
Feb 25, 2022
ee2d01e
Merge branch 'master' of https://github.com/CeroMB/cool-compiler-2021
danielorlando97 Feb 25, 2022
22583f6
acm
danielorlando97 Feb 25, 2022
f6e014b
comparestr
Feb 25, 2022
28828d3
sa
danielorlando97 Feb 25, 2022
779a054
llkj
Feb 25, 2022
8eb6fd5
Merge branch 'master' of https://github.com/CeroMB/cool-compiler-2021
Feb 25, 2022
64a22a2
Merge branch 'master' of https://github.com/CeroMB/cool-compiler-2021
danielorlando97 Feb 25, 2022
b4a0abb
skjab
danielorlando97 Feb 26, 2022
a092c7c
error con el path
danielorlando97 Feb 26, 2022
8febee1
faltan 6
danielorlando97 Mar 1, 2022
978cad8
pull
Mar 1, 2022
ca50279
Merge branch 'mips' of https://github.com/CeroMB/cool-compiler-2021
Mar 1, 2022
e6b4201
refactor case
danielorlando97 Mar 1, 2022
cbe23ae
aaa
danielorlando97 Mar 1, 2022
37e2e1a
Merge branch 'mips' of https://github.com/CeroMB/cool-compiler-2021
Mar 1, 2022
819a431
Merge branch 'master' of https://github.com/CeroMB/cool-compiler-2021
Mar 1, 2022
ee9d639
sin info
danielorlando97 Mar 1, 2022
a249158
Merge branch 'master' of https://github.com/CeroMB/cool-compiler-2021
Mar 1, 2022
6564b0a
all_test
Mar 3, 2022
3074e08
informe
Mar 4, 2022
83d1178
finish info and add to pdf
danielorlando97 Mar 6, 2022
1e947a1
int_value
Mar 10, 2022
0a982f1
Merge branch 'master' of https://github.com/CeroMB/cool-compiler-2021
Mar 10, 2022
146e71b
Update Readme.md
danielorlando97 Nov 21, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
Binary file added .DS_Store
Binary file not shown.
Empty file modified .github/workflows/tests.yml
100644 → 100755
Empty file.
Empty file modified .gitignore
100644 → 100755
Empty file.
463 changes: 463 additions & 0 deletions .ipynb_checkpoints/cp1-checkpoint.ipynb

Large diffs are not rendered by default.

4 changes: 4 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"python.pythonPath": "/home/dany/.cache/pypoetry/virtualenvs/cmp-Jp0snq0--py3.8/bin/python",
"jupyter.jupyterServerType": "remote"
}
Empty file modified LICENSE
100644 → 100755
Empty file.
12 changes: 12 additions & 0 deletions Pipfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"

[packages]
sly = "*"

[dev-packages]

[requires]
python_version = "3.9"
28 changes: 28 additions & 0 deletions Pipfile.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

179 changes: 25 additions & 154 deletions Readme.md
100644 → 100755
Original file line number Diff line number Diff line change
@@ -1,172 +1,43 @@
# COOL: Proyecto de Compilación
# ⚙️ Compiler for COOL language

[![Tests](https://github.com/matcom-school/cool-compiler-2021/actions/workflows/tests.yml/badge.svg)](https://github.com/matcom-school/cool-compiler-2021/actions/workflows/tests.yml)

> Proyecto base para el compilador de 4to año en Ciencia de la Computación.

## Generalidades
## 🤔 What's it?

La 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
Universidad de La Habana, consiste este curso en la implementación de un compilador completamente
funcional para el lenguaje _COOL_.
Compiler for the COOL language, you can see its official documentation [here](https://github.com/matcom-school/cool-compiler-2021/tree/master/doc).
The COOL language is a static and strongly typed tool, with imperative syntax and influenced by
the object-oriented design pattern. In this project a compiler is developed that transforms
plain text code into executable [MIPS](https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwjr4bytrL_7AhXZi7AFHVj3D-QQFnoECAoQAQ&url=https%3A%2F%2Fwww.mips.com%2F&usg=AOvVaw0pNYEgrs30qfMWUUI1txqH)
code. To perform this transformation, the system is
composed of 4 main modules that represent the 4 main phases of language theory
(lexer, parser, semantic checking and code generation). \
**Principal Skills**: `Python` `Metaprogramming` `AST` `Visitor Pattern` `Sly` `MIPS`

_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.
## 🤓 Motivation

## Cómo comenzar (o terminar)
This project was developed as part of a compilation course at the University of Havana.
With the educational foundation of knowing the main aspects of a compiler or interpreter,
tools that developers use on a daily basis.

El 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:
## 🧐 How to use it?

### 1. Si no lo han hecho ya, regístrense en [Github](https://github.com) todos los miembros del equipo (es gratis).

![](img/img1.png)

### 2. Haga click en el botón **Fork** para hacer una copia del proyecto en el perfil de Github de uno de los miembros.

Opcionalmente pueden [crear una organización](https://github.com/organizations/new) y copiar el proyecto en el perfil de la misma.

![](img/img2.png)

### 3. Una vez hecho esto, tendrá un nuevo repositorio en `github/<usuario>`.

Revise que el repositorio de su equipo está en su perfil.
En este ejemplo se ha copiado a la cuenta de `github.com/apiad`.

Debe indicar bajo el nombre del repositorio: `"forked from matcom/cool-compiler-2021"`.

![](img/img3.png)

### 4. Clone este proyecto en un repositorio local.

Busque la URL de su proyecto en la interfaz web de Github.

Asegúrese de clonar **su copia** y no el proyecto original en `matcom/cool-compiler-2021`.

![](img/img4.png)

```bash
$ git clone git@github.com:<usuario>/cool-compiler-2021.git
```

> Donde `<usuario>` es posiblemente el nombre de su equipo o del miembro donde se hizo el _fork_.

A partir de este punto debe tener un proyecto `cool-compiler-2021` local.
El siguiente paso depende de si usted ya tiene su código versionado con `git` o no.

### 5.A. Si tiene su proyecto en git (y no quiere perder la historia):

#### 5.1. Mezcle hacia el nuevo respositorio su repositorio anterior:
First download the project

```bash
$ cd cool-compiler-2021
$ git pull --allow-unrelated-histories <my-old-compiler-project> master
```

#### 5.2. Organice su proyecto, código fuente y documentación, de acuerdo a las instrucciones de este documento, y vuelva a hacer `commit`.

```bash
$ mv <my-old-code> src/
$ git add .
$ git commit -a -m "Mezclado con el proyecto base"
```

#### 5.3. A partir de este punto puede hacer `push` cada vez que tenga cambios que subir.

```bash
$ git push origin master
$ git clone https://github.com/matcom-school/cool-compiler-2021.git
$ pip install -r requirements.txt
```

### 5.B Si aún no tiene su proyecto en git (o no le importa la historia):

#### 5.1. Simplemente copie el código de su proyecto en la carpeta correspondiente `src` y haga su primer commit.
Check that all tests are working properly

```bash
$ mv <my-old-code> src/
$ git commit -a -m "Hello Git!"
$ cd src
$ make test
```

#### 5.2. A partir de este punto asegúrese de hacer `commit` de forma regular para mantener su repositorio actualizado.

Si necesita saber más sobre `git`, todo lo imprescindible está en [esta guía](doc/github-git-cheat-sheet.pdf).

#### 5.3. A partir de este punto puede hacer `push` cada vez que tenga cambios que subir.
Then type your COOL code and save the changes in .cl and execute the following commands

```bash
$ git push origin master
$ make <name_file>.cl
```

## Entregas

En este proyecto se realizarán entregas parciales a lo largo del curso. Para realizar una entrega, siga los siguientes pasos.

### 1. Cree un pull request al proyecto original desde su copia.

![](img/img5.png)

### 2. Asegúrese de tener la siguiente configuración antes de hacer click en **Create pull request**.

- **base repository**: `matcom/cool-compiler-2021` (repositorio original)
- **branch**: `master`
- **head repository**: `<usuario>/cool-compiler-2021` (repositorio propio)
- **branch**: `master` (o la que corresponda)

> Asegúrese que se indica **Able to merge**. De lo contrario, existen cambios en el repositorio original que usted no tiene, y debe actualizarlos.

> **NOTA**: Asegúrese que el _pull request_ se hace a la rama `master`.

![](img/img6.png)

### 3. Introduzca un título y descripción adecuados, y haga click en **Create pull request**.

![](img/img7.png)

### 4. Espere mientras se ejecutan las pruebas.

Verá la indicación **Some checks haven't completed yet**.

![](img/img8.png)

Es 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:

> **This branch is out-of-date with base branch**

Haga click en **Update branch** y siga las instrucciones.
### 5. Verifique que no hubo errores en las pruebas.

Si ve el mensaje **(All | Some) checks have failed**, significa que su código no pasó las pruebas.

![](img/img9.png)

Para ver los resultados de las pruebas haga click en el link **Details**.

![](img/img10.png)


### 6. Arregle los errores y repita el paso 5 hasta que todas las pruebas pasen.

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

> **Por favor asegúrese de mantener un solo _pull request_ activo por equipo**. En caso de abrir uno nuevo, cerrar el anterior.

## Sobre la implementación

Ponga todo su código e instrucciones necesarias en la carpeta `src`. Más información en [`src/Readme.md`](src/Readme.md).

## Sobre la documentación

Usted 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).

## Sobre los equipos de desarrollo

Para desarrollar el compilador del lenguaje COOL se trabajará en equipos de 2 o 3 integrantes.

## Sobre los casos de prueba

La carpeta `tests` contiene todos los casos de prueba que son obligatorios de pasar para que su proyecto tenga derecho a ser evaluado.

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

Para ejecutar las pruebas localmente, debe tener instalado `Python 3.7`, `pip` y `make` (normalmente viene con Linux). Ejecute:

```bash
$ pip install -r requirements.txt
$ cd src
$ make test
```
Empty file modified doc/Readme.md
100644 → 100755
Empty file.
Loading