Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
teaching:cc4101:tareas:2015-2:tarea3 [2015/10/17 23:40] – [(1.0) Índices De Bruijn] racruz | teaching:cc4101:tareas:2015-2:tarea3 [2016/03/25 18:42] (current) – old revision restored (2015/10/31 14:36) fmosso | ||
---|---|---|---|
Line 59: | Line 59: | ||
| | ||
> (deBruijn (add (num 1) (id 'x))) | > (deBruijn (add (num 1) (id 'x))) | ||
- | ;Arroja error " | + | ;Arroja error " |
</ | </ | ||
- | ==== (1.0) De AST a código de máquina ==== | + | ==== De AST a código de máquina ==== |
Vamos abordar la compilación del AST de una expresión al set de instrucciones de la SECD. | Vamos abordar la compilación del AST de una expresión al set de instrucciones de la SECD. | ||
A continuación se presenta el esquema de compilación que permite hacer el paso del lenguaje original a listas de instrucciones. Note que solo es el paso a notación polaca inversa: | A continuación se presenta el esquema de compilación que permite hacer el paso del lenguaje original a listas de instrucciones. Note que solo es el paso a notación polaca inversa: | ||
Line 83: | Line 83: | ||
{< x 10}} {+ 2 3}}))) | {< x 10}} {+ 2 3}}))) | ||
(list | (list | ||
- | | ||
| | ||
+ | | ||
(ADD) | (ADD) | ||
- | | + | |
- | | + | |
</ | </ | ||
En el ejemplo anterior se puede notar que los tipos que entiende la máquina no se crean con los constructores de '' | En el ejemplo anterior se puede notar que los tipos que entiende la máquina no se crean con los constructores de '' | ||
Line 93: | Line 93: | ||
* '' | * '' | ||
* '' | * '' | ||
- | - Implemente la función '' | + | - (1.0) Implemente la función '' |
===== (0.5) Sistemas de Tipos Simple ===== | ===== (0.5) Sistemas de Tipos Simple ===== | ||
En la tarea anterior se abordó el chequeo de tipos en el lenguaje de predicados. En esta ocasión extenderemos el chequeo de tipos de una expresión en presencia de funciones de primera clase. | En la tarea anterior se abordó el chequeo de tipos en el lenguaje de predicados. En esta ocasión extenderemos el chequeo de tipos de una expresión en presencia de funciones de primera clase. | ||
Line 111: | Line 111: | ||
Implemente la función '' | Implemente la función '' | ||
- | * La existencia de '' | + | * La existencia de '' |
* En la definición de función, el cuerpo puede ser subtipo del tipo declarado de salida de la función | * En la definición de función, el cuerpo puede ser subtipo del tipo declarado de salida de la función | ||
* En la aplicación de función, el tipo del argumento puede ser subtipo del tipo declarado del argumento de la función. | * En la aplicación de función, el tipo del argumento puede ser subtipo del tipo declarado del argumento de la función. | ||
Line 160: | Line 160: | ||
- Actualice la función '' | - Actualice la función '' | ||
> (compile (parse '{cast Num (and #t #f)})) | > (compile (parse '{cast Num (and #t #f)})) | ||
- | (list (BOOL_CONST #t) (BOOL_CONST #f) (AND) (CHECKCAST (MTNum))) | + | (list (BOOL_CONST #f) (BOOL_CONST #t) (AND) (CHECKCAST (MTNum))) |
</ | </ | ||
- Implemente la función '' | - Implemente la función '' |