Skip to content

ULL-ESIT-PL-1617/evaluar-analisis-de-ambito-alu0100880625

Repository files navigation

Aceptar Tarea

Descripción

Este es el PEG de partida::

start
  = comma

comma
  = assign COMMA comma
  / assign

assign
  = ID ASSIGN assign
  / additive

additive
  = multiplicative (ADDOP multiplicative)*

multiplicative
  = primary (MULOP primary)*

primary
  = integer
  / ID
  / LEFTPAR comma RIGHTPAR

args = !COMMA assign? (COMMA assign)*

params = (ID COMMA)* ID? RIGHTPAR

integer "integer"
  = NUMBER

_ = [ \t\n\r]* ("#" [^\n\r\u2028\u2029]*)*



ADDOP = PLUS / MINUS
MULOP = MULT / DIV
COMMA = _","_
PLUS = _"+"_
MINUS = _"-"_
MULT = _"*"_
DIV = _"/"_
LEFTPAR = _"("_
RIGHTPAR = _")"_
NUMBER = _ $[0-9]+ _
ID = _ $([a-z_]i$([a-z0-9_]i*)) _
ASSIGN = _ '=' _

Hitos

  1. Construya el árbol de análisis sintáctico abstracto
  2. Escriba una función genCode que recorra el árbol de análisis sintáctico abstracto retornado produciendo como salida una función javascript que computa las expresiones especificadas:
  3. Ejemplo de entrada:
a = 4,
b = 5+a,
c = 2*a
  1. Ejemplo de salida para la entrada anterior:
module.exports = () => {
  var sym = {};
  sym['a'] = 4,
  sym['b'] = 5+sym['a'],
  sym['c'] = 2*sym['a']
  return sym;
}
  1. Añada funciones y llamadas a función
  2. Modifique las pruebas para que comprueben el buen funcionamiento de su código
  3. Su fichero README.md debe contener su gramática final.

Recursos

[~/srcPLgrado/pegjs-calc-translate(master)]$ rake -T
rake clean    # rm grammar.js
rake compile  # Compile grammar.pegjs
rake exe      # Run main.js
rake run      # Run mainfromfile.js input1

About

evaluar-analisis-de-ambito-alu0100880625 created by GitHub Classroom

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published