Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
teaching:cc4101:tareas:2016-2:tarea3 [2016/11/29 19:06] – [Run (6pt)] fmosso | teaching:cc4101:tareas:2016-2:tarea3 [2017/11/07 14:56] (current) – old revision restored (2016/11/30 16:16) folmedo | ||
---|---|---|---|
Line 4: | Line 4: | ||
Consulte las normas de entrega de tareas en http:// | Consulte las normas de entrega de tareas en http:// | ||
- | En esta tarea usted deberá implementar las funciones parse, interp y run usando su lenguaje **NO** funcional favorito, tal como Java o C. Independiente del lenguaje que utilice se mantienen las reglas de las tareas pasadas, es decir, todo método/ | + | En esta ocasión |
Ademas si usted no entrega el código fuente de su tarea obtendrá la nota mínima, por ejemplo si implementa la tarea en java, debe entregar todos los .java necesarios. | Ademas si usted no entrega el código fuente de su tarea obtendrá la nota mínima, por ejemplo si implementa la tarea en java, debe entregar todos los .java necesarios. | ||
Para claridad los lenguajes prohibidos son: Racket, Scheme, Lisp, Haskell, Scala, ML, OCaml, Coq, Idris, Agda, Rust y Erlang. | Para claridad los lenguajes prohibidos son: Racket, Scheme, Lisp, Haskell, Scala, ML, OCaml, Coq, Idris, Agda, Rust y Erlang. | ||
- | ====== Run (6pt)====== | ||
- | Su tarea recibirá un String como argumento; su tarea debe parsear, interpretar y retornar el resultado como un String. Su lenguaje debe ser capaz de soportar los mismos casos que el lenguaje visto en clases y se deberá caer en los mismos casos, note que los mensajes de error son un String, su tarea debe siempre retornar un String. | ||
- | Su lenguaje | + | Su tarea recibirá un String como argumento; su tarea debe parsear, interpretar |
- | A continuación se presenta la gramática BNF del lenguaje a implementar: | + | A continuación se presenta la gramática BNF del lenguaje a implementar |
+ | ====== Números (2pt)====== | ||
<code scheme> | <code scheme> | ||
< | < | ||
Line 20: | Line 19: | ||
| {- < | | {- < | ||
| {if0 < | | {if0 < | ||
- | | {with {<id> < | ||
- | | <id> | ||
- | | {fun {< | ||
- | | {seqn < | ||
- | | {set <id> < | ||
- | | {< | ||
</ | </ | ||
Line 35: | Line 28: | ||
- **'' | - **'' | ||
- | Al igual que en la tarea pasada, usted tiene total libertad en como implementar | + | Al igual que en la tarea pasada, usted tiene total libertad en como implementar |
+ | ====== Funciones (2pt)====== | ||
+ | |||
+ | Usted deberá extender su lenguaje con funciones de primera clase, estas deben tener régimen de evaluación eager y scope estático. Note que los mensajes de error son un String, su tarea debe siempre retornar un String. | ||
+ | |||
+ | <code scheme> | ||
+ | < | ||
+ | | {with {<id> < | ||
+ | | <id> | ||
+ | | {fun {< | ||
+ | | {< | ||
+ | |||
+ | </ | ||
Estos son los mensajes de error que debe lanzar su tarea: | Estos son los mensajes de error que debe lanzar su tarea: | ||
- " | - " | ||
- " | - " | ||
+ | ====== Secuencias y Set (2pt)====== | ||
+ | |||
+ | Usted deberá extender su lenguaje con secuencias y la capacidad de cambiar el valor de una variable, note que **NO** tiene que implementar cajas. | ||
+ | |||
+ | |||
+ | <code scheme> | ||
+ | < | ||
+ | | {seqn < | ||
+ | | {set <id> < | ||
+ | </ | ||
A continuación se presentan diferentes ejemplos: | A continuación se presentan diferentes ejemplos: |