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:2016-2:tarea3 [2016/11/30 13:27] – [Secuencias y Set (2pt)] fmossoteaching:cc4101:tareas:2016-2:tarea3 [2017/11/07 10:56] (current) – old revision restored (2016/11/30 16:16) folmedo
Line 4: Line 4:
 Consulte las normas de entrega de tareas en http://pleiad.cl/teaching/cc4101. Consulte las normas de entrega de tareas en http://pleiad.cl/teaching/cc4101.
  
-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/función debe tener su comentario y test. +En esta ocasión 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/función debe tener su comentario y test. 
  
 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. 
-====== Números (2pt)====== +
 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. 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.
  
-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 por partes (Números, Funciones, Secuencias y Set). 
 +====== Números (2pt)====== 
 <code scheme> <code scheme>
 <s-expr> ::= <num> <s-expr> ::= <num>
Line 27: Line 28:
   -  **''%%run :: String -> String%%''** que toma un programa fuente y retorna la representación en String del valor resultante.   -  **''%%run :: String -> String%%''** que toma un programa fuente y retorna la representación en String del valor resultante.
  
-Al igual que en la tarea pasada, usted tiene total libertad en como implementar la tarea.+Al igual que en la tarea pasada, usted tiene total libertad en como implementar cada una de estas funciones.
  
 ====== Funciones (2pt)====== ====== 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. También deben implementar variables, note que los mensajes de error son un String, su tarea debe siempre retornar un String. +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> <code scheme>
Line 45: Line 46:
   -  "error: identificador libre!! x" que se lanza al encontrar con un identificador libre 'x'    -  "error: identificador libre!! x" que se lanza al encontrar con un identificador libre 'x' 
   -  "error: expresión inválida expr" que se lanza al no poder interpretar 'expr', y esta no es ni un número ni una función.     -  "error: expresión inválida expr" que se lanza al no poder interpretar 'expr', y esta no es ni un número ni una función.  
- 
-A continuación se presentan diferentes ejemplos: 
- 
 ====== Secuencias y Set (2pt)====== ====== 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. 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> <code scheme>
Line 57: Line 56:
          | {set <id> <s-expr>}          | {set <id> <s-expr>}
 </code> </code>
 +
 +A continuación se presentan diferentes ejemplos:
  
 Ejemplos con Java: Ejemplos con Java: