{"_id":"@caijs/lexer","_rev":"2-c07c2dc0d4ff6bbf1d5624269be4bfe1","name":"@caijs/lexer","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"name":"@caijs/lexer","description":"Language Lexer","version":"1.0.0","main":"src/index.js","scripts":{"coveralls":"jest --coverage && cat ./tests/coverage/lcov.info | coveralls","lint":"eslint .","lintfix":"eslint --fix .","test":"eslint --fix . && jest --silent --coverage --maxWorkers=4 .","bench":"node ./bench"},"author":{"name":"Jesus Seijas","email":"jseijas@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/CAI-js/lexer.git"},"bugs":{"url":"git+https://github.com/CAI-js/lexer/issues"},"maintainers":[{"name":"jesus-seijas","email":"jseijas@gmail.com"},{"name":"jseijas","email":"jseijas@gmail.com"}],"license":"MIT","dependencies":{},"devDependencies":{"coveralls":"^3.0.9","eslint":"^6.8.0","eslint-config-airbnb-base":"^14.0.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.8.2","eslint-plugin-prettier":"^3.1.2","jest":"^25.1.0","prettier":"^1.19.1"},"jest":{"verbose":true,"testURL":"http://localhost/","collectCoverage":false,"collectCoverageFrom":[],"coverageDirectory":"coverage","testEnvironment":"node"},"gitHead":"3c8372b9a8cea0096c4aecf97e39a8a7cd15788d","homepage":"https://github.com/CAI-js/lexer#readme","_id":"@caijs/lexer@1.0.0","_nodeVersion":"12.12.0","_npmVersion":"6.11.3","dist":{"integrity":"sha512-uzjw5ph8D/jWwe2W2hZxscCo26QqUSgVc5p6YoNnE9w3Fl038Y6YSrDiYM67kTrtKYoRJzfi/f/FYHjOHkcSdw==","shasum":"71a7c932b7505ed632f26c3d0bf81ee6fb98dbac","tarball":"https://registry.npmjs.org/@caijs/lexer/-/lexer-1.0.0.tgz","fileCount":7,"unpackedSize":13772,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeZrVNCRA9TVsSAnZWagAAqHsP/RPpWNHbFFVhHs9kLNdE\nIZn6QWNXYmvZ1zKTMx5AdRB0MV2ZIG0vqVNMTVDWNuMvFAlGB/y/QG2t4Pbw\nDkuKbs/O50GrSIu3WeCsBKjua+S9AuPW8jFxA0YGPnBQXGbvqFzSIIj352Bz\n+0wSb1XRlJNT0e9dIu4bFogL2okKemNeSylPQH5QJga2xmceaIQtFeTQdFWn\n9j9vMX/Wei4vX+Ww44xl2DU3lN3rYaST43HUMVuirvI5XSuAtW3158YlvC9y\nEx0+RkC9SjPTNf9bLDkySlwBxwATKH5gTftY9WokqWER0MlULHdR0iRyQF+a\ntfJMi7wzsK59BUIhjSCz2yp+Um65qUuJVfsyJdcPbqah2soaOq6qkvekqY/k\njgcziuQx2DXM1L0FU3oXt2Z0GBSqWgLnD6JbOVVrbPSv/WPJAB8GQk3ST7LY\nKPbajbA1fqxJvriZOjew+3FDJSvb6HT2rR7m/YF6n9Yh00JcCqAPAQvB6kER\nA/r1w6HOFbI79wlIS949cPpFJQglrUoXeVQowVQARiO8HyTd3OV8VbTrxjmQ\ndYJ5rtgDim0cIiBjDbxwO9O9vtzlx1agT1gGzSAHErD8ZE7BM+B2Js/CtuLP\nkREv7WTh8BBA1O34Q+C0rm02fDQYHAOs8/hmo91g9wJ0rtNpCS0bf1zRuKcl\nDt75\r\n=s18Q\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGmrw3O4+TOmCYU7PCnZ330BxfPKBuNvMBcVE7t8MXq+AiBvCGmOt8Up3J+3j0elhiMEdG5s+li061Gla0g09PSboQ=="}]},"_npmUser":{"name":"jesus-seijas","email":"jseijas@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/lexer_1.0.0_1583789388862_0.5237861566677908"},"_hasShrinkwrap":false},"1.0.1":{"name":"@caijs/lexer","description":"Language Lexer","version":"1.0.1","main":"src/index.js","scripts":{"coveralls":"jest --coverage && cat ./tests/coverage/lcov.info | coveralls","lint":"eslint .","lintfix":"eslint --fix .","test":"eslint --fix . && jest --silent --coverage --maxWorkers=4 .","bench":"node ./bench"},"author":{"name":"Jesus Seijas","email":"jseijas@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/CAI-js/lexer.git"},"bugs":{"url":"git+https://github.com/CAI-js/lexer/issues"},"maintainers":[{"name":"jesus-seijas","email":"jseijas@gmail.com"},{"name":"jseijas","email":"jseijas@gmail.com"}],"license":"MIT","dependencies":{},"devDependencies":{"coveralls":"^3.0.9","eslint":"^6.8.0","eslint-config-airbnb-base":"^14.0.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.8.2","eslint-plugin-prettier":"^3.1.2","jest":"^25.1.0","prettier":"^1.19.1"},"jest":{"verbose":true,"testURL":"http://localhost/","collectCoverage":false,"collectCoverageFrom":[],"coverageDirectory":"coverage","testEnvironment":"node"},"gitHead":"85e3060deb6c2800a6e9e4e9d05811330592fb7f","homepage":"https://github.com/CAI-js/lexer#readme","_id":"@caijs/lexer@1.0.1","_nodeVersion":"12.12.0","_npmVersion":"6.11.3","dist":{"integrity":"sha512-SDv7vkJdMZSH7anbjJ2s2LB4GpITBWT5EIgIS1fhBHm5K9YqwmNr+KLmRqp8TmWrK4DC0eplK3D3ZOqN2mEHDg==","shasum":"076d700eca1d9f906528e2d98f0023ab68e92c53","tarball":"https://registry.npmjs.org/@caijs/lexer/-/lexer-1.0.1.tgz","fileCount":8,"unpackedSize":14422,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeaAjiCRA9TVsSAnZWagAAUXwP/0zFsFZFhJhiBu3Q2uQh\n1ibzYZhTjwI8s4f2VQWw2EoUjAxqi/ng16P89uy93ZIyF4bn3c+friLfjl9x\n1YW9Lj2WOwFJtyKdlR3YbCnuAPJKWhyXVF0yNtZn9+E0IWep72Vhf0TlY4Q/\nCim0XJ56WdBdEBu/qadfZd8CgAwDC0sA9rFe2hC3A9RQpJZ883ufQJwMavff\nYhE9QT97pMeCElxMHGyLzzUBWjSgnvOwFOiC5tBgMnxKN4Sn8qS6jwtYPP0g\nTsgKeB/m4EyyR4ao3nJzo98/4SeX4fzVPrnmxSN0dMyfs2XoA8yj/CJtHXNV\ntUWXQJr9+a9aEjOd7ZC5thgHHBdoAZHsODa0Km7ITwgQCB/k2rETC/CqFMoU\npYQCz084C+m+PAyMmuSKdiw0kz4Arzbuk5vnE5Dldo71u2piNtLl2JXMeh2r\na45qG1/4GRGA/mp781BN9/qkQbGtG7JjcFq9NY0eLsMsi62yNvRwhtiEMJE2\nOh6nyg/BaGNAwa6jJSDwKXBEsyBQems6YxU/4qmGIc68zpPvFhcA+9WebFRR\nfDfvtoiSSiLrl2cGbcIppdODItv4VyRHqtMuLC5KQOPqLkaR1akGgUR7wbZ8\n5PTwRjBkAWzSONHrIWr632BqJqbB6v5YXqgtxdM6KuG4OXlHVOFXCV3NrtjZ\nF1OK\r\n=DkoW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDvG8WVmI7iAkBMYJDr756AOVUyQ/ugLTJfFUFXVuz+VwIgAuQeJTfzQ6vMdVnX8ezlCNEcMEVYSLhZhD6Qh8/hfCE="}]},"_npmUser":{"name":"jesus-seijas","email":"jseijas@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/lexer_1.0.1_1583876322335_0.41176847344282574"},"_hasShrinkwrap":false}},"time":{"created":"2020-03-09T21:29:48.631Z","1.0.0":"2020-03-09T21:29:49.060Z","modified":"2022-04-04T21:30:58.266Z","1.0.1":"2020-03-10T21:38:42.485Z"},"maintainers":[{"name":"jesus-seijas","email":"jseijas@gmail.com"},{"name":"jseijas","email":"jseijas@gmail.com"}],"description":"Language Lexer","homepage":"https://github.com/CAI-js/lexer#readme","repository":{"type":"git","url":"git+https://github.com/CAI-js/lexer.git"},"author":{"name":"Jesus Seijas","email":"jseijas@gmail.com"},"bugs":{"url":"git+https://github.com/CAI-js/lexer/issues"},"license":"MIT","readme":"# @caijs/lexer\r\n\r\n[![Build Status](https://travis-ci.com/CAI-js/lexer.svg?branch=master)](https://travis-ci.com/CAI-js/lexer)\r\n[![Coverage Status](https://coveralls.io/repos/github/CAI-js/lexer/badge.svg?branch=master)](https://coveralls.io/github/CAI-js/lexer?branch=master)\r\n[![NPM version](https://img.shields.io/npm/v/@caijs/lexer.svg?style=flat)](https://www.npmjs.com/package/@caijs/lexer)\r\n[![NPM downloads](https://img.shields.io/npm/dm/@caijs/lexer.svg?style=flat)](https://www.npmjs.com/package/@caijs/lexer)\r\n\r\n@caijs/lexer Is a lexer to build language parsers.\r\n\r\n## Installation\r\n\r\nIn your project folder run:\r\n\r\n```bash\r\n$ npm install @caijs/lexer\r\n```\r\n\r\n## Examples of use\r\n\r\nYou can evaluate an string\r\n\r\n```javascript\r\nconst Lexer = require('@caijs/lexer');\r\n\r\nconst script = `\r\nn = 0\r\nwhile n < 10:\r\n  n += 1\r\nprint(\"hola\")\r\n`;\r\nconst lexer = new Lexer();\r\nlexer.init(script);\r\nconst tokens = [];\r\nlet token;\r\ndo {\r\n  token = lexer.nextToken();\r\n  tokens.push(token);\r\n} while (token && token.type !== Lexer.TokenType.EndOfFile);\r\nconsole.log(tokens);\r\n```\r\n\r\nThis will show: \r\n```javascript\r\n[\r\n  Token { value: 'n', type: 1 },     // Identifier\r\n  Token { value: '=', type: 7 },     // Assignment\r\n  Token { value: '0', type: 2 },     // Number\r\n  Token { value: '\\n', type: 6 },    // End of Line\r\n  Token { value: 'while', type: 1 }, // Identifier\r\n  Token { value: 'n', type: 1 },     // Identifier\r\n  Token { value: '<', type: 4 },     // Operator\r\n  Token { value: '10', type: 2 },    // Number\r\n  Token { value: ':', type: 5 },     // Separator\r\n  Token { value: '\\n', type: 6 },    // End of Line\r\n  Token { value: 'n', type: 1 },     // Identifier\r\n  Token { value: '+=', type: 7 },    // Assignment\r\n  Token { value: '1', type: 2 },     // Number\r\n  Token { value: '\\n', type: 6 },    // End of Line\r\n  Token { value: 'print', type: 1 }, // Identifier\r\n  Token { value: '(', type: 5 },     // Separator\r\n  Token { value: 'hola', type: 3 },  // String\r\n  Token { value: ')', type: 5 },     // Separator\r\n  Token { value: '', type: 8 }       // End of File\r\n]\r\n```\r\n","readmeFilename":"README.md"}