Procesadores de Lenguajes

3º. 2º cuatrimestre. Itinerario de Computación. Grado en Ingeniería Informática. ULL


Organization ULL-ESIT-PL-1920   Github Classroom ULL-ESIT-PL-1920   Campus Virtual PL   Chat Chat   Profesor Casiano

Table of Contents

Retos

  1. Modifique la versión actual del lenguaje egg para que acepte como entrada este programa en examples/reto.egg:
  do {
    def(sum,  ; function
      -> { nums, 
        do {
           := (i, 0), # Creates a local variable i and sets to 0
           := (s, 0), # Creates local var s and sets to 0
           while { <(i, length(nums)),
             do { =(s, +(s, <-(nums, i))),
                =(i, +(i, 1))
             }
           },
           s
        }
     )
   },
   print(+("sum(array[1, 2, 3]) := ", sum(array[1, 2, 3])))
  }
  1. Introduzca una prueba en test/test.js que demuestre que una entrada como la de examples/scope-err.egg:
  do( 
    set(x,9),
    print(x) # ReferenceError: Tried setting an undefined variable: x
  )

produce una excepción de este estilo: SyntaxError: Unexpected input after reached the end of parsing 1: 5) ; Estudie la API de Should.js

  1. Introduzca una prueba en test/test.js que demuestre que una entrada como la de examples/number-as-fun-err.egg:
      4(5) ; Calling a number as a function
    

    produce una excepción

  2. Introduzca una prueba en test/test.js que demuestre que una entrada como la de examples/one.egg:
  do(
    define(x, 4),
    define(setx, fun(val, 
        set(x, val)
      )
    ),
    setx(50),
    print(x)
  )

produce una salida en stdout de 50.

  describe("run", function() {
    let originalLog;
    beforeEach(function() {
      originalLog = console.log;
      console.log = function (...args) { 
        ...
      };
    });
    // test code here
    afterEach(function() {
      ...
    });
    it("testing one.egg with mocking of console.log", function() {
      ...
    }
  }

Si quiere saber mas sobre stubbing estudie la librería sinon

Recursos

Notas para el profesor

Locally at branch private2019 at /Users/casiano/local/src/javascript/PLgrado/eloquentjsegg:

Your Comments

Comment with Disqus