{"_id":"@alu0101042305/eggparser","_rev":"5-de5ab1fd3ea69ce4d03644bec26dd062","name":"@alu0101042305/eggparser","dist-tags":{"latest":"1.2.6"},"versions":{"1.2.1":{"name":"@alu0101042305/eggparser","version":"1.2.1","description":"* [Eloquent JS. Chapter 11. Project: A Programming Language](http://eloquentjavascript.net/11_language.html) * [Deploy at GitHub](https://ULL-ESIT-PL-1617.github.io/egg)","main":"lib/eggvm.js","scripts":{"test":"mocha","start":"./bin/egg.js examples/two.egg","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-1617/egg.git"},"keywords":["parsing","lisp"],"author":{"name":"Lucas Alonso Ortega"},"license":"ISC","bugs":{"url":"https://github.com/ULL-ESIT-PL-1617/egg/issues"},"homepage":"https://github.com/ULL-ESIT-PL-1617/egg#readme","devDependencies":{"gulp-shell":"*","mocha":"*","should":"*"},"dependencies":{"readline":"^1.3.0","xregexp":"^4.2.4"},"directories":{"example":"examples","lib":"lib","test":"test"},"gitHead":"db80601db3abe122a0230768e1169590a633de6f","_id":"@alu0101042305/eggparser@1.2.1","_npmVersion":"6.5.0","_nodeVersion":"11.9.0","_npmUser":{"name":"alu0101042305","email":"alu0101042305@ull.edu.es"},"dist":{"integrity":"sha512-arHMhaFJ2TrKS38g7u/ozDYn4m4o+Ok++ny/n0F0Vgn1GJN+9h4Xfl3xwl4pTe04InTuw2sWy7SipWVvAvkpzw==","shasum":"5a35f9361a5fcfd6d47135fa350013586348130d","tarball":"https://registry.npmjs.org/@alu0101042305/eggparser/-/eggparser-1.2.1.tgz","fileCount":27,"unpackedSize":25346,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcqN+QCRA9TVsSAnZWagAAv0sP/13eZSvZUVrV3r6lmpfP\njyML6z8Pfk2Fe8Rov3gWQfjDEdvTSaZoQNwz76O/lYEtnaylzTypmD4l33rZ\nOGZPheZ5ZsdmUCo1s33Waov8tbiTY42Uj/89s8ToPxGnD994niLzkbf1GfWn\n8CJW0fqP4AdNfPj9/mEAAtuJ2BU4F8BfMufIuAELi2vqXuVzK8GlNbvlGBJH\ncWzBxNYfJWSHEzwblNCxqePr08vmUZK2F48mJYOOneFOFjKZpI5t2DIYlMPs\nOtgV9R3DDcXNviiMTidCgLhpqxt/9DwdZNOd2YyI/Hp/Ro3LbaOFEf4FGWhD\nxE2Vk9PRzcWB8sNBjCn/oeOTnMrDbQADH8J8FoNRpH1q7CGWy+Vh+2QIlLWO\nCAfCBbYf0V31uANlkRwLwkIBXxGK4eMHwHySaMub6HMjg909wlkuAyc3PMEC\n7emztOCnYXp4oIxgDglJhHOQ86wTf55t4Rox3e67B338EJO9mAWxomY0KeSz\n4ZzPn9N0BRmiLM02nCLb0l4VFs0SxwCGznBCnc/LZAk78+GzIONB45Z9pxob\nR7xLmcLaHa9uFr0lcCCxwhKJvWMX6NyWdaC2lZqyBzC7LNChTZ9cl78wDemT\nJEjfMeVeeYxeUM14+Qja8hJD8SrnfjeD0ikckQyJDHGpZWFjKVWCI2vMC6RS\nACov\r\n=4sHm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFb3qbXdukki9lNgRfGWUX9JFT534HNS9JyNkamdXXA0AiEAhXb/jW5z4DH6cvJSEGe4uIxdZh+IegWAXRMD8/FKfq0="}]},"maintainers":[{"name":"alu0101042305","email":"alu0101042305@ull.edu.es"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/eggparser_1.2.1_1554571151162_0.10610943143766294"},"_hasShrinkwrap":false},"1.2.3":{"name":"@alu0101042305/eggparser","version":"1.2.3","description":"* [Eloquent JS. Chapter 11. Project: A Programming Language](http://eloquentjavascript.net/11_language.html) * [Deploy at GitHub](https://ULL-ESIT-PL-1617.github.io/egg)","main":"lib/eggvm.js","scripts":{"test":"mocha","start":"./bin/egg.js examples/two.egg","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-1617/egg.git"},"keywords":["parsing","lisp"],"author":{"name":"Lucas Alonso Ortega"},"license":"ISC","bugs":{"url":"https://github.com/ULL-ESIT-PL-1617/egg/issues"},"homepage":"https://github.com/ULL-ESIT-PL-1617/egg#readme","devDependencies":{"gulp-shell":"*","mocha":"*","should":"*"},"dependencies":{"chai":"^4.2.0","readline":"^1.3.0","xregexp":"^4.2.4"},"directories":{"example":"examples","lib":"lib","test":"test"},"gitHead":"cc429db0da195eefe91838b35ead6bdfcd18c62d","_id":"@alu0101042305/eggparser@1.2.3","_npmVersion":"6.5.0","_nodeVersion":"11.9.0","_npmUser":{"name":"alu0101042305","email":"alu0101042305@ull.edu.es"},"dist":{"integrity":"sha512-kLq7cTUPyv2AUlmWYme/J1bHyiy4Em7Bfedb0BYcfIf36V96zbFQQeID2S59PuX3/iW+AQxoy6aDZxhowrSoPg==","shasum":"6a5583fabf4359e692b9af538a9bb952113fc025","tarball":"https://registry.npmjs.org/@alu0101042305/eggparser/-/eggparser-1.2.3.tgz","fileCount":54,"unpackedSize":38393,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJczrcvCRA9TVsSAnZWagAAf54P/2KOa7fea1q/dhw8wt9f\nyI4m/FzdDpIYzciy+EX08jItYWpfWqa2A5g5JAafRCi7iMv6aF+1twJJO/CH\npY3JSbo1/mAfBtTkm+K2tZREHZaFoFm2X/Qqv2hZ833AwakCGFH/fy0kviN+\nbH5PQG5SYn8lpH3ZImTBfFUIbiUndn4ZShwKQw2eobrg0rH6PlFAcrh+yYoE\npm5SVN2K8rKQSEKQIvolSvTFHk2IAqs1aQZjFH0nFVoI1BenWr77uQmtO5dL\nR2qJfOKBFBC3P0arMP/kte1DE2ZIMf2K1SLP/W7HH2U9qVOH2AwEvzBjhgel\nsAlwEn0p3d75V2J0dSHCBHE2XmzgtIAtU8Yk6Wdx67gqO7oQ+C5GStRGArpz\nQGfSI53++Hi8CaUBa5D8oEa7iYqV+VHR2M79vOHCXP3F7DVz3iEQSoZX3dyn\nOEbdu9WQa3BM992kak4r/jvWv728WjwrGqRGt+gqzpg9eTgGHCDJiS4ygP7U\nW6xov2zlN2msbEbJarzvS4VNcnjZ7mdQj/xwkvokXicd8GSxbKpZwSX+hnaF\n3xAGMzoU0GIBXOAcNAPq/z+ZxOjYigLC2eZISdvkeobOke/M58QbSrfILqsZ\nSXAelNVDH1LpKyxX28d8UQHj453BCQzX6xkQKKyZRWtddEKZirtuFHFNt4HF\naEew\r\n=cjlf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDEgjg5ryJDQJAkFPpVB1V9oN/fPaUdCnR+FZ0f9hXQawIgTkU/6z8l7wyl75rS4FnCHVdm0LVY60TLb1R+t/dadcI="}]},"maintainers":[{"name":"alu0101042305","email":"alu0101042305@ull.edu.es"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/eggparser_1.2.3_1557051182789_0.43244060361003056"},"_hasShrinkwrap":false},"1.2.4":{"name":"@alu0101042305/eggparser","version":"1.2.4","description":"* [Eloquent JS. Chapter 11. Project: A Programming Language](http://eloquentjavascript.net/11_language.html) * [Deploy at GitHub](https://ULL-ESIT-PL-1617.github.io/egg)","main":"lib/eggvm.js","scripts":{"test":"mocha","start":"./bin/egg.js examples/two.egg","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-1617/egg.git"},"keywords":["parsing","lisp"],"author":{"name":"Lucas Alonso Ortega"},"license":"ISC","bugs":{"url":"https://github.com/ULL-ESIT-PL-1617/egg/issues"},"homepage":"https://github.com/ULL-ESIT-PL-1617/egg#readme","devDependencies":{"gulp-shell":"*","mocha":"*","should":"*"},"dependencies":{"chai":"^4.2.0","readline":"^1.3.0","xregexp":"^4.2.4"},"directories":{"example":"examples","lib":"lib","test":"test"},"gitHead":"1c9e63e11c4fb71d3739a44edc491d7e5f56cf76","_id":"@alu0101042305/eggparser@1.2.4","_npmVersion":"6.5.0","_nodeVersion":"11.9.0","_npmUser":{"name":"alu0101042305","email":"alu0101042305@ull.edu.es"},"dist":{"integrity":"sha512-oDhtalxf5TIIN3OqRd+fVkZ6dRI+FyPvw90x0jCuUa9yACChBpNibXV4KYXHgiMEsQpxLmZR+Hom8Y/IGye82g==","shasum":"8a338478af2d2716b6295e5fc33d7322545c2ec4","tarball":"https://registry.npmjs.org/@alu0101042305/eggparser/-/eggparser-1.2.4.tgz","fileCount":54,"unpackedSize":38392,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJczsNlCRA9TVsSAnZWagAAsXYP/0otYn0aojP6n7HZQLq5\nusON4lh8Zu6Aikhtu44LyKe4CvQZi1AOdLBcJmdqVJGr3zr2JmJtWTplgEGn\nwy+y8yo1KgqD1smMW673WAHDs24G24/C4hjByjTk3uvq5kYmSbyw/CiQmMyL\ntsYVo5nS4fPRqi0urwvUxJ8eBuWZnqf+yYfLcx4FzPhYUdbkgx9nrZTZH0n7\nTr7HNe1ADajyDp9VMpiiEtuL+fbj7m58q8Mo+QWMNhHPZWOCRXZU9lOosPVV\nMYu49pLce/MEr1qD5nV07tue4NkSCgte+lT6AXsj87idsm3eVwRZyPHP+vbQ\nSDkCcFPcuk26nWwP03H6ImRomA2X4NYglE4AaDluViK9mrh3CvieCFkfVryW\nctpdr6STmtQspPB9sw8axgzqkmLuq+avFfyXkDYJUHzwXCVC4HvAEA8V2/aq\nUq4nhdQtZEc/OPQFzUTmosb/t+DFxw0LTKZJQqcJEorSvhsUFATZ4+vhgy8X\nGTHY+AXc5uVhuCvI2vwFTwSJSQgghZXurgsE957HsJE6q55wU1deDUKpxXjO\nLDCH4yOoIdpIyUcdXCSqOvbRp/RHsrxMKysnxa3fAR1o6mNoDl9bVJGjAR02\nrRu4zQ0dn2/thF5g4DzIlF+qLDLEUlIY5cVKit+bZ1PzCTcTgadHkStu4d8m\nyxYl\r\n=gnBp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBZRkTy/Ljcjl2FHWNq2FMaelhMHpUy9MHmXjDyD7T0rAiAZutdRzsy3HvcCPKGPeZvaoGfL9vx6Cne1CDb9fDxLeg=="}]},"maintainers":[{"name":"alu0101042305","email":"alu0101042305@ull.edu.es"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/eggparser_1.2.4_1557054309016_0.20843178661254225"},"_hasShrinkwrap":false},"1.2.5":{"name":"@alu0101042305/eggparser","version":"1.2.5","description":"* [Eloquent JS. Chapter 11. Project: A Programming Language](http://eloquentjavascript.net/11_language.html) * [Deploy at GitHub](https://ULL-ESIT-PL-1617.github.io/egg)","main":"lib/eggvm.js","scripts":{"test":"mocha","start":"./bin/egg.js examples/two.egg","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-1617/egg.git"},"keywords":["parsing","lisp"],"author":{"name":"Lucas Alonso Ortega"},"license":"ISC","bugs":{"url":"https://github.com/ULL-ESIT-PL-1617/egg/issues"},"homepage":"https://github.com/ULL-ESIT-PL-1617/egg#readme","devDependencies":{"gulp-shell":"*","mocha":"*","should":"*"},"dependencies":{"chai":"^4.2.0","readline":"^1.3.0","xregexp":"^4.2.4"},"directories":{"example":"examples","lib":"lib","test":"test"},"gitHead":"cee0f3660341f29a341a2181a27c3f88275890d7","_id":"@alu0101042305/eggparser@1.2.5","_npmVersion":"6.5.0","_nodeVersion":"11.9.0","_npmUser":{"name":"alu0101042305","email":"alu0101042305@ull.edu.es"},"dist":{"integrity":"sha512-DzqWU0fS12Z3B6yH2vJCg7b/p9epVCbyNkU4+opBen0noyo8wSgIcAqCxAwmsP3NgOolghD6JyMxjerUwCxJLg==","shasum":"368465847691f59b845ae636eb43bdb7b7ed636d","tarball":"https://registry.npmjs.org/@alu0101042305/eggparser/-/eggparser-1.2.5.tgz","fileCount":54,"unpackedSize":38188,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc1u2VCRA9TVsSAnZWagAACkkP/Rez9TxlEZNezvGafS5P\nUAt4j6MpzDPUsgwZf7dBKaX9K0buKJvlBYrNaShHdg6X46t79lGqkTsGVTKJ\nWgh9bJGxahZFnYBER3akIALoK6aFybXvHWIppAi8iZ/lLGiZQJaaBPpUaf7H\nLSOOYFdFjfN2DOEKxg6Dr4CgcBzzi5Q2oeZoLgsSCOXrOWMfcK4tJzNtNzq6\n9P0dyb408q75MxorGKCOMORGD/AmJ0wo+kSiP/bbijTHnPdXmyR4Oo00Y/yS\nmgGzxb7IJl3M/obNNXSKEZJ4QVXwtPB6nHIRvUC+d+tA618oxWCT8NENljkb\nio2zAYeWm7+X3gtk6APzxS39C+VHBX26h7kIpi7FifbzBnd3RfEYFdHqcZy5\nDmm5v+bm8wo6iSdjd9tZJKThvDH/nzsxslvmPDjUXdAmwk7DNNBwdi/5hKme\nyd9vBz1Qntlfnzaj0IIt5URuIFtAhunX/AQ9J5eTvAhah6K12y3dPDvQOwVy\nnC+f0/nHrR+dco2RVqXcSdnyl4AX40HG8nL3d8dSpdqbt/dU/FBMMDB4RbnL\nozhZFg/rgFbRJtR1DJ2aeCU9xr58ssrjllJB5kTsuxyqVNIAw+Tfy4bcHGE2\nk5M0nafKUFNwx+dWVQhO9vdQekj9JfLlepsQYL6KCrP3YfXjIxyM/BlEYqWl\nckG6\r\n=FOis\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDKvH69AvTxx2VeLHnO5QzDA8X4EJh10/PKG8PQwDHn/AIgXKUqwiAxIyz1GzWXnuuFk2gJje9AOiyF977G9yfVtqk="}]},"maintainers":[{"name":"alu0101042305","email":"alu0101042305@ull.edu.es"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/eggparser_1.2.5_1557589396348_0.27933302914942604"},"_hasShrinkwrap":false},"1.2.6":{"name":"@alu0101042305/eggparser","version":"1.2.6","description":"* [Eloquent JS. Chapter 11. Project: A Programming Language](http://eloquentjavascript.net/11_language.html) * [Deploy at GitHub](https://ULL-ESIT-PL-1617.github.io/egg)","main":"lib/eggvm.js","scripts":{"test":"mocha","start":"./bin/egg.js examples/two.egg","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-1617/egg.git"},"keywords":["parsing","lisp"],"author":{"name":"Lucas Alonso Ortega"},"license":"ISC","bugs":{"url":"https://github.com/ULL-ESIT-PL-1617/egg/issues"},"homepage":"https://github.com/ULL-ESIT-PL-1617/egg#readme","devDependencies":{"gulp-shell":"*","mocha":"*","should":"*"},"dependencies":{"chai":"^4.2.0","readline":"^1.3.0","xregexp":"^4.2.4"},"directories":{"example":"examples","lib":"lib","test":"test"},"gitHead":"546a64b231db41eb4e9e537f97ac7f042aa6d9ea","_id":"@alu0101042305/eggparser@1.2.6","_npmVersion":"6.5.0","_nodeVersion":"11.9.0","_npmUser":{"name":"alu0101042305","email":"alu0101042305@ull.edu.es"},"dist":{"integrity":"sha512-SofdEnz9908QYGeZenCLR+F9CraZVe0N+VAwbCmVUMl5IjBYhZWK3IkL5LCX/qyf3WyEBMC99onX5Ey8wU2LUg==","shasum":"a882c39aa407ef05e1210b29bc788491ecdbc657","tarball":"https://registry.npmjs.org/@alu0101042305/eggparser/-/eggparser-1.2.6.tgz","fileCount":54,"unpackedSize":38375,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc29IoCRA9TVsSAnZWagAAdJYP/2+G8hKZXlBmEzcwOMgm\nCDWP4LrzdWRC3F4QXuAlEFtXObzhAh2I5MAT4j9H8aGGdIk7XVJsG19neuhy\nBJvzqBHhXXiv2SVB+UgtrQAPfv8lvmCwYFhY2ppt6+MEiqVDH+uR2xrd39sl\ny0rWMcl8siGG74ips5V8AGdZNJ7r2rI4qpNdkmGUyQY/Ha+G30lDQqU1xW87\nAeCYtgwtzQ3ItFCz0cKqF6dZRPbD0GJsogHRKgeHHH1SFS6OoevGD0ezuLDt\n/K/C3LJnJNzmPB1u9YEl478zoZTd9hama3JNfcnJPTffEx5xSoNqBM0iwbTb\nS1DQF0n/FkN59x3AvwfIU+TG5iXdstEBzEkvxJhMtWzIdRNIoQmeIkPKMSbe\niYxcLiOw8sGOEd6jNkBk/W/eBJmheqSWf7GairiymxQitYJerB+tpLPv0jOj\nPWBi+2lJutX0HNANBEBae4N2icbXqkdpQFqykEad5HSrbkoFHj09djF6LJ1t\nxoeFfgDbprtBQh5iEmbQT8PwetSPLZimhqrWOs28E4SAPblsBdWF6cOuct+F\nM+CaA3l8K9nwLOt2NmaYKeuvHggYyuyYy4H6DXwm/Va7ACjrhKyrcrquAxF3\n+NdhosRgSqkPFdUrUVfe0eVthuVvtDnST6r1ACUlqzWSKWv723o3PTfWY4EW\n7QCs\r\n=4NBN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCahGxvPJ1hPzBU0gjPtnSci4w7+2F5pco/olIDbAmYngIhAJrIkOZe2RbHkx4EOM/cv3FNCgpNaeoazJmpKFWu/zdc"}]},"maintainers":[{"name":"alu0101042305","email":"alu0101042305@ull.edu.es"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/eggparser_1.2.6_1557910056000_0.2751346323941095"},"_hasShrinkwrap":false}},"time":{"created":"2019-04-06T17:19:10.964Z","1.2.1":"2019-04-06T17:19:11.298Z","modified":"2022-04-04T13:40:59.838Z","1.2.3":"2019-05-05T10:13:02.967Z","1.2.4":"2019-05-05T11:05:09.212Z","1.2.5":"2019-05-11T15:43:16.586Z","1.2.6":"2019-05-15T08:47:36.308Z"},"maintainers":[{"name":"alu0101042305","email":"alu0101042305@ull.edu.es"}],"description":"* [Eloquent JS. Chapter 11. Project: A Programming Language](http://eloquentjavascript.net/11_language.html) * [Deploy at GitHub](https://ULL-ESIT-PL-1617.github.io/egg)","homepage":"https://github.com/ULL-ESIT-PL-1617/egg#readme","keywords":["parsing","lisp"],"repository":{"type":"git","url":"git+https://github.com/ULL-ESIT-PL-1617/egg.git"},"author":{"name":"Lucas Alonso Ortega"},"bugs":{"url":"https://github.com/ULL-ESIT-PL-1617/egg/issues"},"license":"ISC","readme":"[![Build Status](https://travis-ci.com/ULL-ESIT-PL-1819/p5-t1-egg-0-alu0101042305.svg?token=71fZNHvFT2aRteDELdvu&branch=master)](https://travis-ci.com/ULL-ESIT-PL-1819/p5-t1-egg-0-alu0101042305)\n[![npm version](https://badge.fury.io/js/%40alu0101042305%2Feggparser.svg)](https://badge.fury.io/js/%40alu0101042305%2Feggparser)\n\n### Code from Eloquent JS. Chapter 11. Project: A Programming Language\n\n* [Eloquent JS. Chapter 11. Project: A Programming Language](http://eloquentjavascript.net/11_language.html)\n* [As an npm module](https://www.npmjs.com/package/@crguezl/eloquentjsegg)\n* [gist to check the npm module](https://gist.github.com/crguezl/8dfcaa01a0377dead374bc35c462c29d)\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\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\n* [Directory with examples](https://github.com/ULL-ESIT-PL-1617/egg/tree/master/examples)\n\n### Instalation\n\n```\n$ npm i -g @crguezl/eloquentjsegg\n...\n```\n\n### Executables\n\n* `egg` \n    - Runs an egg program: `egg examples/two.egg` compiles the source onto the AST and interprets the AST\n\n```\n$ cat 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$ egg one.egg\n50\n```\n\n* `eggc`\n    - Compiles the input program to produce a JSON containing the tree: `eggc examples/two.egg` produces the JSON file `examples/two.egg.evm`\n* `evm` \n    - Egg Virtual Machine. Runs the tree: `evm examples/two.egg.evm`\n```\n$ eggc one.egg\n$ ls -ltr | tail -1\n-rw-r--r--  1 casiano  wheel  1656 19 mar 08:05 one.egg.evm\n$ evm 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### Using it as a library\n\n```js\n> egg = require('@crguezl/eloquentjsegg')\n{ run: [Function: run],\n  runFromFile: [Function: runFromFile],\n  runFromEVM: [Function: runFromEVM],\n  parser: \n   { getProgram: [Function: getProgram],\n     lex: [Function: lex],\n     parse: [Function: parse],\n     parseApply: [Function: parseApply],\n     parseExpression: [Function: parseExpression],\n     parseFromFile: [Function: parseFromFile],\n     setProgram: [Function: setProgram] } }\n> parser = egg.parser\n> parser.parse('def(x,4)')\n{ type: 'apply',\n  operator: { type: 'word', name: 'def' },\n  args: [ { type: 'word', name: 'x' }, { type: 'value', value: 4 } ] }\n```\n","readmeFilename":"README.md"}