@alu0100987522/constant-folding
v1.2.3
Published
Constant Folding javascript code
Downloads
3
Maintainers
Readme
constant-folding
CI for constant folding transformations.
Installation
Install globally
$ npm i -g @alu0100987522/constant-folding
Install as a dependency project
$ npm i -D @alu0100987522/constant-folding
Usage
Usage from CI:
General use
$ npx cf inputFile.js -o outputFile.js
--help
$ npx cf --help
Usage: cf [options] <filename>
Constant Folding javascript code
Arguments:
filename file with the original code
Options:
-V, --version output the version number
-o, --output <filename> specify a file to save the output (default: "output.js")
-h, --help display help for command
Usage from code:
const constantFolding = require('@alu0100987522/constant-folding');
You can finde more information about the functions that implement the constant folding here.
Examples
- code example:
const constantFolding = require('@alu0100987522/constant-folding');
console.log(constantFolding(`["a", "b", "c"][1*1];`)); // Output: 'b';
- CI example:
For this input.js:
We use:
npx cf input.js -o output.js
And we get the output in the output.js:
About the author and the package
This package was built and published by Aitor Hernández, [email protected], as a part of a lab from Procesadores de Lenguajes subject, in Universidad de La Laguna.
Tests
Tested in node 16x. version for Ubuntu, MacOs and Windows.
Tested with the javascript code that follows:
--- constantFolding tests ---
Works correctly for literals
✔ var f = 3+null; ==> var f = 3;
✔ var e = 4 | 3; ==> var e = 7;
✔ var d = 3+"c"; ==> var d = '3c';
✔ var b = 9 +1; ==> var b = 10;
✔ var a = 2+3*5+b; ==> var a = 17 + b;
Works correctly for operator []
✔ [1, 2, 3][0]; ==> 1;
✔ [1, 2, 3][2-1]; ==> 2;
✔ ["a", "b", "c"][2]; ==> 'c';
✔ ["a", "b", "c"][1*1]; ==> 'b';
✔ ["a", 1, 2][1+1]; ==> 2;
Works correctly for pop()
✔ [1, 2, 3].pop(); ==> 3;
✔ ["a","b","c"].pop(); ==> 'c';