Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
teaching:cc4101:tareas:2025-1:tarea1b [2025/04/07 19:04] – [Checkeo Estático de Tipos] msegur | teaching:cc4101:tareas:2025-1:tarea1b [2025/04/09 13:48] (current) – [Tarea 1b (Entrega: 20 de Abril de 2025)] dibanez | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Tarea 1b (Entrega: | + | ====== Tarea 1b (Entrega: |
==== Lenguaje con tipos estáticos ==== | ==== Lenguaje con tipos estáticos ==== | ||
Line 26: | Line 26: | ||
</ | </ | ||
- | ===== Parte 1. Lenguaje con funciones de primer orden (1.5 ptos.) ===== | + | ===== Parte 1. Lenguaje con funciones de primer orden [1.5 pts.] ===== |
- | En esta parte, vamos a implementar un lenguaje que incluye primitivas útiles (números, booleanos, pares, y operadores simples), identificadores locales ('' | + | En esta parte, vamos a implementar un lenguaje que incluye primitivas útiles (números, booleanos, pares, y operadores simples), identificadores locales ('' |
La gramática BNF del lenguaje se define a continuación: | La gramática BNF del lenguaje se define a continuación: | ||
Line 37: | Line 37: | ||
< | < | ||
- | | <sym> | + | | <id> |
| < | | < | ||
| {cons < | | {cons < | ||
Line 52: | Line 52: | ||
| {if < | | {if < | ||
| {with {< | | {with {< | ||
- | | {<sym> < | + | | {<id> < |
- | < | + | < |
</ | </ | ||
Line 66: | Line 66: | ||
(numV n) | (numV n) | ||
(boolV b) | (boolV b) | ||
- | (pairV | + | (pairV |
) | ) | ||
</ | </ | ||
Line 188: | Line 188: | ||
Teniendo en cuenta todo lo descrito anteriormente, | Teniendo en cuenta todo lo descrito anteriormente, | ||
- | - **[1.2 pts]** '' | + | - **[1.2 pts]** '' |
- **[0.3 pts]** '' | - **[0.3 pts]** '' | ||
- | ----- | + | |
+ | ---- | ||
===== Parte 2. Verificación estática de tipos (2.5 ptos.) ===== | ===== Parte 2. Verificación estática de tipos (2.5 ptos.) ===== | ||
Line 285: | Line 286: | ||
* Para '' | * Para '' | ||
* En la aplicación de función se valida que el número de argumentos coincide, y que el tipo de los argumentos coincide con los tipos esperados de la función aplicada. El tipo resultante de una aplicación es el tipo de retorno de la función aplicada. | * En la aplicación de función se valida que el número de argumentos coincide, y que el tipo de los argumentos coincide con los tipos esperados de la función aplicada. El tipo resultante de una aplicación es el tipo de retorno de la función aplicada. | ||
+ | * Note que, cada expresión solo necesita ser checkeada una sola vez, incluso los cuerpos de las funciones. | ||
**Para los errores**: | **Para los errores**: |