Differences

This shows you the differences between two versions of the page.

Link to this comparison view

teaching:cc4101:tareas:2022-1:tarea2:parte0 [2022/05/04 15:55] – created tdiazteaching:cc4101:tareas:2022-1:tarea2:parte0 [2022/05/04 16:02] (current) – [Los lenguajes SL y CL] tdiaz
Line 13: Line 13:
 Un programa SL se ejecuta mediante una transformación a CL. En el código entregado, esta transformación es bastante trivial: convierte los nodos del AST del programa SL en nodos del AST de un programa CL. Su único rol es borrar la información de tipado, y convertir el ''with'' en una aplicación de lambda (CL no incluye ''with''). Un programa SL se ejecuta mediante una transformación a CL. En el código entregado, esta transformación es bastante trivial: convierte los nodos del AST del programa SL en nodos del AST de un programa CL. Su único rol es borrar la información de tipado, y convertir el ''with'' en una aplicación de lambda (CL no incluye ''with'').
  
-Los archivos que les entregamos incluyen: COMPLETE +Los archivos que les entregamos incluyen: {{ :teaching:cc4101:tareas:2022-1:tarea2:core-base.rkt |}}{{ :teaching:cc4101:tareas:2022-1:tarea2:surface-base.rkt |}} {{ :teaching:cc4101:tareas:2022-1:tarea2:env.rkt |}}.
-   * para SLdefinición de la sintaxisAST, parser, typechecker transformación a CL+
    * para CL: definición de la sintaxis, AST, parser, e intérprete    * para CL: definición de la sintaxis, AST, parser, e intérprete
 +   * para SL: definición de la sintaxis, AST, parser, typechecker y transformación a CL
  
 Note que el typechecker de SL opera de manera distinta a lo que vimos en la tarea anterior: la información de tipo se hace persistente en cada nodo del AST. Es decir, cada expresión (nodo del AST) lleva consigo información de su tipo, la cual se inicializa al valor ''#f'' tras realizar el parseo, y se rellena con el tipo correcto tras llamar a la función ''type-ast''. A continuación les ilustramos el resultado de cada paso, desde el parseo hasta la ejecución final. Note que el typechecker de SL opera de manera distinta a lo que vimos en la tarea anterior: la información de tipo se hace persistente en cada nodo del AST. Es decir, cada expresión (nodo del AST) lleva consigo información de su tipo, la cual se inicializa al valor ''#f'' tras realizar el parseo, y se rellena con el tipo correcto tras llamar a la función ''type-ast''. A continuación les ilustramos el resultado de cada paso, desde el parseo hasta la ejecución final.