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 '' | ||

