1.0.4 • Published 3 years ago

@alu0101204239/constant-folding v1.0.4

Weekly downloads
-
License
Unlicense
Repository
github
Last release
3 years ago

npm version CI for constant-folding

constant-folding

const constantFolding = require("@alu0101204239/constant-folding");
constantFolding(code, pattern);

Sobre la función principal

La función principal toma como entrada un código fuente de entrada ("code") en formato string, lo convierte a un árbol AST, y luego lo recorre buscando sentencias del tipo a=2+3 o "a", "b", "c".join(), y luego retorna el resultado de realizar dichas operaciones (constant folding).

La función busca un nodo del tipo indicado para saber qué caso es al que se le debe hacer constant folding. Por ejemplo:

if (node.name === 'pop') {
          salida = constantFoldingPop(codigoConvertido_a_AST);

Si el nodo que estamos analizando tiene como nombre pop, entonces estamos ante una sentencia del tipo "a", "b", "c".pop(), y por tanto, vamos a realizar la operación de constant folding para ese caso específico (constantFoldingPop()).

Funciones adicionales y su uso.

  • constantFoldingPop(): Esta función recibe el árbol AST como entrada y realiza la operación de constant folding sobre las sentencias del tipo "a", "b", "c".pop()
  • constantFoldingJoin(): Esta función recibe el árbol AST como entrada y realiza la operación de constant folding sobre las sentencias del tipo "a", "b", "c".join()
  • constantFoldingReverse(): Esta función recibe el árbol AST como entrada y realiza la operación de constant folding sobre las sentencias del tipo "a", "b", "c".reverse()

Author

Moisés Antonio Pestano Castro (alu0101204239)

Tests

npm test