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:41] – [(1.0) De AST a código de máquina] 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 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 '' |