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

Práctica: De Infijo a Egg usando PEG.js (p9-t4-peg-infix2egg)

Descripción

Re-escriba la fase de análisis sintáctico del lenguaje de infijo que diseñó en la práctica

usando PEG.js para re-escribir el analizador sintáctico.

En su parser irá:

Opciones del Compilador

Haga que el ejecutable admita opciones en línea de comandos. Algo parecido a esto:

  [.../p9-t4-peg-infix2egg-04-16-2020-03-18-25/davafons(master)]$ bin/infix2egg.js --help
  Usage: infix2egg [options]

  Options:
    -V, --version              output the version number
    -r --run <fileName>        compiles the input infix program and runs it using the egg interpreter
    -c --compile <fileName>    compile the infix program to produce a JSON containing the input egg AST
    -i --interpret <fileName>  interprets the egg AST
    -h, --help                 output usage information

Buenos módulos para parsear la línea de comandos son commander y yargs

Ejemplo de posible sintáxis

[.../p9-t4-peg-infix2egg-04-16-2020-03-18-25/davafons(master)]$ cat examples/array.pl
begin
  let emptyArray = [];
  call print(emptyArray);

  let x = [2, 3, [1, 2, 3]];
  call print(x[2][1]);

  x[2][1] = 100;
  call print(x[2]);
end

Ejecución:

[.../p9-t4-peg-infix2egg-04-16-2020-03-18-25/davafons(master)]$ bin/infix2egg.js -r examples/array.pl
[]
2
[ 1, 100, 3 ]
Return value: 1,100,3

Recursos

Your Comments

Comment with Disqus