{"_id":"grammex","_rev":"3757999","name":"grammex","description":"A tiny, PEG-like system for building language grammars with regexes.","dist-tags":{"latest":"3.1.10"},"maintainers":[{"name":"fabiospampinato","email":"spampinabio@gmail.com"}],"time":{"modified":"2025-03-18T07:12:49.000Z","created":"2023-02-07T01:07:58.832Z","3.1.10":"2025-02-17T17:42:03.563Z","3.1.9":"2025-02-17T17:04:02.973Z","3.1.8":"2025-02-17T15:51:02.699Z","3.1.7":"2025-02-17T15:44:38.400Z","3.1.6":"2025-02-17T03:18:19.477Z","3.1.5":"2025-02-16T23:31:03.160Z","3.1.4":"2025-02-16T22:01:05.192Z","3.1.3":"2024-02-11T00:34:51.161Z","3.1.2":"2023-09-03T13:18:08.322Z","3.1.1":"2023-07-30T23:56:12.977Z","3.1.0":"2023-07-30T14:30:03.120Z","3.0.0":"2023-07-30T00:36:22.625Z","2.0.0":"2023-07-25T15:50:34.583Z","1.2.1":"2023-07-25T09:52:20.258Z","1.2.0":"2023-07-23T09:34:09.177Z","1.1.0":"2023-02-12T03:03:37.265Z","1.0.1":"2023-02-08T21:11:51.819Z","1.0.0":"2023-02-07T01:07:58.832Z"},"users":{},"repository":{"type":"git","url":"git+https://github.com/fabiospampinato/grammex.git"},"versions":{"3.1.10":{"name":"grammex","repository":{"type":"git","url":"git+https://github.com/fabiospampinato/grammex.git"},"description":"A tiny, PEG-like system for building language grammars with regexes.","license":"MIT","version":"3.1.10","type":"module","main":"dist/index.js","exports":"./dist/index.js","types":"./dist/index.d.ts","sideEffects":false,"scripts":{"benchmark":"tsex benchmark","benchmark:watch":"tsex benchmark --watch","clean":"tsex clean","compile":"tsex compile","compile:watch":"tsex compile --watch","test":"tsex test","test:watch":"tsex test --watch","prepublishOnly":"tsex prepare"},"keywords":["tiny","peg","regex","parsing","expression","grammar"],"devDependencies":{"benchloop":"^2.1.1","fava":"^0.3.4","tsex":"^4.0.2","typescript":"^5.7.3"},"_id":"grammex@3.1.10","gitHead":"8aa2298a79fc129cb6bba894e3c58a7bace8a2e9","bugs":{"url":"https://github.com/fabiospampinato/grammex/issues"},"homepage":"https://github.com/fabiospampinato/grammex#readme","_nodeVersion":"22.2.0","_npmVersion":"10.7.0","dist":{"shasum":"bd671912744bf73176b331fccdde43c079790b01","size":7300,"noattachment":false,"key":"/grammex/-/grammex-3.1.10.tgz","tarball":"http://registry.cnpm.dingdandao.com/grammex/download/grammex-3.1.10.tgz"},"_npmUser":{"name":"fabiospampinato","email":"spampinabio@gmail.com"},"directories":{},"maintainers":[{"name":"fabiospampinato","email":"spampinabio@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/grammex_3.1.10_1739814123395_0.13934533095920787"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-02-17T17:42:03.563Z","publish_time":1739814123563,"_source_registry_name":"default","_cnpm_publish_time":1739814123563},"3.1.9":{"name":"grammex","repository":{"type":"git","url":"git+https://github.com/fabiospampinato/grammex.git"},"description":"A tiny, PEG-like system for building language grammars with regexes.","license":"MIT","version":"3.1.9","type":"module","main":"dist/index.js","exports":"./dist/index.js","types":"./dist/index.d.ts","sideEffects":false,"scripts":{"benchmark":"tsex benchmark","benchmark:watch":"tsex benchmark --watch","clean":"tsex clean","compile":"tsex compile","compile:watch":"tsex compile --watch","test":"tsex test","test:watch":"tsex test --watch","prepublishOnly":"tsex prepare"},"keywords":["tiny","peg","regex","parsing","expression","grammar"],"devDependencies":{"benchloop":"^2.1.1","fava":"^0.3.4","tsex":"^4.0.2","typescript":"^5.7.3"},"_id":"grammex@3.1.9","gitHead":"995432f9f25ae76763dbb3012050b77174c1e3d5","bugs":{"url":"https://github.com/fabiospampinato/grammex/issues"},"homepage":"https://github.com/fabiospampinato/grammex#readme","_nodeVersion":"22.2.0","_npmVersion":"10.7.0","dist":{"shasum":"236dbac8d308c4acc3dfa9e0260c78d7f994e114","size":7297,"noattachment":false,"key":"/grammex/-/grammex-3.1.9.tgz","tarball":"http://registry.cnpm.dingdandao.com/grammex/download/grammex-3.1.9.tgz"},"_npmUser":{"name":"fabiospampinato","email":"spampinabio@gmail.com"},"directories":{},"maintainers":[{"name":"fabiospampinato","email":"spampinabio@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/grammex_3.1.9_1739811842778_0.3785789950517551"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-02-17T17:04:02.973Z","publish_time":1739811842973,"_source_registry_name":"default","_cnpm_publish_time":1739811842973},"3.1.8":{"name":"grammex","repository":{"type":"git","url":"git+https://github.com/fabiospampinato/grammex.git"},"description":"A tiny, PEG-like system for building language grammars with regexes.","license":"MIT","version":"3.1.8","type":"module","main":"dist/index.js","exports":"./dist/index.js","types":"./dist/index.d.ts","sideEffects":false,"scripts":{"benchmark":"tsex benchmark","benchmark:watch":"tsex benchmark --watch","clean":"tsex clean","compile":"tsex compile","compile:watch":"tsex compile --watch","test":"tsex test","test:watch":"tsex test --watch","prepublishOnly":"tsex prepare"},"keywords":["tiny","peg","regex","parsing","expression","grammar"],"devDependencies":{"benchloop":"^2.1.1","fava":"^0.3.4","tsex":"^4.0.2","typescript":"^5.7.3"},"_id":"grammex@3.1.8","gitHead":"65de04fd382a8b0c7b08de55675392cc5071ce07","bugs":{"url":"https://github.com/fabiospampinato/grammex/issues"},"homepage":"https://github.com/fabiospampinato/grammex#readme","_nodeVersion":"22.2.0","_npmVersion":"10.7.0","dist":{"shasum":"1d31a423a2d26ef73477c6cfe76fe327b059cce7","size":7241,"noattachment":false,"key":"/grammex/-/grammex-3.1.8.tgz","tarball":"http://registry.cnpm.dingdandao.com/grammex/download/grammex-3.1.8.tgz"},"_npmUser":{"name":"fabiospampinato","email":"spampinabio@gmail.com"},"directories":{},"maintainers":[{"name":"fabiospampinato","email":"spampinabio@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/grammex_3.1.8_1739807462499_0.9745206905806987"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-02-17T15:51:02.699Z","publish_time":1739807462699,"_source_registry_name":"default","_cnpm_publish_time":1739807462699},"3.1.7":{"name":"grammex","version":"3.1.7","keywords":["tiny","peg","regex","parsing","expression","grammar"],"license":"MIT","_id":"grammex@3.1.7","maintainers":[{"name":"fabiospampinato","email":"spampinabio@gmail.com"}],"homepage":"https://github.com/fabiospampinato/grammex#readme","bugs":{"url":"https://github.com/fabiospampinato/grammex/issues"},"dist":{"shasum":"4ac4e7d245ad9e3c2472a3465c144aa37d4328b8","size":7214,"noattachment":false,"key":"/grammex/-/grammex-3.1.7.tgz","tarball":"http://registry.cnpm.dingdandao.com/grammex/download/grammex-3.1.7.tgz"},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","exports":"./dist/index.js","gitHead":"c754654e82cced3bb86fa0b7641564bc78e3aad9","scripts":{"test":"tsex test","clean":"tsex clean","compile":"tsex compile","benchmark":"tsex benchmark","test:watch":"tsex test --watch","compile:watch":"tsex compile --watch","prepublishOnly":"tsex prepare","benchmark:watch":"tsex benchmark --watch"},"_npmUser":{"name":"fabiospampinato","email":"spampinabio@gmail.com"},"repository":{"url":"git+https://github.com/fabiospampinato/grammex.git","type":"git"},"_npmVersion":"10.7.0","description":"A tiny, PEG-like system for building language grammars with regexes.","directories":{},"sideEffects":false,"_nodeVersion":"22.2.0","_hasShrinkwrap":false,"devDependencies":{"fava":"^0.3.4","tsex":"^4.0.2","benchloop":"^2.1.1","typescript":"^5.7.3"},"_npmOperationalInternal":{"tmp":"tmp/grammex_3.1.7_1739807078239_0.2205666201118095","host":"s3://npm-registry-packages-npm-production"},"_cnpmcore_publish_time":"2025-02-17T15:44:38.400Z","publish_time":1739807078400,"_source_registry_name":"default","_cnpm_publish_time":1739807078400},"3.1.6":{"name":"grammex","repository":{"type":"git","url":"git+https://github.com/fabiospampinato/grammex.git"},"description":"A tiny, PEG-like system for building language grammars with regexes.","license":"MIT","version":"3.1.6","type":"module","main":"dist/index.js","exports":"./dist/index.js","types":"./dist/index.d.ts","sideEffects":false,"scripts":{"benchmark":"tsex benchmark","benchmark:watch":"tsex benchmark --watch","clean":"tsex clean","compile":"tsex compile","compile:watch":"tsex compile --watch","test":"tsex test","test:watch":"tsex test --watch","prepublishOnly":"tsex prepare"},"keywords":["tiny","peg","regex","parsing","expression","grammar"],"devDependencies":{"benchloop":"^2.1.1","fava":"^0.3.4","tsex":"^4.0.2","typescript":"^5.7.3"},"_id":"grammex@3.1.6","gitHead":"610a2cd81dfa45b65c48a0f22f462f5ea9a3ed65","bugs":{"url":"https://github.com/fabiospampinato/grammex/issues"},"homepage":"https://github.com/fabiospampinato/grammex#readme","_nodeVersion":"18.19.0","_npmVersion":"10.2.3","dist":{"shasum":"6d45e15c0977b2b1221715b0682bb6c537304c57","size":7210,"noattachment":false,"key":"/grammex/-/grammex-3.1.6.tgz","tarball":"http://registry.cnpm.dingdandao.com/grammex/download/grammex-3.1.6.tgz"},"_npmUser":{"name":"fabiospampinato","email":"spampinabio@gmail.com"},"directories":{},"maintainers":[{"name":"fabiospampinato","email":"spampinabio@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/grammex_3.1.6_1739762299287_0.009204916518670503"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-02-17T03:18:19.477Z","publish_time":1739762299477,"_source_registry_name":"default","_cnpm_publish_time":1739762299477},"3.1.5":{"name":"grammex","repository":{"type":"git","url":"git+https://github.com/fabiospampinato/grammex.git"},"description":"A tiny, PEG-like system for building language grammars with regexes.","license":"MIT","version":"3.1.5","type":"module","main":"dist/index.js","exports":"./dist/index.js","types":"./dist/index.d.ts","sideEffects":false,"scripts":{"benchmark":"tsex benchmark","benchmark:watch":"tsex benchmark --watch","clean":"tsex clean","compile":"tsex compile","compile:watch":"tsex compile --watch","test":"tsex test","test:watch":"tsex test --watch","prepublishOnly":"tsex prepare"},"keywords":["tiny","peg","regex","parsing","expression","grammar"],"devDependencies":{"benchloop":"^2.1.1","fava":"^0.3.4","tsex":"^4.0.2","typescript":"^5.7.3"},"_id":"grammex@3.1.5","gitHead":"b6382eb40345b771da470f74279d9c7d6e92e03a","bugs":{"url":"https://github.com/fabiospampinato/grammex/issues"},"homepage":"https://github.com/fabiospampinato/grammex#readme","_nodeVersion":"22.2.0","_npmVersion":"10.7.0","dist":{"shasum":"5b9d8bcd76630dcef46a722ef4e14aa1e70c49e5","size":7196,"noattachment":false,"key":"/grammex/-/grammex-3.1.5.tgz","tarball":"http://registry.cnpm.dingdandao.com/grammex/download/grammex-3.1.5.tgz"},"_npmUser":{"name":"fabiospampinato","email":"spampinabio@gmail.com"},"directories":{},"maintainers":[{"name":"fabiospampinato","email":"spampinabio@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/grammex_3.1.5_1739748662968_0.4806400958897932"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-02-16T23:31:03.160Z","publish_time":1739748663160,"_source_registry_name":"default","_cnpm_publish_time":1739748663160},"3.1.4":{"name":"grammex","repository":{"type":"git","url":"git+https://github.com/fabiospampinato/grammex.git"},"description":"A tiny, PEG-like system for building language grammars with regexes.","license":"MIT","version":"3.1.4","type":"module","main":"dist/index.js","exports":"./dist/index.js","types":"./dist/index.d.ts","sideEffects":false,"scripts":{"benchmark":"tsex benchmark","benchmark:watch":"tsex benchmark --watch","clean":"tsex clean","compile":"tsex compile","compile:watch":"tsex compile --watch","test":"tsex test","test:watch":"tsex test --watch","prepublishOnly":"tsex prepare"},"keywords":["tiny","peg","regex","parsing","expression","grammar"],"devDependencies":{"benchloop":"^2.1.1","fava":"^0.3.4","tsex":"^4.0.2","typescript":"^5.7.3"},"_id":"grammex@3.1.4","gitHead":"bb4f1314a2f7df58e9258ed2f7b84561940716d2","bugs":{"url":"https://github.com/fabiospampinato/grammex/issues"},"homepage":"https://github.com/fabiospampinato/grammex#readme","_nodeVersion":"22.2.0","_npmVersion":"10.7.0","dist":{"shasum":"7de7607578f0c7e61f7b3bb9725c63b694b3a21f","size":7146,"noattachment":false,"key":"/grammex/-/grammex-3.1.4.tgz","tarball":"http://registry.cnpm.dingdandao.com/grammex/download/grammex-3.1.4.tgz"},"_npmUser":{"name":"fabiospampinato","email":"spampinabio@gmail.com"},"directories":{},"maintainers":[{"name":"fabiospampinato","email":"spampinabio@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/grammex_3.1.4_1739743265012_0.2713658995486896"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-02-16T22:01:05.192Z","publish_time":1739743265192,"_source_registry_name":"default","_cnpm_publish_time":1739743265192},"3.1.3":{"name":"grammex","repository":{"type":"git","url":"git+https://github.com/fabiospampinato/grammex.git"},"description":"A tiny, PEG-like system for building language grammars with regexes.","version":"3.1.3","type":"module","main":"dist/index.js","exports":"./dist/index.js","types":"./dist/index.d.ts","sideEffects":false,"scripts":{"benchmark":"tsex benchmark","benchmark:watch":"tsex benchmark --watch","clean":"tsex clean","compile":"tsex compile","compile:watch":"tsex compile --watch","test":"tsex test","test:watch":"tsex test --watch","prepublishOnly":"tsex prepare"},"keywords":["tiny","peg","regex","parsing","expression","grammar"],"devDependencies":{"benchloop":"^2.1.0","fava":"^0.2.0","tsex":"^3.0.1","typescript":"^5.1.6"},"_id":"grammex@3.1.3","gitHead":"74d76493ea7b1c1f4ea03f4dc06a4d8df2abc6de","bugs":{"url":"https://github.com/fabiospampinato/grammex/issues"},"homepage":"https://github.com/fabiospampinato/grammex#readme","_nodeVersion":"18.19.0","_npmVersion":"10.2.3","dist":{"shasum":"888e0e9a7f98bb417db241199d80c5e80246c054","size":23816,"noattachment":false,"key":"/grammex/-/grammex-3.1.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/grammex/download/grammex-3.1.3.tgz"},"_npmUser":{"name":"fabiospampinato","email":"spampinabio@gmail.com"},"directories":{},"maintainers":[{"name":"fabiospampinato","email":"spampinabio@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grammex_3.1.3_1707611691025_0.19872136590815526"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-02-11T00:34:51.161Z","publish_time":1707611691161,"_source_registry_name":"default","_cnpm_publish_time":1707611691161},"3.1.2":{"name":"grammex","repository":{"type":"git","url":"git+https://github.com/fabiospampinato/grammex.git"},"description":"A tiny, PEG-like system for building language grammars with regexes.","version":"3.1.2","type":"module","main":"dist/index.js","exports":"./dist/index.js","types":"./dist/index.d.ts","sideEffects":false,"scripts":{"benchmark":"tsex benchmark","benchmark:watch":"tsex benchmark --watch","clean":"tsex clean","compile":"tsex compile","compile:watch":"tsex compile --watch","test":"tsex test","test:watch":"tsex test --watch","prepublishOnly":"tsex prepare"},"keywords":["tiny","peg","regex","parsing","expression","grammar"],"devDependencies":{"benchloop":"^2.1.0","fava":"^0.2.0","tsex":"^3.0.1","typescript":"^5.1.6"},"gitHead":"6ccf38effdaa6ba336238ba72339be4827f0207f","bugs":{"url":"https://github.com/fabiospampinato/grammex/issues"},"homepage":"https://github.com/fabiospampinato/grammex#readme","_id":"grammex@3.1.2","_nodeVersion":"18.12.0","_npmVersion":"8.19.2","dist":{"shasum":"f52ebbc6b8bc0226f1b5c105701d2e62616b7e42","size":23543,"noattachment":false,"key":"/grammex/-/grammex-3.1.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/grammex/download/grammex-3.1.2.tgz"},"_npmUser":{"name":"fabiospampinato","email":"spampinabio@gmail.com"},"directories":{},"maintainers":[{"name":"fabiospampinato","email":"spampinabio@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grammex_3.1.2_1693747088058_0.04122591234308981"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2023-09-03T13:18:08.322Z","publish_time":1693747088322,"_source_registry_name":"default","_cnpm_publish_time":1693747088322},"3.1.1":{"name":"grammex","repository":{"type":"git","url":"git+https://github.com/fabiospampinato/grammex.git"},"description":"A tiny, PEG-like system for building language grammars with regexes.","version":"3.1.1","type":"module","main":"dist/index.js","exports":"./dist/index.js","types":"./dist/index.d.ts","sideEffects":false,"scripts":{"benchmark":"tsex benchmark","benchmark:watch":"tsex benchmark --watch","clean":"tsex clean","compile":"tsex compile","compile:watch":"tsex compile --watch","test":"tsex test","test:watch":"tsex test --watch","prepublishOnly":"tsex prepare"},"keywords":["tiny","peg","regex","parsing","expression","grammar"],"devDependencies":{"benchloop":"^2.1.0","fava":"^0.2.0","tsex":"^2.2.4","typescript":"^4.9.5"},"gitHead":"86d5d476c025d4abaf67b861e268bb5ea513a39d","bugs":{"url":"https://github.com/fabiospampinato/grammex/issues"},"homepage":"https://github.com/fabiospampinato/grammex#readme","_id":"grammex@3.1.1","_nodeVersion":"18.12.0","_npmVersion":"8.19.2","dist":{"shasum":"1e376979252b2e1e88f8927f8c89a7a9f49d8aff","size":23371,"noattachment":false,"key":"/grammex/-/grammex-3.1.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/grammex/download/grammex-3.1.1.tgz"},"_npmUser":{"name":"fabiospampinato","email":"spampinabio@gmail.com"},"directories":{},"maintainers":[{"name":"fabiospampinato","email":"spampinabio@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grammex_3.1.1_1690761372772_0.6721160040754595"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2023-07-30T23:56:12.977Z","publish_time":1690761372977,"_source_registry_name":"default","_cnpm_publish_time":1690761372977},"3.1.0":{"name":"grammex","repository":{"type":"git","url":"git+https://github.com/fabiospampinato/grammex.git"},"description":"A tiny, PEG-like system for building language grammars with regexes.","version":"3.1.0","type":"module","main":"dist/index.js","exports":"./dist/index.js","types":"./dist/index.d.ts","sideEffects":false,"scripts":{"benchmark":"tsex benchmark","benchmark:watch":"tsex benchmark --watch","clean":"tsex clean","compile":"tsex compile","compile:watch":"tsex compile --watch","test":"tsex test","test:watch":"tsex test --watch","prepublishOnly":"tsex prepare"},"keywords":["tiny","peg","regex","parsing","expression","grammar"],"devDependencies":{"benchloop":"^2.1.0","fava":"^0.2.0","tsex":"^2.2.4","typescript":"^4.9.5"},"gitHead":"dd586d6dcadc6bb4a47271dda7414a1571cc30b8","bugs":{"url":"https://github.com/fabiospampinato/grammex/issues"},"homepage":"https://github.com/fabiospampinato/grammex#readme","_id":"grammex@3.1.0","_nodeVersion":"18.12.0","_npmVersion":"8.19.2","dist":{"shasum":"2af05d3fd41d41ea1b4cfce711785fe474c8f2c7","size":23381,"noattachment":false,"key":"/grammex/-/grammex-3.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/grammex/download/grammex-3.1.0.tgz"},"_npmUser":{"name":"fabiospampinato","email":"spampinabio@gmail.com"},"directories":{},"maintainers":[{"name":"fabiospampinato","email":"spampinabio@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grammex_3.1.0_1690727402819_0.823175496791483"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2023-07-30T14:30:03.120Z","publish_time":1690727403120,"_source_registry_name":"default","_cnpm_publish_time":1690727403120},"3.0.0":{"name":"grammex","repository":{"type":"git","url":"git+https://github.com/fabiospampinato/grammex.git"},"description":"A tiny, PEG-like system for building language grammars with regexes.","version":"3.0.0","type":"module","main":"dist/index.js","exports":"./dist/index.js","types":"./dist/index.d.ts","sideEffects":false,"scripts":{"benchmark":"tsex benchmark","benchmark:watch":"tsex benchmark --watch","clean":"tsex clean","compile":"tsex compile","compile:watch":"tsex compile --watch","test":"tsex test","test:watch":"tsex test --watch","prepublishOnly":"tsex prepare"},"keywords":["tiny","peg","regex","parsing","expression","grammar"],"devDependencies":{"benchloop":"^2.1.0","fava":"^0.2.0","tsex":"^2.2.4","typescript":"^4.9.5"},"gitHead":"5ef6ada883a9a6502d4b9ed7bed737af168da132","bugs":{"url":"https://github.com/fabiospampinato/grammex/issues"},"homepage":"https://github.com/fabiospampinato/grammex#readme","_id":"grammex@3.0.0","_nodeVersion":"18.12.0","_npmVersion":"8.19.2","dist":{"shasum":"4de548f063f600679a621872403affca8fecb6b6","size":22982,"noattachment":false,"key":"/grammex/-/grammex-3.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/grammex/download/grammex-3.0.0.tgz"},"_npmUser":{"name":"fabiospampinato","email":"spampinabio@gmail.com"},"directories":{},"maintainers":[{"name":"fabiospampinato","email":"spampinabio@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grammex_3.0.0_1690677382467_0.4762029964230907"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2023-07-30T00:36:22.625Z","publish_time":1690677382625,"_source_registry_name":"default","_cnpm_publish_time":1690677382625},"2.0.0":{"name":"grammex","repository":{"type":"git","url":"git+https://github.com/fabiospampinato/grammex.git"},"description":"A tiny, PEG-like system for building language grammars with regexes.","version":"2.0.0","type":"module","main":"dist/index.js","exports":"./dist/index.js","types":"./dist/index.d.ts","sideEffects":false,"scripts":{"clean":"tsex clean","compile":"tsex compile","compile:watch":"tsex compile --watch","test":"tsex test","test:watch":"tsex test --watch","prepublishOnly":"tsex prepare"},"keywords":["tiny","peg","regex","parsing","expression","grammar"],"devDependencies":{"fava":"^0.2.0","tsex":"^2.2.4","typescript":"^4.9.5"},"gitHead":"7f6d64b70e311a0ffc950907c9b4453ab58b4240","bugs":{"url":"https://github.com/fabiospampinato/grammex/issues"},"homepage":"https://github.com/fabiospampinato/grammex#readme","_id":"grammex@2.0.0","_nodeVersion":"18.12.0","_npmVersion":"8.19.2","dist":{"shasum":"e16f7dd2d8f364a7ce51e0f2ae9fa60fa3f5390f","size":8174,"noattachment":false,"key":"/grammex/-/grammex-2.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/grammex/download/grammex-2.0.0.tgz"},"_npmUser":{"name":"fabiospampinato","email":"spampinabio@gmail.com"},"directories":{},"maintainers":[{"name":"fabiospampinato","email":"spampinabio@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grammex_2.0.0_1690300234389_0.7210942834890326"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2023-07-25T15:50:34.583Z","publish_time":1690300234583,"_source_registry_name":"default","_cnpm_publish_time":1690300234583},"1.2.1":{"name":"grammex","repository":{"type":"git","url":"git+https://github.com/fabiospampinato/grammex.git"},"description":"A tiny, PEG-like system for building language grammars with regexes.","version":"1.2.1","type":"module","main":"dist/index.js","exports":"./dist/index.js","types":"./dist/index.d.ts","sideEffects":false,"scripts":{"clean":"tsex clean","compile":"tsex compile","compile:watch":"tsex compile --watch","test":"tsex test","test:watch":"tsex test --watch","prepublishOnly":"tsex prepare"},"keywords":["tiny","peg","regex","parsing","expression","grammar"],"devDependencies":{"fava":"^0.2.0","tsex":"^2.2.4","typescript":"^4.9.5"},"gitHead":"9cc7015bfd22df9cbb180627d8936f4e03b10c37","bugs":{"url":"https://github.com/fabiospampinato/grammex/issues"},"homepage":"https://github.com/fabiospampinato/grammex#readme","_id":"grammex@1.2.1","_nodeVersion":"18.12.0","_npmVersion":"8.19.2","dist":{"shasum":"8abc1489f75eac8eefe2059fcde0cc5558570e20","size":8366,"noattachment":false,"key":"/grammex/-/grammex-1.2.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/grammex/download/grammex-1.2.1.tgz"},"_npmUser":{"name":"fabiospampinato","email":"spampinabio@gmail.com"},"directories":{},"maintainers":[{"name":"fabiospampinato","email":"spampinabio@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grammex_1.2.1_1690278740081_0.07056999393658536"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2023-07-25T09:52:20.258Z","publish_time":1690278740258,"_source_registry_name":"default","_cnpm_publish_time":1690278740258},"1.2.0":{"name":"grammex","repository":{"type":"git","url":"git+https://github.com/fabiospampinato/grammex.git"},"description":"A tiny, PEG-like system for building language grammars with regexes.","version":"1.2.0","type":"module","main":"dist/index.js","exports":"./dist/index.js","types":"./dist/index.d.ts","sideEffects":false,"scripts":{"clean":"tsex clean","compile":"tsex compile","compile:watch":"tsex compile --watch","test":"tsex test","test:watch":"tsex test --watch","prepublishOnly":"tsex prepare"},"keywords":["tiny","peg","regex","parsing","expression","grammar"],"devDependencies":{"fava":"^0.2.0","tsex":"^2.2.4","typescript":"^4.9.5"},"gitHead":"e5383dfaefd56b2b54bce2a75d1225d9ad69cd53","bugs":{"url":"https://github.com/fabiospampinato/grammex/issues"},"homepage":"https://github.com/fabiospampinato/grammex#readme","_id":"grammex@1.2.0","_nodeVersion":"18.12.0","_npmVersion":"8.19.2","dist":{"shasum":"55647f26de38b7fe9cca439547b5475af995ac97","size":8290,"noattachment":false,"key":"/grammex/-/grammex-1.2.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/grammex/download/grammex-1.2.0.tgz"},"_npmUser":{"name":"fabiospampinato","email":"spampinabio@gmail.com"},"directories":{},"maintainers":[{"name":"fabiospampinato","email":"spampinabio@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grammex_1.2.0_1690104848991_0.4190062349472261"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2023-07-23T09:34:09.177Z","publish_time":1690104849177,"_source_registry_name":"default","_cnpm_publish_time":1690104849177},"1.1.0":{"name":"grammex","repository":{"type":"git","url":"git+https://github.com/fabiospampinato/grammex.git"},"description":"A tiny, PEG-like system for building language grammars with regexes.","version":"1.1.0","type":"module","main":"dist/index.js","exports":"./dist/index.js","types":"./dist/index.d.ts","sideEffects":false,"scripts":{"clean":"tsex clean","compile":"tsex compile","compile:watch":"tsex compile --watch","test":"tsex test","test:watch":"tsex test --watch","prepublishOnly":"tsex prepare"},"keywords":["tiny","peg","regex","parsing","expression","grammar"],"devDependencies":{"fava":"^0.1.0","tsex":"^2.1.0","typescript":"^4.9.5"},"gitHead":"9e01f184e068d99a4a11619d21895de0b1b934df","bugs":{"url":"https://github.com/fabiospampinato/grammex/issues"},"homepage":"https://github.com/fabiospampinato/grammex#readme","_id":"grammex@1.1.0","_nodeVersion":"18.12.0","_npmVersion":"8.19.2","dist":{"shasum":"d845021c119210d9fc0850a1f7a9c7a0e234bb55","size":7712,"noattachment":false,"key":"/grammex/-/grammex-1.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/grammex/download/grammex-1.1.0.tgz"},"_npmUser":{"name":"fabiospampinato","email":"spampinabio@gmail.com"},"directories":{},"maintainers":[{"name":"fabiospampinato","email":"spampinabio@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grammex_1.1.0_1676171017107_0.7307549897743713"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2023-02-12T03:03:37.265Z","publish_time":1676171017265,"_cnpm_publish_time":1676171017265},"1.0.1":{"name":"grammex","repository":{"type":"git","url":"git+https://github.com/fabiospampinato/grammex.git"},"description":"A tiny, PEG-like system for building language grammars with regexes.","version":"1.0.1","type":"module","main":"dist/index.js","exports":"./dist/index.js","types":"./dist/index.d.ts","sideEffects":false,"scripts":{"clean":"tsex clean","compile":"tsex compile","compile:watch":"tsex compile --watch","test":"tsex test","test:watch":"tsex test --watch","prepublishOnly":"npm run clean && npm run compile && npm run test"},"keywords":["tiny","peg","regex","parsing","expression","grammar"],"devDependencies":{"fava":"^0.0.8","tsex":"^1.1.5","typescript":"^4.9.5"},"gitHead":"625a66f0eec7dbac801e5c0358a907820d43307a","bugs":{"url":"https://github.com/fabiospampinato/grammex/issues"},"homepage":"https://github.com/fabiospampinato/grammex#readme","_id":"grammex@1.0.1","_nodeVersion":"18.12.0","_npmVersion":"8.19.2","dist":{"shasum":"34676fe21e8a8a1503e9472f195e312e11edb026","size":7597,"noattachment":false,"key":"/grammex/-/grammex-1.0.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/grammex/download/grammex-1.0.1.tgz"},"_npmUser":{"name":"fabiospampinato","email":"spampinabio@gmail.com"},"directories":{},"maintainers":[{"name":"fabiospampinato","email":"spampinabio@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grammex_1.0.1_1675890711608_0.8795830790834489"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2023-02-08T21:11:51.819Z","publish_time":1675890711819,"_cnpm_publish_time":1675890711819},"1.0.0":{"name":"grammex","repository":{"type":"git","url":"git+https://github.com/fabiospampinato/grammex.git"},"description":"A tiny, PEG-like system for building language grammars with regexes.","version":"1.0.0","type":"module","main":"dist/index.js","exports":"./dist/index.js","types":"./dist/index.d.ts","sideEffects":false,"scripts":{"clean":"tsex clean","compile":"tsex compile","compile:watch":"tsex compile --watch","test":"tsex test","test:watch":"tsex test --watch","prepublishOnly":"npm run clean && npm run compile && npm run test"},"keywords":["tiny","peg","regex","parsing","expression","grammar"],"devDependencies":{"fava":"^0.0.8","tsex":"^1.1.5","typescript":"^4.9.5"},"bugs":{"url":"https://github.com/fabiospampinato/grammex/issues"},"homepage":"https://github.com/fabiospampinato/grammex#readme","_id":"grammex@1.0.0","_nodeVersion":"18.12.0","_npmVersion":"8.19.2","dist":{"shasum":"cba54c5f99359835b328735c2ddaceb6f31d1562","size":7591,"noattachment":false,"key":"/grammex/-/grammex-1.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/grammex/download/grammex-1.0.0.tgz"},"_npmUser":{"name":"fabiospampinato","email":"spampinabio@gmail.com"},"directories":{},"maintainers":[{"name":"fabiospampinato","email":"spampinabio@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/grammex_1.0.0_1675732078653_0.8428907862461512"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2023-02-07T01:07:58.832Z","publish_time":1675732078832,"_cnpm_publish_time":1675732078832}},"readme":"# Grammex\n\nA tiny PEG-like system for building language grammars with regexes.\n\n## Overview\n\nThe following functions for executing rules are provided:\n\n| Function                       | Description                                                                                                                              |\n| ------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------- |\n| `parse(input,rule,options)`    | Parses an input string with a given rule and options. It throws if parsing fails, including if some of the input string wasn't consumed. |\n| `validate(input,rule,options)` | Parses an input string with a given rule and options. It returns a boolean.                                                              |\n\nThe following functions for creating a primitive rule are provided:\n\n| Function           | Description                                                                                                             |\n| ------------------ | ----------------------------------------------------------------------------------------------------------------------- |\n| `match(target,cb)` | Creates a new rule that tries to match the input string at the current position with the given regex/string/characters. |\n\nThe following higher-order functions for creating a rule out of other rules are provided:\n\n| Function                  | Description                                                                                                                             |\n| ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| `repeat(rule,min,max,cb)` | Creates a rule that tries to match the given rule at least `min` times and at most `max` times.                                         |\n| `optional(rule,cb)`       | Creates a rule that tries to match the given rule zero or one times.                                                                    |\n| `star(rule,cb)`           | Creates a rule that tries to match the given rule zero or more times.                                                                   |\n| `plus(rule,cb)`           | Creates a rule that tries to match the given rule one or more times.                                                                    |\n| `and(rule[],cb)`          | Creates a rule that tries to match all the given rules in sequence, one after the other.                                                |\n| `or(rule[],cb)`           | Creates a rule that tries to match any of the given rules, stopping at the first matching one.                                          |\n| `jump(rule{}, cb)`        | Creates a rule that tries to match any of the given rules, but trying only one of the options, chosen by looking at the next character. |\n| `negative(rule)`          | Creates a rule that tries to not match the given rule. This rule doesn't consume any input, it's a negative lookahead.                  |\n| `positive(rule)`          | Creates a rule that tries to match the given rule. This rule doesn't consume any input, it's a positive lookahead.                      |\n| `lazy(()=>rule)`          | Creates a rule out of a getter for another rule. This is necessary when dealing with circular references.                               |\n\nThe following shorthands for creating rules are provided:\n\n| Shorthand       | Description                                                                                                             |\n| --------------- | ----------------------------------------------------------------------------------------------------------------------- |\n| `'foo'`         | A string is automatically interpreted as the primitive rule using the regex that would match the provided string.       |\n| `/foo/`         | A regex is automatically interpreted as the primitive rule using the provided regex.                                    |\n| `['foo',/bar/]` | An array of strings and regexes is automatically interpreted as wrapped in an `and` rule.                               |\n| `{Foo,Bar}`     | A plain object with strings and regexes as values is automatically interpreted as those values wrapped in an `or` rule. |\n| `()=>Foo`       | An argumentless function is automatically interpreted as the same function wrapped in a `lazy`rule.                     |\n\nThe following utility functions are provided:\n\n| Utility          | Description                                                                                                                            |\n| ---------------- | -------------------------------------------------------------------------------------------------------------------------------------- |\n| `grammar<T>(cb)` | Creates a new set of primitive and higher-order functions for making rules, with a fixed token type, and passes them to your callback. |\n\nThe following options are supported:\n\n| Option        | Description                                                                                                                                                                                     |\n| ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `memoization` | `true` by default. If enabled this lowers the time complexity of the parser, but it can have a negative impact on performance for grammars and inputs with not a lot of backtracking happening. |\n| `silent`      | `false` by default. If enabled then rules callbacks are not called, this enables faster validation if you have side-effects-free callbacks.                                                     |\n\nBasically you should create some primitive rules with `match`, combine those into higher-order rules, decide which one of those will be your \"root\" rule, and use that to `parse` or `validate` an input string.\n\nIf a `parse` call is successful that means that a number of rules successfully matched the entire input string, each time a rule matches its `cb` function is called and its return value is appended to the output stream -- `parse` will simply return you this output stream.\n\nAll provided rules are \"greedy\", to conform with PEG grammars, removing ambiguities and improving performance significantly. Higher-order rules are also internally memoized by default, to ensure fast parsing times in edge cases, but you can turn that off for extra speed if your grammar is not too ambiguous. Primitive ruels are never internally memoized, but if needed you can enable memoization for a primitive rule by wrapping it an `and` rule.\n\n## Install\n\n```sh\nnpm install grammex\n```\n\n## Usage\n\n```ts\nimport {optional as O, or, validate} from 'grammex';\n\n// Example grammar for matching timestamps\n\nconst Hour = /[0-1][0-9]|2[0-4]/;\nconst Minute = /[0-5][0-9]/;\nconst Second = /[0-5][0-9]|60/;\nconst Fraction = /[.,][0-9]+/;\nconst IsoTz = or ([ 'Z', [/[+-]/, Hour, O([O(':'), Minute])] ]);\nconst TzL = /[A-Z]/;\nconst TzAbbr = [TzL, TzL, O([TzL, O([TzL, O(TzL)])])];\nconst TZ = {IsoTz, TzAbbr};\nconst HM = [Hour, ':', Minute, O(Fraction)];\nconst HMS = [Hour, ':', Minute, ':', Second, O(Fraction)];\nconst Time = [O(/T ?/), {HMS, HM}, O([/ ?/, TZ])];\n\nconst Year = /[0-9][0-9][0-9][0-9]/;\nconst Month = /0[1-9]|1[0-2]/;\nconst Day = /0[1-9]|[1-2][0-9]|3[0-1]/;\nconst Date = [Year, '-', Month, O(['-', Day])];\n\nconst DateTime = [Date, / ?/, Time];\n\nconst MonthAbbr = /Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Sept|Oct|Nov|Dec/;\nconst WeekDayAbbr = /Mon|Tu|Tue|Tues|Wed|Th|Thu|Thur|Thurs|Fri|Sat|Sun/;\nconst FreeDateTime = [WeekDayAbbr, ' ', MonthAbbr, ' ', Day, ' ', Time, ' ', Year];\n\nconst Timestamp = {DateTime, FreeDateTime};\n\nvalidate ( '2009-09-22T06:59:28', Timestamp ); // => true\nvalidate ( '2009-09-22 06:59:28', Timestamp ); // => true\nvalidate ( 'Fri Jun 17 03:50:56 PDT 2011', Timestamp ); // => true\nvalidate ( '2010-10-26 10:00:53.360', Timestamp ); // => true\n\nvalidate ( '2009--09-22T06:59:28', Timestamp ); // => false\nvalidate ( '2009-09-22Z06:59:28', Timestamp ); // => false\nvalidate ( '2009-09-22T06.59:28', Timestamp ); // => false\n\nvalidate ( '2009-09-22 06:59:280', Timestamp ); // => false\nvalidate ( '2009-09-22 06:590:28', Timestamp ); // => false\nvalidate ( '2009-09-22 060:59:28', Timestamp ); // => false\n\nvalidate ( 'Fri Jun 170 03:50:56 PDT 2011', Timestamp ); // => false\nvalidate ( 'Fri Juns 17 03:50:56 PDT 2011', Timestamp ); // => false\nvalidate ( 'Friz Jun 17 03:50:56 PDT 2011', Timestamp ); // => false\n```\n\n## License\n\nMIT © Fabio Spampinato\n","_attachments":{},"homepage":"https://github.com/fabiospampinato/grammex#readme","bugs":{"url":"https://github.com/fabiospampinato/grammex/issues"},"license":"MIT"}