Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
teaching:cc4101:tareas:2026-1:tarea2:bonus [2026/05/11 17:52] – [Parte BONUS. Modificadores de with (1.0 pto)] Reformulación enunciado bduarteteaching:cc4101:tareas:2026-1:tarea2:bonus [2026/05/12 14:44] (current) – [Parte BONUS. Modificadores de with (1.0 pto)] msegur
Line 14: Line 14:
 enlaza ''x'' con la promesa de evaluar ''{printn 10}'' cada vez que sea necesario. En este ejemplo, se debe imprimir ''10'' dos veces, y producir ''20''. enlaza ''x'' con la promesa de evaluar ''{printn 10}'' cada vez que sea necesario. En este ejemplo, se debe imprimir ''10'' dos veces, y producir ''20''.
  
-<note tip>Noten en particular que la sintaxis requiere indicar el tipo completo, esto va a simplificar las cosas</note>+<note tip>Nótese que la sintaxis requiere indicar el tipo completo, esto nos simplificará las cosas.</note>
  
 ==== Modificación de la gramática y parser ===== ==== Modificación de la gramática y parser =====
Line 25: Line 25:
          | {if0 <SL> <SL> <SL>}          | {if0 <SL> <SL> <SL>}
          ;ocupamos [] para denotar algo opcional (no se escriben los [])          ;ocupamos [] para denotar algo opcional (no se escriben los [])
-         | {with {<sym> [: <mod>] <SL>} <SL>+         | {with {<sym> [: <mtype>] <SL>} <SL>
          | <id>          | <id>
          | {<SL> <SL>}          | {<SL> <SL>}
Line 32: Line 32:
 </code> </code>
  
-Ahora ''with'' admite un modificador opcional que cambiará el modificador de tipo de la expresión nombrada al símbolo.+Ahora ''with'' admite un tipo opcional que especificará el método de evaluación de la expresión nombrada.
  
-  * (0.1 ptos) Cambie la sintaxis de la estructura ''swith'' para que admita un modificador+  * (0.1 ptos) Cambie la sintaxis de la estructura ''swith'' para que admita un tipo opcional
-  * (0.3 ptos) Modifique la función ''parse-sl'' para manejar los casos en que sí hay modificadore. En caso de no haber, puede usar ''#f'' como modificador por defecto. Recuerde manejar el caso ''value''+  * (0.3 ptos) Modifique la función ''parse-sl'' para manejar los casos en que sí hay tipos opcionales. En caso de no haber, puede usar ''#f'' como tipo por defecto. Recuerde manejar el caso ''{value <Type>}''
-  * (0.3 ptos) Modifique el caso ''swith'' en la función ''type-ast'' para que cambie el modificador de la expresión nombrada.+  * (0.3 ptos) Modifique el caso ''swith'' en la función ''type-ast'' para que cambie el método de evaluación de la expresión nombrada.
   * (0.3 ptos) Modifique el caso ''swith'' en la función ''transform'' para que se interprete de forma correcta la expresión nombrada.   * (0.3 ptos) Modifique el caso ''swith'' en la función ''transform'' para que se interprete de forma correcta la expresión nombrada.