{"_id":"@alu0100973914/eloquentjsegg","_rev":"13-1ea634ad2908be0d3c1d0143f3370144","name":"@alu0100973914/eloquentjsegg","dist-tags":{"latest":"1.6.4"},"versions":{"1.3.0":{"name":"@alu0100973914/eloquentjsegg","version":"1.3.0","description":"* [Eloquent JS. Chapter 11. Project: A Programming Language](http://eloquentjavascript.net/11_language.html) * Continuation of [this repository](https://github.com/ULL-ESIT-PL-1617/egg.git)","main":"index.js","scripts":{"test":"mocha","start":"./bin/egg.js","compile":"./bin/eggc.js examples/two.egg && ./bin/evm.js examples/two.egg.evm"},"bin":{"egg":"./bin/egg.js","eggc":"./bin/eggc.js","evm":"./bin/evm.js"},"repository":{"type":"git","url":"git+https://github.com/ULL-ESIT-PL-1718/egg-2-alu0100973914.git"},"keywords":["parsing","lisp"],"author":{"name":"alu0100973914"},"license":"ISC","bugs":{"url":"https://github.com/ULL-ESIT-PL-1718/egg-2-alu0100973914/issues"},"homepage":"https://github.com/ULL-ESIT-PL-1718/egg-2-alu0100973914#readme","devDependencies":{"gulp-shell":"^0.6.5","mocha":"*","should":"^13.2.1","xregexp":"^3.2.0","chai":"*","mocha-sinon":"*","sinon":"*"},"gitHead":"a25dba2d187682da700e4f8c66e1f273e8d8cc0c","_id":"@alu0100973914/eloquentjsegg@1.3.0","_npmVersion":"5.6.0","_nodeVersion":"9.5.0","_npmUser":{"name":"alu0100973914","email":"alu0100973914@ull.edu.es"},"dist":{"integrity":"sha512-LA/egXrSULcA8UcXSsYwt96pTwTqMMIZcWozKMXVMKkahTh9z6SHpD/5pcByGi6Z34Wk5MvYgBY6DsblN6Rbiw==","shasum":"890c2dfdf657182c851d810a76351466f784bc3f","tarball":"https://registry.npmjs.org/@alu0100973914/eloquentjsegg/-/eloquentjsegg-1.3.0.tgz","fileCount":47,"unpackedSize":40062,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC8YJGvGCgpZrKJraGjM9lQ/EywOcTorW5iJtSidAaD3wIgOgQC8dnN70Q7xbx+30yRb0cTj92ISFaHmzhS5istRbY="}]},"maintainers":[{"name":"alu0100973914","email":"alu0100973914@ull.edu.es"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/eloquentjsegg_1.3.0_1522139843354_0.8246545244705716"},"_hasShrinkwrap":false},"1.3.1":{"name":"@alu0100973914/eloquentjsegg","version":"1.3.1","description":"* [Eloquent JS. Chapter 11. Project: A Programming Language](http://eloquentjavascript.net/11_language.html) * Continuation of [this repository](https://github.com/ULL-ESIT-PL-1617/egg.git)","main":"index.js","scripts":{"test":"mocha","start":"./bin/egg.js","compile":"./bin/eggc.js examples/two.egg && ./bin/evm.js examples/two.egg.evm"},"bin":{"egg":"./bin/egg.js","eggc":"./bin/eggc.js","evm":"./bin/evm.js"},"repository":{"type":"git","url":"git+https://github.com/ULL-ESIT-PL-1718/egg-2-alu0100973914.git"},"keywords":["parsing","lisp"],"author":{"name":"alu0100973914"},"license":"ISC","bugs":{"url":"https://github.com/ULL-ESIT-PL-1718/egg-2-alu0100973914/issues"},"homepage":"https://github.com/ULL-ESIT-PL-1718/egg-2-alu0100973914#readme","devDependencies":{"gulp-shell":"^0.6.5","mocha":"*","should":"^13.2.1","xregexp":"^3.2.0","chai":"*","mocha-sinon":"*","sinon":"*"},"gitHead":"950ae1076df1c1bb227b12c1b006eb3204f68952","_id":"@alu0100973914/eloquentjsegg@1.3.1","_npmVersion":"5.6.0","_nodeVersion":"9.5.0","_npmUser":{"name":"alu0100973914","email":"alu0100973914@ull.edu.es"},"dist":{"integrity":"sha512-jyAkQA5k9f6dj1g70GblZSH6oe616LHht+ug4CnMxtmn3XWeDbjGBXCfbyZSzwvytTMNLo8kkWdr12XysS7GYw==","shasum":"15f215724a94b45d45cbe4a7e6c5ced61ac9cc23","tarball":"https://registry.npmjs.org/@alu0100973914/eloquentjsegg/-/eloquentjsegg-1.3.1.tgz","fileCount":48,"unpackedSize":99518,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDg99VjwOom1AiuGNuKng/PVjlr+Zrzx0glnLZ0i4LnpAiBEp0hfEJ1KSeKtM6jvGQn4fPYtu95ITlrl9adB99EimA=="}]},"maintainers":[{"name":"alu0100973914","email":"alu0100973914@ull.edu.es"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/eloquentjsegg_1.3.1_1522338780711_0.9093837494504011"},"_hasShrinkwrap":false},"1.4.0":{"name":"@alu0100973914/eloquentjsegg","version":"1.4.0","description":"* [Eloquent JS. Chapter 11. Project: A Programming Language](http://eloquentjavascript.net/11_language.html) * Continuation of [this repository](https://github.com/ULL-ESIT-PL-1617/egg.git)","main":"index.js","scripts":{"test":"mocha","start":"./bin/egg.js","compile":"./bin/eggc.js examples/two.egg && ./bin/evm.js examples/two.egg.evm"},"bin":{"egg":"./bin/egg.js","eggc":"./bin/eggc.js","evm":"./bin/evm.js"},"repository":{"type":"git","url":"git+https://github.com/ULL-ESIT-PL-1718/egg-3-alu0100973914.git"},"keywords":["parsing","lisp"],"author":{"name":"alu0100973914"},"license":"ISC","bugs":{"url":"https://github.com/ULL-ESIT-PL-1718/egg-3-alu0100973914/issues"},"homepage":"https://github.com/ULL-ESIT-PL-1718/egg-3-alu0100973914#readme","devDependencies":{"gulp-shell":"^0.6.5","mocha":"*","should":"^13.2.1","xregexp":"^3.2.0","chai":"*","mocha-sinon":"*","sinon":"*"},"gitHead":"ca05bd4e75061a2eba96baa7e7cd018e1c650a36","_id":"@alu0100973914/eloquentjsegg@1.4.0","_npmVersion":"5.6.0","_nodeVersion":"9.5.0","_npmUser":{"name":"alu0100973914","email":"alu0100973914@ull.edu.es"},"dist":{"integrity":"sha512-nzmU+9N2WwZNYY5Da/FVM6YVsuWGZ1HaOD0scibI5bsPKsxNLx5IYyQVpM0aEezELgTthrzioCo86iGfRz5uWw==","shasum":"169cd2cc12c867c7e05f41b79b2d5a50f3d08c0f","tarball":"https://registry.npmjs.org/@alu0100973914/eloquentjsegg/-/eloquentjsegg-1.4.0.tgz","fileCount":75,"unpackedSize":119497,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCveoMewmHvBfR+QBvtjnKk5Vgx8tYZTW/skd2UadiKyQIhAOxCIpBVmesP+Ne/pEj+n5PqoNsO7JkjB3ISvuEBynt8"}]},"maintainers":[{"name":"alu0100973914","email":"alu0100973914@ull.edu.es"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/eloquentjsegg_1.4.0_1523563616046_0.7257108883369354"},"_hasShrinkwrap":false},"1.5.0":{"name":"@alu0100973914/eloquentjsegg","version":"1.5.0","description":"* [Eloquent JS. Chapter 11. Project: A Programming Language](http://eloquentjavascript.net/11_language.html) * Continuation of [this repository](https://github.com/ULL-ESIT-PL-1617/egg.git)","main":"index.js","scripts":{"test":"mocha","start":"./bin/egg.js","compile":"./bin/eggc.js examples/two.egg && ./bin/evm.js examples/two.egg.evm"},"bin":{"egg":"./bin/egg.js","eggc":"./bin/eggc.js","evm":"./bin/evm.js"},"repository":{"type":"git","url":"git+https://github.com/ULL-ESIT-PL-1718/egg-4-alu0100973914.git"},"keywords":["parsing","lisp"],"author":{"name":"alu0100973914"},"license":"ISC","bugs":{"url":"https://github.com/ULL-ESIT-PL-1718/egg-4-alu0100973914/issues"},"homepage":"https://github.com/ULL-ESIT-PL-1718/egg-4-alu0100973914#readme","devDependencies":{"gulp-shell":"^0.6.5","mocha":"*","should":"^13.2.1","xregexp":"^3.2.0","chai":"*","mocha-sinon":"*","sinon":"*"},"gitHead":"ac4aed7a8b5843a3aab514d6a160ac892d34f8fc","_id":"@alu0100973914/eloquentjsegg@1.5.0","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"alu0100973914","email":"alu0100973914@ull.edu.es"},"dist":{"integrity":"sha512-8LFuqzK53eN0wQGBzahWTYCoYJutLxKMd/UpD9fuZNm5eOZXhhdtqPW6bSaKhP0gQd6rktVeStnLXUhXSX5oZg==","shasum":"b5b88475e916249db50606cd246510fc7f74b9e6","tarball":"https://registry.npmjs.org/@alu0100973914/eloquentjsegg/-/eloquentjsegg-1.5.0.tgz","fileCount":97,"unpackedSize":145386,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa4ifaCRA9TVsSAnZWagAAA5gP/RnUhgFMZN405hjlvlKS\nY4RiW8ZGVrer3AKtWlR0sZ/z4SOaxm2Wsw/yZLm6lFabry445m+UJjgDUCde\nWqX8fspFs5XcnsyrmhpA6acYc+tfJQinK9SZlvBahC3LhKFmxf2KaFXYvmDb\nwAlDrC+MaAxf2oZWcdIGw67DxAFAj/hQh1QiILsW9Eb+XOBxtmh+gZ4VkXyM\nrZogJQVWLcDIuxby02Wlhx77AywknjkVNANceWLbeHCGZbYUNyJOFo9NWjq4\nIGrct++1+/5md7UAndw1OdU81W2tXMXATH83XE0Lg6uWkhfVj5YBtE7iabcV\nch4CEhdzRZXktHcVV0FAfYwiZrczbCQKxKVXKlFDtsjrudJKiOItzzaSNQxm\nQjiHhNf9MJvmN1rTjKzKHZVm31ylMDXyUxBrsq1jOvtOUB8RwyQkP1JaPgge\ngeqhPG440W9MUcwFxP0TzeJiL31JMoTFpBwGqoEE5Emg2225w4A+oamvaO0R\nx5ugShz6433NaKlLqIMa7vg4sY2AomXkGTwJegog4Qy/V7fxjorQcQrIbyQw\npjpSWcngQ7NqASWxFpnW2oDRk5DPVgqhYbj4W+TbBwEqVSOE54EUQPFsXr6D\nt3CqV7iSdGQ5uvEezOsgSeoCakMTdhAjUQ4S9jnHKL8Kne/Gx94ACwVjUYrg\nORzr\r\n=/J4b\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD0kTBbPoMD5FOqU3mRfAm8JesDj+c2hTVt2yWd7FDOYwIhAOH153MTIL4OM6zqsUuE3tzXx3O8dOLcrETCAEWmHDoM"}]},"maintainers":[{"name":"alu0100973914","email":"alu0100973914@ull.edu.es"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/eloquentjsegg_1.5.0_1524770777028_0.6886639120776614"},"_hasShrinkwrap":false},"1.5.1":{"name":"@alu0100973914/eloquentjsegg","version":"1.5.1","description":"* [Eloquent JS. Chapter 11. Project: A Programming Language](http://eloquentjavascript.net/11_language.html) * Continuation of [this repository](https://github.com/ULL-ESIT-PL-1617/egg.git)","main":"index.js","scripts":{"test":"mocha","start":"./bin/egg.js","compile":"./bin/eggc.js examples/two.egg && ./bin/evm.js examples/two.egg.evm"},"bin":{"egg":"./bin/egg.js","eggc":"./bin/eggc.js","evm":"./bin/evm.js"},"repository":{"type":"git","url":"git+https://github.com/ULL-ESIT-PL-1718/egg-4-alu0100973914.git"},"keywords":["parsing","lisp"],"author":{"name":"alu0100973914"},"license":"ISC","bugs":{"url":"https://github.com/ULL-ESIT-PL-1718/egg-4-alu0100973914/issues"},"homepage":"https://github.com/ULL-ESIT-PL-1718/egg-4-alu0100973914#readme","devDependencies":{"gulp-shell":"^0.6.5","mocha":"*","should":"^13.2.1","xregexp":"^3.2.0","chai":"*","mocha-sinon":"*","sinon":"*"},"gitHead":"88c2aee075b0366c7f6e0c90b1eebbcc463d8afb","_id":"@alu0100973914/eloquentjsegg@1.5.1","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"alu0100973914","email":"alu0100973914@ull.edu.es"},"dist":{"integrity":"sha512-FLL1IYDYTzZ4KE57Gp5abhdplKh82zE1EpllRbB7sM2ETPRMKXDtRFDJuw+KdQcZpexasQLnTMD1MZRgd2KcCw==","shasum":"351e79ad24292cb5aab470dee2fa28b04225a24d","tarball":"https://registry.npmjs.org/@alu0100973914/eloquentjsegg/-/eloquentjsegg-1.5.1.tgz","fileCount":97,"unpackedSize":145388,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa4ikpCRA9TVsSAnZWagAAZAsP/35TV7IcxBf36cuD7QzI\n4IXQJK+Igtwut3Wfz1pYSyRLYtU3LH+7H2rwjRjpNsrd8eZ8zfixkGMgqlOT\nengMnbxqe+IuOUSEC8mHQ7/bSxSz+q0NMRBaOPPS8WLadr07G0bdqFiw6RU4\nZns8x6K1Fo4mQfcRaLjBoisPOeG6tyy7dyStgDkOXKJXkzY7PX9niNJEqxAr\nYmBpqCnfc61zTrw87xLdXNwROJejmOVs8q+XwQgrgvn0ztG45IN4bjexzQ/q\nRYp22aF4gwKdWZwzHjCGhn0CrpToAENzLZ+WeU5RVrn6AR9lT1JbQEiZaKfE\nslxXAw6H9QTzi6EfPZ56x04iz1EP/RsbBqg2dQW172IYketXYInnrhMk0kw+\nq9bA1yMYudEDiJ19NI9ZYPySfDvFdR3rgZ+FEhOA2sLMLuav5BHJ76kS5z7b\nVTUuEeR1homjppyhVB4eslt3E2SI/piRSRneyo5e+D56A+WiwCICwxkeGFWH\nietd1k042edt881WBxIYA62ct+0s/Qf9/NLqUOwfa7vVMFiqT42VHLSw6vFK\ns2My4UvD1NfwXi+n5lOogtKb7Szs907gX7hR/RTqCMeRRcisBoNKTutT1/L5\nDabNpDxkcuiPvnfCW66A+3fBd2EUOANP0y+36VkROMR1AdtfnVjh3IBgLHtt\nkBS+\r\n=lCib\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC8H6XFjd8OfkCqHD/49I+63h4uuJtxC+6+sN/GVkuEIwIhAMu1lDmHxhiXhc7lYC/yM2Yjn++3EwQANMY5J5Q7sHfE"}]},"maintainers":[{"name":"alu0100973914","email":"alu0100973914@ull.edu.es"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/eloquentjsegg_1.5.1_1524771112765_0.058831995205433696"},"_hasShrinkwrap":false},"1.5.2":{"name":"@alu0100973914/eloquentjsegg","version":"1.5.2","description":"* [Eloquent JS. Chapter 11. Project: A Programming Language](http://eloquentjavascript.net/11_language.html) * Continuation of [this repository](https://github.com/ULL-ESIT-PL-1617/egg.git)","main":"index.js","scripts":{"test":"mocha","start":"./bin/egg.js","compile":"./bin/eggc.js examples/two.egg && ./bin/evm.js examples/two.egg.evm"},"bin":{"egg":"./bin/egg.js","eggc":"./bin/eggc.js","evm":"./bin/evm.js"},"repository":{"type":"git","url":"git+https://github.com/ULL-ESIT-PL-1718/egg-4-alu0100973914.git"},"keywords":["parsing","lisp"],"author":{"name":"alu0100973914"},"license":"ISC","bugs":{"url":"https://github.com/ULL-ESIT-PL-1718/egg-4-alu0100973914/issues"},"homepage":"https://github.com/ULL-ESIT-PL-1718/egg-4-alu0100973914#readme","devDependencies":{"gulp-shell":"^0.6.5","mocha":"*","should":"^13.2.1","xregexp":"^3.2.0","chai":"*","mocha-sinon":"*","sinon":"*"},"gitHead":"c12c6929ecee54dda97bde76ce8b1c48c2a8446f","_id":"@alu0100973914/eloquentjsegg@1.5.2","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"alu0100973914","email":"alu0100973914@ull.edu.es"},"dist":{"integrity":"sha512-6HsGxUSAaJwT+BoVsaReHgd3//4CLGGAgeeXhyz7P3UoTQMN/NbibAV+zOmdhvQ8brmbeRs7mRYw1pBbT21z2Q==","shasum":"f694916fa041123d3aef8c68be69ed06d08ae81d","tarball":"https://registry.npmjs.org/@alu0100973914/eloquentjsegg/-/eloquentjsegg-1.5.2.tgz","fileCount":98,"unpackedSize":146656,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa6xDvCRA9TVsSAnZWagAAGzIQAJlZOT6fDXYIC2HAe545\nCXVc/23GPGUyMLqI3jKe3HxKeGQxJdiRqvo4WNycTSy668uk5u2LG6lH6kmy\nESIcDzqzrGLJGNh/UoOv7MfHRdr7DtxMc9QzrVQgqj3ab4i0RVlUtnry2PYo\nMPl2rrVj/6XgUNiQ3YKBAF3xfyW2F7l8Xj5WDKsasZzE4L9N3VFJmqoTHK/q\nOBa8h5UWd2/1YhATED80AGmNMDy/QntDUCMRlNKaCWuvgTht+sh3vsTSSpEz\nFjiChaM3BHazqY0/XZVeCHaVJkiJqKJt3l3Wva8LQyCt68Tw7fLPRQT6GOSz\nJ0iNtlhJenLd2gdclRcT0USvp8NOny/rd7WAAef/ugUTRS0hDUcSSFWrTuuG\nG7wdNu9r7EjjToyxy7/9KHrbabr2z88AlaLoBHxGdFi0ezMAyuz+RQmqmMZ2\nHDrMj+AiHutvOoZ2L074TklWt1lalJ/ED8E3J/LpD10suZpXyJmUomhESpyd\n6MBNaRjXIT43/1C8dHdXxK9J8MwrvloFWOfNSDVg/wM8T28YJ+t9LeDahc64\ndK+y1S51RLYW+vUiNRovpuivFVlLVl3XK9lzQow5ILWS+Pw0EbZjqeJMjJQo\nb8ia/gzV7TeB4hT/ZhsXYswXphobX9n3CHJ2MzCUGpSSOqEYUM4xzcUYVREB\nq0fb\r\n=JuVR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDiZOb1Dmp1GrH7vaHvf03DnOd9vOrYgkkEN1mylegMCgIhAMYk0VUkb+MPigmIQQqYUe4eB8WEpi+MZKQ9R7YHU5ZS"}]},"maintainers":[{"name":"alu0100973914","email":"alu0100973914@ull.edu.es"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/eloquentjsegg_1.5.2_1525354734033_0.5116243751929508"},"_hasShrinkwrap":false},"1.5.3":{"name":"@alu0100973914/eloquentjsegg","version":"1.5.3","description":"* [Eloquent JS. Chapter 11. Project: A Programming Language](http://eloquentjavascript.net/11_language.html) * Continuation of [this repository](https://github.com/ULL-ESIT-PL-1617/egg.git)","main":"index.js","scripts":{"test":"mocha","start":"./bin/egg.js","compile":"./bin/eggc.js examples/two.egg && ./bin/evm.js examples/two.egg.evm"},"bin":{"egg":"./bin/egg.js","eggc":"./bin/eggc.js","evm":"./bin/evm.js"},"repository":{"type":"git","url":"git+https://github.com/ULL-ESIT-PL-1718/egg-4-alu0100973914.git"},"keywords":["parsing","lisp"],"author":{"name":"alu0100973914"},"license":"ISC","bugs":{"url":"https://github.com/ULL-ESIT-PL-1718/egg-4-alu0100973914/issues"},"homepage":"https://github.com/ULL-ESIT-PL-1718/egg-4-alu0100973914#readme","devDependencies":{"gulp-shell":"^0.6.5","mocha":"*","should":"^13.2.1","xregexp":"^3.2.0","chai":"*","mocha-sinon":"*","sinon":"*"},"gitHead":"435a274a86e83841638cb165e6362e7dc9c1093a","_id":"@alu0100973914/eloquentjsegg@1.5.3","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"alu0100973914","email":"alu0100973914@ull.edu.es"},"dist":{"integrity":"sha512-C27OfxxWzavn45T3fSiiAX/w3OuY4C50EnuhrfjtY1q7BuJUGTW8C+9r3BqYDZscjPCggsPuiMpWqdQhBy55Kw==","shasum":"b89f692f85590df7c7d18a045eaae36b481cf9fc","tarball":"https://registry.npmjs.org/@alu0100973914/eloquentjsegg/-/eloquentjsegg-1.5.3.tgz","fileCount":98,"unpackedSize":146680,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa64JkCRA9TVsSAnZWagAAV24P/Rk+tvqr1f0syAVFkSle\nPw3pgQAezYApKKWAgvUIAj3Qmu57NkhtWWPUWf//E0Ca5Y8fs5ADGHabP6RI\nDTNNOXEKmWpoIQgTkVzOXo/UK0kIA37OgLN1eFs7ouHZ9yNlsxzlAA66m2OS\nw/gBcXrlTGXhykEFBmCD/WcrmE4oadjoWTdr908rllej6SOq+KCf88Oe+A5r\nR1PBc+vgiHyGNhffAcMowoou0p6c/eNGaA15ioIcqc/QJJpwSvGLisKsfr9W\nXoKY5Hn8lf7WywZY5CBI2NxuJisoFufFrYqYzoEhBOpzV7DUaqvMu9QD421n\n2hrvROGKFvtrQisC2O3xobdrWF2oYP2uUA1jarteWibTyS4zOVyThM9Hzfoy\ngOzX2sZt7PmYo8RBNen5Vl4fP4Rma+1VAYN7hlRkSZbetWbMG29fg0OVwwWr\nLtKy2KV26iF2SDV39AKq+yVuB4zHeP6gMl/2FPJwCqDWtuQ2pJKGRPnsON0c\nKsS9NMCCogsQTyihxHVT5HBLaz+xsiXOTlCBhgbvWSqkmtgRNICpUnCNInmI\nzLek+iSwFjGG/ZzGmEnBUq/XuDiiNj8TVmA9owTdu6UKsWrk0E4glD+sLzIA\n2xxJ+DFxUxGcQ5Lt/8ZiGm5JfaHmU1nCFANCWSoCOZN6TKrXbhivibYpSsIl\neQIO\r\n=s5PR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICKNjVzNXvUAbfNSF9HzsgPv3j0hNrZX2PlmhFIiMVR5AiEAmhgNASAmn9ovjvXNlR6/l7Dlk6/u5mc2LZHCuit3TYM="}]},"maintainers":[{"name":"alu0100973914","email":"alu0100973914@ull.edu.es"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/eloquentjsegg_1.5.3_1525383779630_0.021563171500442735"},"_hasShrinkwrap":false},"1.6.0":{"name":"@alu0100973914/eloquentjsegg","version":"1.6.0","description":"* [Eloquent JS. Chapter 11. Project: A Programming Language](http://eloquentjavascript.net/11_language.html) * Continuation of [this repository](https://github.com/ULL-ESIT-PL-1617/egg.git)","main":"index.js","scripts":{"test":"mocha","start":"./bin/egg.js","compile":"./bin/eggc.js examples/two.egg && ./bin/evm.js examples/two.egg.evm"},"bin":{"egg":"./bin/egg.js","eggc":"./bin/eggc.js","evm":"./bin/evm.js"},"repository":{"type":"git","url":"git+https://github.com/ULL-ESIT-PL-1718/egg-4-alu0100973914.git"},"keywords":["parsing","lisp"],"author":{"name":"alu0100973914"},"license":"ISC","bugs":{"url":"https://github.com/ULL-ESIT-PL-1718/egg-4-alu0100973914/issues"},"homepage":"https://github.com/ULL-ESIT-PL-1718/egg-4-alu0100973914#readme","devDependencies":{"gulp-shell":"^0.6.5","mocha":"*","should":"^13.2.1","xregexp":"^3.2.0","chai":"*","mocha-sinon":"*","sinon":"*"},"gitHead":"25d305fba1896043b667816d7afbcd6bbefbbd22","_id":"@alu0100973914/eloquentjsegg@1.6.0","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"alu0100973914","email":"alu0100973914@ull.edu.es"},"dist":{"integrity":"sha512-L5vOtKXnxM3dZDZ7Inx3K1DosjZbpe6AZce2gvNliowXbyK3mpBnj330AL4/m6VdcIydohmpGYRlHUx3MLwF5g==","shasum":"7baf99997fb3b1e031bd46afbc95fe52f47dc588","tarball":"https://registry.npmjs.org/@alu0100973914/eloquentjsegg/-/eloquentjsegg-1.6.0.tgz","fileCount":98,"unpackedSize":146692,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa64MQCRA9TVsSAnZWagAAxX4P/0sUVbNQfxo4/F+IlrKa\nSsdQMt/4QJDcfnGNpYDpyigJabRLZwVZ4CIVh0CJCYhaO9f4nb4KIDffvEfc\nnCj3csCkv/5CYny0iEAwMz2w0DgdkBSEr5nvCWcDJfvBXhsjSHjKp7qFWSki\nTIHq247hD+hze5dg23gjl2a0eMgoEsDktQs9xHQRhSBZ38g5vYNdmWASG7Ez\nfalqJRyHXltIgvHkcLCsdcQ1Qj18P1Bq7jV3XietfuErF3TydKHi2DJUuceg\nVsB2JFmtCYursiottJh48DC22iBzEmOF75ydW3A9moatVXhi7g7jltBvU83n\neLopCqlvVTEr2vZIiQzL8GtUOSg+e4pbtB2hlNyfB8ESz5izO0XKk7Q1la0G\nN4bQqD9N67Ri0/+7QqLVSxankuilU63UzMrk7kXvfGVasKAOOSaMfFAP2XoX\n1Y950tQ1EzDJZM/yQAJWcQBAH7DGnfFLYE+H81F0gB3R7kSSAP7SlW+Qv0j8\nvbn8QNND0d14lQzkSvhgJSRr4ltLE3E+n39EukCBsdjmXVOQLNQDlSzxPL0N\nURUW/dXrHtd5yJ80koh0CFzRP90t9tGFYLtT8wSSsO7OEQiBmrtP8FyhC6ad\nrAubxC3fWnJg5KuOBRj28XUpXDYGR/LNH7twjxFdILbyLI73aNKyW6prrZnl\nXAKr\r\n=ignU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD+ZbH4Q9cNhIjQU703/fJFz8EemGVf1/a9ns45VvaRRAIgb9to02XCtC78kfnB3ICTs1Yi76ZgEF9Hwia0CFrAioY="}]},"maintainers":[{"name":"alu0100973914","email":"alu0100973914@ull.edu.es"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/eloquentjsegg_1.6.0_1525383951815_0.26705007778117595"},"_hasShrinkwrap":false},"1.6.1":{"name":"@alu0100973914/eloquentjsegg","version":"1.6.1","description":"* [Eloquent JS. Chapter 11. Project: A Programming Language](http://eloquentjavascript.net/11_language.html) * Continuation of [this repository](https://github.com/ULL-ESIT-PL-1617/egg.git)","main":"index.js","scripts":{"test":"mocha","start":"./bin/egg.js","compile":"./bin/eggc.js examples/two.egg && ./bin/evm.js examples/two.egg.evm"},"bin":{"egg":"./bin/egg.js","eggc":"./bin/eggc.js","evm":"./bin/evm.js"},"repository":{"type":"git","url":"git+https://github.com/ULL-ESIT-PL-1718/egg-4-alu0100973914.git"},"keywords":["parsing","lisp"],"author":{"name":"alu0100973914"},"license":"ISC","bugs":{"url":"https://github.com/ULL-ESIT-PL-1718/egg-4-alu0100973914/issues"},"homepage":"https://github.com/ULL-ESIT-PL-1718/egg-4-alu0100973914#readme","devDependencies":{"gulp-shell":"^0.6.5","mocha":"*","should":"^13.2.1","xregexp":"^3.2.0","chai":"*","mocha-sinon":"*","sinon":"*"},"gitHead":"3959a14bc1b90b64f3239907f9e9aed07ac62c00","_id":"@alu0100973914/eloquentjsegg@1.6.1","_npmVersion":"6.0.1","_nodeVersion":"9.11.1","_npmUser":{"name":"alu0100973914","email":"alu0100973914@ull.edu.es"},"dist":{"integrity":"sha512-+RSNd/H+IneI7bUrIC/z8994JO7ZipBqFc9Eas04WkFzSYWdU3f4eaDW3UTMzvgmdGQHSslCmVmX2DOXiivcmQ==","shasum":"5fe5de5b1d2a075c6b2e40b8818aaae00d9417de","tarball":"https://registry.npmjs.org/@alu0100973914/eloquentjsegg/-/eloquentjsegg-1.6.1.tgz","fileCount":98,"unpackedSize":146845,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbAT3CCRA9TVsSAnZWagAAi9gQAIt1mjur1R2sX1HXX/a9\nB+0F+df4FAkwEI1Z6jNusRqXmKJQCB/wcETQ926X1+6jmqJr5cRbAmPr3fqV\nF0Qgn/mtrSTT0s0lA+a1ecM2cEQBZqTbwiLBCrDWlIh5ZQ1Yr0Q9219n4CoI\nZPIGPnYwHNY5Wyrcz2JhruQq2tZOOmSqOwoqL8LTKjTmNPDK2Cdb0b5WidmT\nVMimLwzD0ZNawAYqohC3EEt0Ukdr0PWQg+CgOvT5gcMU7H0Emu4nGTah6HR3\nJVJC4hkecqAq01ZFkfDvFrqg3EPvoMCz9KxotFfmo+moarVoHxBLQ98pmC85\n0+wL/4eR6Z4NQS9g6GMbfbv7AAIIFCyY84p5ACr1qN5LpI1NhKWq8YyFAA9P\ndA1xUY8QV6OA07cn3m901eUjWiKyE8MPQThKhg29/RMOv1eQGqYXIq45L1Rr\nMFrVQ5Hx8XMG5yi7+z/MfF5BlOGZTNU9yLYyNtF0AhVZtdIfS0Fc9WaTCkRN\ngES126ZKpe+a13hZeuSdwXvJaVogPVCr4qTKeCuxNG/tMQJLtDBZdK5tC7eH\nUsook3/98d5cPYFVUurwo0L3GMxJv2ZplVz8IR3VmAQHNhaAYL+5MPTeWbMs\nmKC0YqO2h/kv8y+JIhjy0EuSr3Oyns9jQJGk3xphUyS8ZdK6Ui1waF9vQ3X5\nGOv+\r\n=+BT4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCqZYXQAZeGUlKvVV0Gbx01xKOZ/jj9i48iUvb7q0ybVAIhAM7lq1FPM+99IVNrzvsoR+FyToXlA/ird7ZtKZwzjtvg"}]},"maintainers":[{"name":"alu0100973914","email":"alu0100973914@ull.edu.es"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/eloquentjsegg_1.6.1_1526808000897_0.6946752944534125"},"_hasShrinkwrap":false},"1.6.2":{"name":"@alu0100973914/eloquentjsegg","version":"1.6.2","description":"* [Eloquent JS. Chapter 11. Project: A Programming Language](http://eloquentjavascript.net/11_language.html) * Continuation of [this repository](https://github.com/ULL-ESIT-PL-1617/egg.git)","main":"index.js","scripts":{"test":"mocha","start":"./bin/egg.js","compile":"./bin/eggc.js examples/two.egg && ./bin/evm.js examples/two.egg.evm"},"bin":{"egg":"./bin/egg.js","eggc":"./bin/eggc.js","evm":"./bin/evm.js"},"repository":{"type":"git","url":"git+https://github.com/ULL-ESIT-PL-1718/egg-4-alu0100973914.git"},"keywords":["parsing","lisp"],"author":{"name":"alu0100973914"},"license":"ISC","bugs":{"url":"https://github.com/ULL-ESIT-PL-1718/egg-4-alu0100973914/issues"},"homepage":"https://github.com/ULL-ESIT-PL-1718/egg-4-alu0100973914#readme","devDependencies":{"gulp-shell":"^0.6.5","mocha":"*","should":"^13.2.1","xregexp":"^3.2.0","chai":"*","mocha-sinon":"*","sinon":"*"},"gitHead":"7b057eee672c5f98556ae9d785422ed57cd94767","_id":"@alu0100973914/eloquentjsegg@1.6.2","_npmVersion":"6.0.1","_nodeVersion":"9.11.1","_npmUser":{"name":"alu0100973914","email":"alu0100973914@ull.edu.es"},"dist":{"integrity":"sha512-9WEtZcbjqn/oTD86A8pEKqlxIYMR7zvlZGN/u9L6wYhcPABBI09EX/bQFzYD3SiBKFtzP8JYa9yH5UgcFrcxHA==","shasum":"89413760b98a9539d16ade1d5110e444fda07ef8","tarball":"https://registry.npmjs.org/@alu0100973914/eloquentjsegg/-/eloquentjsegg-1.6.2.tgz","fileCount":98,"unpackedSize":146957,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbAURYCRA9TVsSAnZWagAAnpcP/0S3R+kX39pKYGt5NQfp\ni+GS36UEkcVFgw6QKx/chH/o4xJZW0PXoBNb+q8GpLEXckPbFNVpjTgr9fId\nbBqZgRuvTx4UyZu6bsBd/S8T6eypITFiXRm4u9ID8P+DaWDJsIVJMDXAupuC\nILSwbstFA7ZFm4p46TiOuN14IoklBKYSbywl4bVsIhjuSyFzIn+dFsn6KTYa\n89LEn5fliJV/BZQwfSj3zsP6smQIiAAFa9YvHd4vtGEnvoKshoToXvsSFF42\ndhwWynY171mnzVlkR8E1cNEQXP6iH8oZy1lAZ+HKcpKZLssIil2ZllusseLW\nd2PJIDcPC4rP21Gt+SWuV/nZokvOGOXTj5mtMuNDG+Xssf0AoKXE9Qxkkcag\nbHVBqKdz1iIilD0LzBU8V4i8v2hkq/sF8Z7/6TNl7j6/YZhrkOxwQPwCSoFe\nCEVxYe++ZaN4X+Q2IbwJajIiwgHy8PlgWkRwZPzoFugv1WHpQGBNNa0QHYG5\nFddd/8A6lCpa4b/oLyWahBfAi8Hn/v7qlDkfe6XyBsnssIFNVZc0nOhFVGQR\np39H/OL5KDK8RDGxNQZ4z28OsZaeMCFHKDZ9UZqlW+LMcsyxFWtuWLFDbCai\naijUIozelYRRhYE3xxAa2V98zkF4rvHS39D+rYD7WxedoHwQtE8j+rW+NgVm\nqJfL\r\n=CDV7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDwZP/xFk+pJ8NyndEsaeP85Aq8c7AMLmVEfemMZZLzuAiBd5ZFjO8sAXv5o7ctbCyDF53AIFx+0Frwb5ZKm8CRang=="}]},"maintainers":[{"name":"alu0100973914","email":"alu0100973914@ull.edu.es"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/eloquentjsegg_1.6.2_1526809687724_0.8593399255497922"},"_hasShrinkwrap":false},"1.6.3":{"name":"@alu0100973914/eloquentjsegg","version":"1.6.3","description":"* [Eloquent JS. Chapter 11. Project: A Programming Language](http://eloquentjavascript.net/11_language.html) * Continuation of [this repository](https://github.com/ULL-ESIT-PL-1617/egg.git)","main":"index.js","scripts":{"test":"mocha","start":"./bin/egg.js","compile":"./bin/eggc.js examples/two.egg && ./bin/evm.js examples/two.egg.evm"},"bin":{"egg":"./bin/egg.js","eggc":"./bin/eggc.js","evm":"./bin/evm.js"},"repository":{"type":"git","url":"git+https://github.com/ULL-ESIT-PL-1718/egg-4-alu0100973914.git"},"keywords":["parsing","lisp"],"author":{"name":"alu0100973914"},"license":"ISC","bugs":{"url":"https://github.com/ULL-ESIT-PL-1718/egg-4-alu0100973914/issues"},"homepage":"https://github.com/ULL-ESIT-PL-1718/egg-4-alu0100973914#readme","devDependencies":{"gulp-shell":"^0.6.5","mocha":"*","should":"^13.2.1","xregexp":"^3.2.0","chai":"*","mocha-sinon":"*","sinon":"*"},"gitHead":"786bcf54197d403877893efecb380fce694ee434","_id":"@alu0100973914/eloquentjsegg@1.6.3","_npmVersion":"6.0.1","_nodeVersion":"9.11.1","_npmUser":{"name":"alu0100973914","email":"alu0100973914@ull.edu.es"},"dist":{"integrity":"sha512-ocQ94OZwToRmn7ICXSWnxg8OGQkPTlVaTgKuaj3SMO2Oj2u/bvr16d/WyIDY1IX3mEUdvAhlSgqore+U44SydA==","shasum":"d8826d4cc08bba6be18a6f8252a6245d43b35c0d","tarball":"https://registry.npmjs.org/@alu0100973914/eloquentjsegg/-/eloquentjsegg-1.6.3.tgz","fileCount":98,"unpackedSize":147051,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbAXUbCRA9TVsSAnZWagAAi14P/2HiknBoC4HEL0Iu+lFN\nfIx/yODMoyEecWRxCcrszz/eJRg7IjrU5mGQ/jXlAewWWURxe+5k2lHsHxnC\njItVGQ19C0UVkjIrq5nCGTEyoi7MUInSROzuAVQ3wANAVPmVyaukMPc+R5Za\nI02WgzobjaU7DGGxRaH97LwAMkdp5KiVvxCpbF+IKKdr2LwzL7TuVW138HlW\nCCpLgatfl+Juk7c2RyrjwJ0seKVWj36FnU/NJDfGB3z3EfJOprTy7QR2BIpb\nt5Fnf99KkaypRgtz3m+4ZOUiEplbuFEIiXm7qP4uNPh/w/1jyTYPilclEtz1\nIUu5bKoxFaxZ2Isl73WKy0Z1nA/0Q77hZTu/wddWXE9vRnQmBDX8kgzFC0xy\nZpMhRbuSRLATGWQGpSL2SvI9WTsylZP3Xh8E32cSo6F4fN/ccU3F9Tvt60yP\nSpkqxXjByj4IhBaima4ryCpIQh9QZH/cV9qhjp5yjBkbgQbE60booI4wUuJh\njQ/CdKZ0udu2OLAzN8xrGm1Tcgb5OHuM05f7QdzmF6PYLAdYFOTZXPmu2TRB\n02u1EZILQV/HFJFcp+LlsYumOcgEpYzZk768h6OtW+BWBDJqHmHhWnjZoPeG\ngMA5eeeMUgEYQC0tVfc03iJ9jCYirx3ererVsbF3BwkEwRVao+vCs9dTHIQ9\naa5g\r\n=Oi3j\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHGqCG9AWbRmMc52ZgAhU/5BJRccr32FuySOvoXlSCLwAiEAxHcwqaQZRGoKse+4qvPXc6fDNXUBdzWwcbtlgzslo9k="}]},"maintainers":[{"name":"alu0100973914","email":"alu0100973914@ull.edu.es"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/eloquentjsegg_1.6.3_1526822170343_0.3719037743908875"},"_hasShrinkwrap":false},"1.6.4":{"name":"@alu0100973914/eloquentjsegg","version":"1.6.4","description":"* [Eloquent JS. Chapter 11. Project: A Programming Language](http://eloquentjavascript.net/11_language.html) * Continuation of [this repository](https://github.com/ULL-ESIT-PL-1617/egg.git)","main":"index.js","scripts":{"test":"mocha","start":"./bin/egg.js","compile":"./bin/eggc.js examples/two.egg && ./bin/evm.js examples/two.egg.evm"},"bin":{"egg":"./bin/egg.js","eggc":"./bin/eggc.js","evm":"./bin/evm.js"},"repository":{"type":"git","url":"git+https://github.com/ULL-ESIT-PL-1718/egg-4-alu0100973914.git"},"keywords":["parsing","lisp"],"author":{"name":"alu0100973914"},"license":"ISC","bugs":{"url":"https://github.com/ULL-ESIT-PL-1718/egg-4-alu0100973914/issues"},"homepage":"https://github.com/ULL-ESIT-PL-1718/egg-4-alu0100973914#readme","devDependencies":{"gulp-shell":"^0.6.5","mocha":"*","should":"^13.2.1","xregexp":"^3.2.0","chai":"*","mocha-sinon":"*","sinon":"*"},"gitHead":"5190e5dc25edcfcf66c209fdd24594de29572fbb","_id":"@alu0100973914/eloquentjsegg@1.6.4","_npmVersion":"6.0.1","_nodeVersion":"9.11.1","_npmUser":{"name":"alu0100973914","email":"alu0100973914@ull.edu.es"},"dist":{"integrity":"sha512-HTlh/unnfe9ccbio+lht+y9LHeboYQaAmnYcZfPze66mjV4gtbkPs5aNpbZVvzKLvaYu/xgVCp7NDElrrQrVow==","shasum":"a1d5470c861570bc48d49ad6f75abcf8524b6116","tarball":"https://registry.npmjs.org/@alu0100973914/eloquentjsegg/-/eloquentjsegg-1.6.4.tgz","fileCount":98,"unpackedSize":147073,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbAs3dCRA9TVsSAnZWagAAP1MQAIWmA2eG7ok3BSBPGlTZ\nCt6sxaY5dNVxeOw+wCDRjcoAyTa+KrqxZ9z/30vcUwouxp2YQlLBj9PPBuEO\nwT+M2+YEUSLgelg0zmW9TUg9AV6EKRzh7iMbGJBKGGhDgQAP1yn2sOplbSsp\nRY0Poi3rw0mrTqOJkeKki0Wg3GZ9uYjxCLt2B8tXSPYkyCr1HJuTHs/YbdIa\n/9rlOOCMNGIQ+Qtj3IMNEAfCOxmm1a56cW2l97eMYm9hxx9iFGA9hili9WPj\n9JbrfiqIvlJnJYJtLa3W/7GbhNnS/Yx1KArrEfC//suNkRiVLId/DdFqWExB\nioT1luvO/GO2x4ga/JOJQoGQCV6zxJDcJ8qvIcAxzsaISkY7kRgGCnXy9CHE\nHZvEIB8q/LPXHe9ozHi2Jkatt72gJkDzYErAnLLlbr+aAaoeRuVAeY8qpBxf\nhqdad/V4hRGaUk1wbemaGMczi0SsObrRyYnYWbZ6jFD86uNuNJY5HcubPBCX\nkZS0eBs1xA35lbv/2syXL+yPVaj3gx0haEpa1McHQP2tX+JKxFpphqnPUP19\njqv4B+RT7oMd1oX0bWTIMsbtyole89c9URTsJSL2JoerCxhpSlgXdZshNZYQ\nT6a91Ia7LYnCpJ9P/DtKbDWI3eIo71KJifHqeE4COaez/zktz1Ybrvr9xzs5\np6xw\r\n=bnZx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCpTj5IDH6775FISDYU8PxKd5bCPQGVlBkR6qguE82BygIhAMQUY5RcPkNe0n89ar2CY9FopQipF86YBVlmDXqFaPH/"}]},"maintainers":[{"name":"alu0100973914","email":"alu0100973914@ull.edu.es"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/eloquentjsegg_1.6.4_1526910427919_0.163965340235104"},"_hasShrinkwrap":false}},"time":{"created":"2018-03-27T08:37:23.305Z","1.3.0":"2018-03-27T08:37:23.431Z","modified":"2022-04-04T13:40:56.159Z","1.3.1":"2018-03-29T15:53:00.791Z","1.4.0":"2018-04-12T20:06:56.119Z","1.5.0":"2018-04-26T19:26:17.157Z","1.5.1":"2018-04-26T19:31:52.899Z","1.5.2":"2018-05-03T13:38:54.182Z","1.5.3":"2018-05-03T21:42:59.813Z","1.6.0":"2018-05-03T21:45:51.892Z","1.6.1":"2018-05-20T09:20:00.962Z","1.6.2":"2018-05-20T09:48:07.781Z","1.6.3":"2018-05-20T13:16:10.528Z","1.6.4":"2018-05-21T13:47:08.184Z"},"maintainers":[{"name":"alu0100973914","email":"alu0100973914@ull.edu.es"}],"description":"* [Eloquent JS. Chapter 11. Project: A Programming Language](http://eloquentjavascript.net/11_language.html) * Continuation of [this repository](https://github.com/ULL-ESIT-PL-1617/egg.git)","homepage":"https://github.com/ULL-ESIT-PL-1718/egg-4-alu0100973914#readme","keywords":["parsing","lisp"],"repository":{"type":"git","url":"git+https://github.com/ULL-ESIT-PL-1718/egg-4-alu0100973914.git"},"author":{"name":"alu0100973914"},"bugs":{"url":"https://github.com/ULL-ESIT-PL-1718/egg-4-alu0100973914/issues"},"license":"ISC","readme":"# Fourth part of practice 6 of PL: A programming Language\n[![npm version](https://badge.fury.io/js/%40alu0100973914%2Feloquentjsegg.svg)](https://badge.fury.io/js/%40alu0100973914%2Feloquentjsegg)\n[![Build Status](https://travis-ci.com/ULL-ESIT-PL-1718/egg-4-alu0100973914.svg?token=S9Gezg46GoVeGRv4GwA9&branch=master)](https://travis-ci.com/ULL-ESIT-PL-1718/egg-4-alu0100973914)\n[![CircleCI](https://img.shields.io/circleci/project/github/RedSparr0w/node-csgo-parser.svg)](https://circleci.com/gh/ULL-ESIT-PL-1718/egg-4-alu0100973914)\n\n## [Original repository](https://github.com/ULL-ESIT-PL-1617/egg.git)\n\n## Practice repositories\n* [First part repository](https://github.com/ULL-ESIT-PL-1718/a-programming-language-alu0100973914.git)\n* [Second part repository](https://github.com/ULL-ESIT-PL-1718/egg-2-alu0100973914.git)\n* [Third part repository](https://github.com/ULL-ESIT-PL-1718/egg-3-alu0100973914.git)\n\n\n## First part\n* Lexer's regular expressions were created using the XRegExp library, and now they are properly documented.\n* The \"tokens objects\" store the line and the offset.\n* Errors messages improved.\n* Now the lexer, doesn't destroy the program while it is reading it. The regular expressions use the sticky option.\n* Several new tests have been added to check errors.\n## Second part\n* REPL mode.\n* Added aliases to some features of the language.\n* Added more tests which checks the execution of incorrect programs and the output of correct programs.\n* Added negative indices for arrays like in Ruby.\n* Added hashes/maps to the language.\n* OOP solution, now the different types of nodes of the AST are represented with classes, each node knows how to evaluate itself.\n* Rewritten some commented tests.\n## Third part\nFor each new functionality several tests and examples programs have been created to test it behaviour.\n* Added multiple arguments operations.\n* Added array/maps modification using set.\n* Added access to array/maps with element or <- functions.\n* Added an alias, now **:** acts as **,** if is not followed by **=** (:= is an alias of define).\n* Added access to array/maps with **.**.\n* Added bracket notation to access to arrays and maps elements.\n* Added access to native JavaScripts methods of array and maps.\n\n## Fourth part\nFor each new functionality several tests and examples programs have been created to test it behaviour.\n* Added require functionality, now egg programs could be extended using require.\n* Added collect function for arrays.\n* Added for loops.\n* Added pretty maps keys.\n* Added extended regular expressions.\n* Added objects.\n* Added splat operator.\n\n### REPL Mode\n![REPLMode](screens/screen.png)\n### Syntactic sugar\nAdded some aliases:\n* := is equivalent to define\n* =  is equivalent to set\n* <- is equivalent to elements\n* {  is equivalent to (\n* }  id equivalent to )\n* [  is equivalent to (\n* ]  id equivalent to )\n\n**], ) and }** must close with the respective symbol, the next code is incorrect:\n```\n  do(\n    print(\"Foo\"}\n  )\n```\nSome new tests and example programs have been added to check the aliases behaviour.\n\n### Checking errors\n\nSome tests added to verify:\n```\ndo(\n  set(x,9),\n  print(x) # ReferenceError: Tried setting an undefined variable: x\n)\n```\n* Throws a ReferenceError cause x is not defined.\n```\ndo(\n  set(x,9)\n)\nprint(x) #SyntaxError: Unexpected input after reached the end of parsing\n\n```\n* Throws a SyntaxError cause there is input after the end of the block.\n\n```\ndo{\n  2[12]\n}\n```\n\n* Throws an error, numbers can't act as functions.\n\n```\ndo(\n  define(x, 4),\n  define(setx, fun(val,\n                   set(x, val)\n                  )\n        ),\n  setx(50),\n  print(x)\n)\n```\n* Produces **50** as output.\n\n### Negative indices\nNow it is possible to access to an array elements with negative indices like in Ruby:\n```\ndef(x, array[1,2,3,4])\nprint([](x, 2))\t\t      #3\nprint(element(x, -1))   #4\nprint(<-(x, -4))        #1\n```\n\n### Hashes / Maps\nNow the language supports maps:\n```\ndef(x, map{1,1,2,4,3,9,4,16}}\nprint(x)                      #Map { 1 => 1, 2 => 4, 3 => 9, 4 => 16 }\nprint(length(x))              #4\nprint(element(x, 3))          #9\nprint(<-(x,2))                #4\nprint({}(x,4))                #16\n```\n* To create a map use **map** or **hash** function, the first element of each pair arguments will be the key and the second the value.\n* Maps responds to the same methods as arrays excepting [] which is typical of arrays(length, element, <-), the equivalent method for maps is **{}**.\n\n### OOP solution\nNow the different types of nodes of the AST are represented with classes, each kind of node knows how to evaluate itself.\n\n\n\n### Multiple arguments operations.\nNow the language supports operations like:\n```\ndo(\n  print(+(<(2,3,4,5,6,7), \" should be \", \"tru\", \"e\")),\n  print(+(<(2,3,0,5,6,7), \" should be \", \"fals\", \"e\")),\n  print(+(-(*(2,4),/(64,8),*(0, +(2,2,3,1,3,5,3,4,9))), \" should be \", \"0\")),\n  print(+(+(1,2,3,4,5,6), \" should be 21\"))\n)\n```\n\n### Special set\nNow we can modify an array/map:\n```\ndo(\n  :=(x, arr[1,2,3,arr[4,5,arr[6,7,8]]]),\n  =(x,2,-3),\n  =(x,3,0,-4),\n  =(x,3,2,-1,-8),\n  :=(y, \"String power\"),\n  =(x,3,2,-2, y),\n  print(x)\t\t#[ 1, 2, -3, [ -4, 5, [ 6, 'String power', -8 ] ] ]\n)\n```\n\n### Array/maps access\nNow we can access to an array or map elements:\n```\ndo(\n  :=(x, arr[1,2,map{1,2,\"col\",arr[1,2,3]}]),\n  element(x,2),         #Map { 1 => 2, 'col' => [ 1, 2, 3 ] }\n  element(x,2,1),       #2\n  element(x,2,\"col\"),   #[ 1, 2, 3 ]\n  element(x,2,\"col\",-1) #3\n)\n```\n:exclamation: Note that **{} and []** also works with something like `[](x,1,3,4)`.\n\n### Syntactic sugar\n* **:** acts as **,** if is not followed by **=** (:= is an alias of define)\n```\ndo(\n  :=(x, map{ \"hello\": arr[1,2,3,4], \"bye\": 12, \"foo\": map{1:2,2:4}}),\n  print(element(x, \"hello\"))\t\t#[ 1, 2, 3, 4 ]\n)\t\t\n```\n\n### Dot access\nNow we can access to an array or map elements using **.**:\n```\ndo(\n  :=(x, map(\"a\": map(\"x\": array[70, 100]), \"b\": array[2,3])),\n  print(x), # { a: { x: [ 70, 100 ] }, b: [ 2, 3 ] }\n  print(x.a),  #  { x: [ 70, 100 ] }\n  print(x.b),  # [ 2, 3 ]\n  print(x.a.x.-1),  # 100\n  print(x.b.1)  # 3\n)\n```\n\n### Bracket access\nNow we can access to an array or map elements using **[]**:\n```\ndo(\n  def(x, array[array[1,4], fun(x,y, +(x,y)),7]),\n  print(x[1](5,9)),      # 14\n  print(x[0, -1]),       # 4\n  print(+(x[0][1], 12))  # 16\n)\n```\n\n### Access to native methods\nNow we can use native JavaScript methods with our egg maps and arrays:\n```\ndo(\n  :=(x, map{1,1,2,4,\"mep\",map{1,1,2,8,3,27,\"mip\", map{\"mop\", \"mup\"}}}),\n  print(x.keys()),\n  x.delete(1),\n  x.delete(\"mep\"),\n  print(x.values())\n  def(x, array[array[1,4],5,7]),\n  x.push(4),\n  print(x),\n  print(x.shift()),\n  print(x),\n)\n```\n```\ndo(\n  def(x, array[array[1,4],5,7]),\n  x.push(4),\n  print(x),\n  print(x.shift()),\n  print(x)\n)\n```\n```\ndo(\n  :=(z, array[1, 4, \"a\"]),\n  print(z.push(9)),\n  print(z[\"push\"](5)),\n  print({}(z, \"shift\")()),\n  print(element(z, \"push\")(8)),\n  print(z)\n)\n\n```\n\n### Require functionality\nNow egg programs could be extended using require:\n* Module to include:\n\n```\ndo {\n  :=(z, map(\"inc\": ->(x,\n                        +(x,1)\n                     ) # end fun\n           ) # end map\n    ), # end of :=\n  z  # el último valor será exportado\n}\n```\n* Program including the previous module:\n\n```\ndo {\n  print(\"Including module\"),\n  :=(z, require(\"examples/modules/incMap.egg\")),\n  print(\"Module included\"),\n  print(z.inc(4))\n}\n```\n\n### Collect method\nCollect function returns a new array with the results of running the given function once for every element in the given array. It expects an array as first argument and a function as second argument:\n```\ndo(\n  def(x, arr[1,2,3,4]),\n  def(block,->(element,\n               *(element, element)\n              )\n     ),\n  def(z, collect(x, block)),\n  print(z),# [ 1, 4, 9, 16 ]\n  print(collect(arr[-1,-2,-3,-4],\n                ->(element,\n                   *(element, element, element)))) # [ -1, -8, -27, -64 ]\n)\n```\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n**Collect method only works with arrays.**\n\n### For loops\nFor expects four Apply objects:\n* Counter expression\n* Continue expression\n* Increment expression\n* Body\n\n```\ndo(\n  for(:=(x,0), <(x, 9), =(x,+(x, 1)), print(+(\"Hola \", x)))\n)\n\n```\n\n### Pretty map keys\nNow it is possible to declare maps following the next syntax:\n```\n:=(x, map{1,1,2,4, mep:map{1:1,2:8,3:27, mip: map{mop: \"mup\"}}})\n```\nThe \"string keys\" doesn't need to be between double quotes symbols. :exclamation: Note that with this notation some colateral changes are introduced:\n```\ndo(\n  :=(w, \"hi\"),\n  :=(x, map{w: \"bye\"}),       \n  :=(y, \"ho\"),\n  :=(z, map{y, \"bye\"}),       \n  print(x),               ;Map { 'w' => 'bye' }\n  print(z)                ;Map { 'ho' => 'bye' }\n)\n\n```\n\n**,** and **:** are not fully equivalent:exclamation::exclamation::exclamation:\n\n### Regular Expressions\nNow it is possible to create regular expression objects:\n\n* regex/regular_expression/options\n\nExample program:\n```\ndo {\n  :=(d, regex/\n        (?<year>  \\d{4} ) -?  # year\n        (?<month> \\d{2} ) -?  # month\n        (?<day>   \\d{2} )     # day\n        /x),\n  print(d.test(\"2015-02-22\")),  # true\n  :=(m, exec(\"2015-02-22\", d)),  /*  [ '2015-02-22', '2015', '02', '22',\n                                     index: 0, input: '2015-02-22',\n                                     year: '2015', month: '02', day: '22' ]\n                                */\n  print(m.year),  # 2015\n  print(m.month), # 02\n  print(m.day), # 22\n  :=(numbers, regex/([-+]?\\d*         #Integer number\n                        \\.?      #Floating point\n                        \\d+([eE][-+]?\\d+)?)/x),\n  print(numbers.test(\"12321.21321-e20\")),\n  :=(string, regex/[\"']((?:[^\"\\\\]  |             #Single character excepting double quotes and backslash\n                                \\\\.         #Any character preceded by a backslash\n                                   )*)[\"']/x),\n  print(string.test(\"'hello'\")),\n  :=(words, regex/([^\\s(){}\\[\\],\\\"'?]+)/x),\n  print(words.test(\"Word\"))\n}\n\n```\n\nThe **exec** method that the regular expresions objects has is the JavaScript native regular expression exec method. If you want to call XRegExp.exec you must invoke it following the next syntax:\n```\n:=(m, exec(\"2015-02-22\", d))\n```\nSo we can access to the named capture groups, for example:\n```\nprint(m.year),\nprint(m.month),\nprint(m.day)\n```\n\n### Objects\nNow the language supports objects:\n```\ndo {\n  :=(x, Object {\n    \"c\": 0,\n\t\t   \"gc\": ->(this.c),\n\t\t\"sc\": ->(value,\n\t\t\t=(this.c, value)\n\t\t)\n\t}),\n\tprint(x.gc()),\n\tx.sc(4),\n\tprint(x.gc()),\n}\n```\n\n### Splat operator\nNow the language supports the splat operator:\n```\ndo(\n  def(f1, ->(...elements, collect(elements, ->(element, print(element))))),\n  def(f2, ->(first, second, third, print(+(first, second, third)) )),\n  def(a, arr[1,2,3]),\n  f1(1,2,3),\n  f1(a),\n  =(a, arr[2,3,4]),\n  f2(...a)     ;f(2,3,4)\n)\n```\n\n## Grammar\n\n```Yacc\n\nexpression: STRING\n          | NUMBER\n          | WORD apply\n\napply: /* vacio */\n     | '(' (expression ',')* expression? ')' apply\n\n\nWHITES = /^(\\s|[#;].*|\\/\\*(.|\\n)*?\\*\\/)*/;\nSTRING = /^\"((?:[^\"\\\\]|\\\\.)*)\"/;\nNUMBER = /^([-+]?\\d*\\.?\\d+([eE][-+]?\\d+)?)/;\nWORD   = /^([^\\s(),\"]+)/;\n```\n## AST\n\n* Expressions of type \"VALUE\" represent literal strings or numbers.\nTheir `value` property contains the string or number value that they represent.\n\n* Expressions of type \"WORD\" are used for identifiers (names). Such objects have a `name` property that holds the identifier’s name as a string.\n* Finally, \"APPLY\" expressions represent applications. They have an `operator` property that refers to the expression that is being applied, and an `args` property that holds an array of argument expressions.\n\n```\nast: VALUE{value: String | Number}\n   | WORD{name: String}\n   | APPLY{operator: ast, args: [ ast ...]}\n```\n\nThe `>(x, 5)` would be represented like this:\n\n```bash\n$ cat greater-x-5.egg\n>(x,5)\n$ ./eggc.js greater-x-5.egg\n$ cat greater-x-5.egg.evm\n{\n  \"type\": \"apply\",\n  \"operator\": {\n    \"type\": \"word\",\n    \"name\": \">\"\n  },\n  \"args\": [\n    {\n      \"type\": \"word\",\n      \"name\": \"x\"\n    },\n    {\n      \"type\": \"value\",\n      \"value\": 5\n    }\n  ]\n}\n```\n\n## Examples\n\nSome example programs could be found in the examples folder.\n\n## Executables\n\n* `egg`\n    - Runs an egg program: `bin/egg examples/two.egg` compiles the source onto the AST and interprets the AST\n\n```\n$ cat example/one.egg\ndo(\n  define(x, 4),\n  define(setx, fun(val,\n      set(x, val)\n    )\n  ),\n  setx(50),\n  print(x)\n)\n$ bin/egg one.egg\n50\n```\n\n* `eggc`\n    - Compiles the input program to produce a JSON containing the tree: `bin/eggc examples/two.egg` produces the JSON file `examples/two.egg.evm`\n* `evm`\n    - Egg Virtual Machine. Runs the tree: `bin/evm examples/two.egg.evm`\n```\n$ bin/eggc examples/one.egg\n$ bin/evm examples/one.egg.evm\n50\n```\n\nHere is the tree in JSON format for the former `one.egg` program:\n\n```\n$ cat one.egg.evm\n{\n  \"type\": \"apply\",\n  \"operator\": {\n    \"type\": \"word\",\n    \"name\": \"do\"\n  },\n  \"args\": [\n    {\n      \"type\": \"apply\",\n      \"operator\": {\n        \"type\": \"word\",\n        \"name\": \"define\"\n      },\n      \"args\": [\n        {\n          \"type\": \"word\",\n          \"name\": \"x\"\n        },\n        {\n          \"type\": \"value\",\n          \"value\": 4\n        }\n      ]\n    },\n    {\n      \"type\": \"apply\",\n      \"operator\": {\n        \"type\": \"word\",\n        \"name\": \"define\"\n      },\n      \"args\": [\n        {\n          \"type\": \"word\",\n          \"name\": \"setx\"\n        },\n        {\n          \"type\": \"apply\",\n          \"operator\": {\n            \"type\": \"word\",\n            \"name\": \"fun\"\n          },\n          \"args\": [\n            {\n              \"type\": \"word\",\n              \"name\": \"val\"\n            },\n            {\n              \"type\": \"apply\",\n              \"operator\": {\n                \"type\": \"word\",\n                \"name\": \"set\"\n              },\n              \"args\": [\n                {\n                  \"type\": \"word\",\n                  \"name\": \"x\"\n                },\n                {\n                  \"type\": \"word\",\n                  \"name\": \"val\"\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"type\": \"apply\",\n      \"operator\": {\n        \"type\": \"word\",\n        \"name\": \"setx\"\n      },\n      \"args\": [\n        {\n          \"type\": \"value\",\n          \"value\": 50\n        }\n      ]\n    },\n    {\n      \"type\": \"apply\",\n      \"operator\": {\n        \"type\": \"word\",\n        \"name\": \"print\"\n      },\n      \"args\": [\n        {\n          \"type\": \"word\",\n          \"name\": \"x\"\n        }\n      ]\n    }\n  ]\n}\n```\n","readmeFilename":"README.md"}