| Both sides previous revisionPrevious revisionNext 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 bduarte | teaching:cc4101:tareas:2026-1:tarea2:bonus [2026/05/12 14:44] (current) – [Parte BONUS. Modificadores de with (1.0 pto)] msegur |
|---|
| 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 ===== |
| | {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>} |
| </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. |