{"_id":"@codincod/codemirror-lang-perl","_rev":"6-d6910db6b94bec61831ca77ef920e77f","name":"@codincod/codemirror-lang-perl","dist-tags":{"latest":"0.5.0"},"versions":{"0.1.0":{"name":"@codincod/codemirror-lang-perl","version":"0.1.0","keywords":["editor","code","perl","codemirror","lezer"],"author":{"name":"CodinCod","email":"hello@codincod.com"},"license":"MIT","_id":"@codincod/codemirror-lang-perl@0.1.0","maintainers":[{"name":"juicemitapfelndrin","email":"juicemitapfelndrin@gmail.com"}],"contributors":[{"name":"Glenn Rice","email":"grice1@missouriwestern.edu"}],"homepage":"https://codincod.com/","dist":{"shasum":"b76d9d6f547673bbb36510fb3902a25d93ae8a9f","tarball":"https://registry.npmjs.org/@codincod/codemirror-lang-perl/-/codemirror-lang-perl-0.1.0.tgz","fileCount":14,"integrity":"sha512-1za4af5h/5U1J+F/1UDMbJ1Q9rAHPwuIpHo9L+v3BBzSbNlEcICDMQRbW4pHChA6YSuX6bwCz8m/U5KIZfQMfA==","signatures":[{"sig":"MEYCIQDlOm1iRWvEwOHgDJxw5vy7Fu4Il2zZaFvQa0lnv4DNNwIhAJYc8xUxjKJtwZdAUDX4ZPEE1zleAVDPu0SCFHvEM/9G","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":322556},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","exports":{"import":"./dist/index.js","require":"./dist/index.cjs"},"gitHead":"9cf049c9dfe94b0bddfcd2c3fbf5964b574dfbe1","scripts":{"lint":"eslint . --fix","test":"mocha","build":"rollup -c","watch":"rollup -cw","corpus":"npm run build && node test/corpus.ts","format":"prettier --write .","prepare":"npm run build","lint:check":"eslint .","format:check":"prettier --check .","generate-terms":"node generate-terms.js"},"_npmUser":{"name":"juicemitapfelndrin","email":"juicemitapfelndrin@gmail.com"},"overrides":{"diff":"^8.0.3","glob":"^13.0.6","serialize-javascript":"^7.0.2"},"repository":{"url":"git+https://codeberg.org/reeven/codemirror-lang-perl.git","type":"git"},"_npmVersion":"11.6.2","description":"Perl language support for the CodeMirror code editor","directories":{},"sideEffects":false,"_nodeVersion":"25.0.0","dependencies":{"@lezer/lr":"^1.4.8","@lezer/highlight":"^1.2.3","@codemirror/language":"^6.12.3"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^11.7.5","tslib":"^2.8.1","eslint":"^10.2.0","rollup":"^4.60.1","ts-node":"^10.9.2","prettier":"^3.8.2","@eslint/js":"^10.0.1","typescript":"^6.0.2","@types/mocha":"^10.0.10","@lezer/generator":"^1.8.0","rollup-plugin-dts":"^6.4.1","typescript-eslint":"^8.58.1","eslint-plugin-mocha":"^11.2.0","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.1","@stylistic/eslint-plugin":"^5.10.0","@rollup/plugin-typescript":"^12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/codemirror-lang-perl_0.1.0_1785538762283_0.9333420746841652","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@codincod/codemirror-lang-perl","version":"0.2.0","keywords":["editor","code","perl","codemirror","lezer"],"author":{"name":"CodinCod","email":"hello@codincod.com"},"license":"MIT","_id":"@codincod/codemirror-lang-perl@0.2.0","maintainers":[{"name":"juicemitapfelndrin","email":"juicemitapfelndrin@gmail.com"}],"contributors":[{"name":"Glenn Rice","email":"grice1@missouriwestern.edu"}],"homepage":"https://codincod.com/","dist":{"shasum":"ef6f2bbf72157c03298f7f61a80729be8dff6d4a","tarball":"https://registry.npmjs.org/@codincod/codemirror-lang-perl/-/codemirror-lang-perl-0.2.0.tgz","fileCount":15,"integrity":"sha512-io6gEP/ZOK5/mqypjklv9j7Z+M1vEaFpVwUqTjzJyXR8Vxw8O/uUtt2hEDIRVWmhJdgxTGAJaOBfdPPPab9xwA==","signatures":[{"sig":"MEUCIDqRkEumH81/MtT6Qc9y/yETw0Px/PN6grbcadFBF2ePAiEA7wl4ojn6GLTwFk/8AO7RgX1gGK2/f2kZoshjPo+IAP8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":334775},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","exports":{"import":"./dist/index.js","require":"./dist/index.cjs"},"gitHead":"8175c555ae24cad614188cbfaefa5d6e7e9acc4c","scripts":{"lint":"eslint . --fix","test":"mocha","build":"rollup -c","watch":"rollup -cw","corpus":"npm run build && node test/corpus.ts","format":"prettier --write .","prepare":"npm run build","lint:check":"eslint .","format:check":"prettier --check .","generate-terms":"node generate-terms.js"},"_npmUser":{"name":"juicemitapfelndrin","email":"juicemitapfelndrin@gmail.com"},"overrides":{"diff":"^8.0.3","glob":"^13.0.6","serialize-javascript":"^7.0.2"},"repository":{"url":"git+https://codeberg.org/reeven/codemirror-lang-perl.git","type":"git"},"_npmVersion":"11.6.2","description":"Perl language support for the CodeMirror code editor","directories":{},"sideEffects":false,"_nodeVersion":"25.0.0","dependencies":{"@lezer/lr":"^1.4.8","@lezer/highlight":"^1.2.3","@codemirror/language":"^6.12.3"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^11.7.5","tslib":"^2.8.1","eslint":"^10.2.0","rollup":"^4.60.1","ts-node":"^10.9.2","prettier":"^3.8.2","@eslint/js":"^10.0.1","typescript":"^6.0.2","@types/mocha":"^10.0.10","@lezer/generator":"^1.8.0","rollup-plugin-dts":"^6.4.1","typescript-eslint":"^8.58.1","eslint-plugin-mocha":"^11.2.0","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.1","@stylistic/eslint-plugin":"^5.10.0","@rollup/plugin-typescript":"^12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/codemirror-lang-perl_0.2.0_1785848857022_0.21801346191295456","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@codincod/codemirror-lang-perl","version":"0.3.0","keywords":["editor","code","perl","codemirror","lezer"],"author":{"name":"CodinCod","email":"hello@codincod.com"},"license":"MIT","_id":"@codincod/codemirror-lang-perl@0.3.0","maintainers":[{"name":"juicemitapfelndrin","email":"juicemitapfelndrin@gmail.com"}],"contributors":[{"name":"Glenn Rice","email":"grice1@missouriwestern.edu"}],"homepage":"https://codincod.com/","dist":{"shasum":"f20fb3d643e024fb2781773519802ba00038dfd2","tarball":"https://registry.npmjs.org/@codincod/codemirror-lang-perl/-/codemirror-lang-perl-0.3.0.tgz","fileCount":14,"integrity":"sha512-7Q00RjHOIiC//h/FYfnpHT2qOtCPvp10dALVBIv6QvBB18EukOGhBANzhJxba4q4fjEKMpXxqRT/BzJwU6m0hw==","signatures":[{"sig":"MEYCIQD/gw0hVWH8zfWYwnMArkl/XbTOR0qiYBZnch0Ca1SOGwIhAM8bTVGIIA6Ak/ZyAnLCli6fQ7puIT/VmoLQJztC+JK2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":391552},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","exports":{"import":"./dist/index.js","require":"./dist/index.cjs"},"gitHead":"daf40d89945518a04dd808cc8479ad823e507ce0","scripts":{"gaps":"npm run build && node ../lezer-survey/src/cli.ts gaps --group parent","lint":"eslint . --fix","test":"mocha","build":"rollup -c","watch":"rollup -cw","corpus":"npm run build && node ../lezer-survey/src/cli.ts measure --group parent","format":"prettier --write .","prepare":"npm run build","lint:check":"eslint .","format:check":"prettier --check .","generate-terms":"node generate-terms.js"},"_npmUser":{"name":"juicemitapfelndrin","email":"juicemitapfelndrin@gmail.com"},"overrides":{"diff":"^8.0.3","glob":"^13.0.6","serialize-javascript":"^7.0.2"},"repository":{"url":"git+https://codeberg.org/reeven/codemirror-lang-perl.git","type":"git"},"_npmVersion":"11.6.2","description":"Perl language support for the CodeMirror code editor","directories":{},"sideEffects":false,"_nodeVersion":"25.0.0","dependencies":{"@lezer/lr":"^1.4.8","@lezer/highlight":"^1.2.3","@codemirror/language":"^6.12.3"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^11.7.5","tslib":"^2.8.1","eslint":"^10.2.0","rollup":"^4.60.1","ts-node":"^10.9.2","prettier":"^3.8.2","@eslint/js":"^10.0.1","typescript":"^6.0.2","@types/mocha":"^10.0.10","@lezer/generator":"^1.8.0","rollup-plugin-dts":"^6.4.1","typescript-eslint":"^8.58.1","eslint-plugin-mocha":"^11.2.0","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.1","@stylistic/eslint-plugin":"^5.10.0","@rollup/plugin-typescript":"^12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/codemirror-lang-perl_0.3.0_1785965329509_0.2892732576770558","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@codincod/codemirror-lang-perl","version":"0.3.1","keywords":["editor","code","perl","codemirror","lezer"],"author":{"name":"CodinCod","email":"hello@codincod.com"},"license":"MIT","_id":"@codincod/codemirror-lang-perl@0.3.1","maintainers":[{"name":"juicemitapfelndrin","email":"juicemitapfelndrin@gmail.com"}],"contributors":[{"name":"Glenn Rice","email":"grice1@missouriwestern.edu"}],"homepage":"https://codincod.com/","dist":{"shasum":"72a6f7cf7d4feac24147f78de634bf6b6eba496d","tarball":"https://registry.npmjs.org/@codincod/codemirror-lang-perl/-/codemirror-lang-perl-0.3.1.tgz","fileCount":14,"integrity":"sha512-OF8g08QvOkgIVpn8oj0gbQNnHwNmTWEQ1lnCGD+5jUbIM/K5AZXw1qZxtgQJxc9vKmuq+sRWIFPuDmbeuB3NDw==","signatures":[{"sig":"MEYCIQCVJPDjR+tYBrKoRb9ZKFvBZHDt/GYfpst+4CT5WKnKEgIhAJdT6N3PX+csQvben4Sn0Bmnqj6kXvymR9dOID92fvgr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":391673},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","exports":{"import":"./dist/index.js","require":"./dist/index.cjs"},"gitHead":"daf40d89945518a04dd808cc8479ad823e507ce0","scripts":{"gaps":"npm run build && node ../lezer-survey/src/cli.ts gaps --group parent","lint":"eslint . --fix","test":"mocha","build":"rollup -c","watch":"rollup -cw","corpus":"npm run build && node ../lezer-survey/src/cli.ts measure --group parent","format":"prettier --write .","prepare":"npm run build","lint:check":"eslint .","format:check":"prettier --check .","generate-terms":"node generate-terms.js"},"_npmUser":{"name":"juicemitapfelndrin","email":"juicemitapfelndrin@gmail.com"},"overrides":{"diff":"^8.0.3","glob":"^13.0.6","serialize-javascript":"^7.0.2"},"repository":{"url":"https://codeberg.org/reeven/codemirror-lang-perl","type":"git"},"_npmVersion":"11.6.2","description":"Perl language support for the CodeMirror code editor","directories":{},"sideEffects":false,"_nodeVersion":"25.0.0","dependencies":{"@lezer/lr":"^1.4.8","@lezer/highlight":"^1.2.3","@codemirror/language":"^6.12.3"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^11.7.5","tslib":"^2.8.1","eslint":"^10.2.0","rollup":"^4.60.1","ts-node":"^10.9.2","prettier":"^3.8.2","@eslint/js":"^10.0.1","typescript":"^6.0.2","@types/mocha":"^10.0.10","@lezer/generator":"^1.8.0","rollup-plugin-dts":"^6.4.1","typescript-eslint":"^8.58.1","eslint-plugin-mocha":"^11.2.0","eslint-config-prettier":"^10.1.8","@codemirror/autocomplete":"^6.20.1","@stylistic/eslint-plugin":"^5.10.0","@rollup/plugin-typescript":"^12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/codemirror-lang-perl_0.3.1_1785970783682_0.13171163132315744","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@codincod/codemirror-lang-perl","version":"0.4.0","keywords":["editor","code","perl","codemirror","lezer"],"author":{"name":"CodinCod","email":"hello@codincod.com"},"license":"MIT","_id":"@codincod/codemirror-lang-perl@0.4.0","maintainers":[{"name":"juicemitapfelndrin","email":"juicemitapfelndrin@gmail.com"}],"contributors":[{"name":"Glenn Rice","email":"grice1@missouriwestern.edu"}],"homepage":"https://codincod.com/","dist":{"shasum":"4f2d1caf3cd87ced1f4a8bbd973420e113c8df13","tarball":"https://registry.npmjs.org/@codincod/codemirror-lang-perl/-/codemirror-lang-perl-0.4.0.tgz","fileCount":14,"integrity":"sha512-HQ9rq0YKFBEO6eA7HOhwBGzojZMaab7q+xL9s8BVS/HjS0WA85f5TFYwPijrw/YXbiF1/LOutc1yBsvnkI5D5Q==","signatures":[{"sig":"MEYCIQD4XsMUnL8iw6HY8Obk+yaNtvgWmydxagC5YAjjYVcZQwIhAOoFN1UJ8idfo+ISjcTIt24NKfXVDk/WzIk8m0u2EnZU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":422705},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.js","exports":{"import":"./dist/index.js","require":"./dist/index.cjs"},"gitHead":"d6f8c477bd3da24bf3c1b98192b1873714d9610f","scripts":{"fuzz":"npm run build && node ../lezer-survey/src/cli.ts fuzz","gaps":"npm run build && node ../lezer-survey/src/cli.ts gaps --group parent","lint":"eslint . --fix","test":"mocha","build":"rollup -c","watch":"rollup -cw","format":"prettier --write .","measure":"npm run build && node ../lezer-survey/src/cli.ts measure --group parent","prepare":"npm run build","lint:check":"eslint .","format:check":"prettier --check .","generate-terms":"node generate-terms.js"},"_npmUser":{"name":"juicemitapfelndrin","email":"juicemitapfelndrin@gmail.com"},"overrides":{"diff":"^8.0.3","glob":"^13.0.6","serialize-javascript":"^7.0.2"},"repository":{"url":"https://codeberg.org/reeven/codemirror-lang-perl","type":"git"},"_npmVersion":"11.6.2","description":"Perl language support for the CodeMirror code editor","directories":{},"sideEffects":false,"_nodeVersion":"25.0.0","dependencies":{"@lezer/lr":"^1.4.8","@lezer/highlight":"^1.2.3","@codemirror/language":"^6.12.3","@codemirror/autocomplete":"^6.20.1"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^11.7.5","tslib":"^2.8.1","eslint":"^10.2.0","rollup":"^4.60.1","ts-node":"^10.9.2","prettier":"^3.8.2","@eslint/js":"^10.0.1","typescript":"^6.0.2","@types/mocha":"^10.0.10","@lezer/generator":"^1.8.0","rollup-plugin-dts":"^6.4.1","typescript-eslint":"^8.58.1","eslint-plugin-mocha":"^11.2.0","eslint-config-prettier":"^10.1.8","@stylistic/eslint-plugin":"^5.10.0","@rollup/plugin-typescript":"^12.3.0"},"_npmOperationalInternal":{"tmp":"tmp/codemirror-lang-perl_0.4.0_1786659935125_0.12537717075676658","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@codincod/codemirror-lang-perl","version":"0.5.0","description":"Perl language support for the CodeMirror code editor","author":{"name":"CodinCod","email":"hello@codincod.com"},"license":"MIT","repository":{"type":"git","url":"https://codeberg.org/reeven/codemirror-lang-perl"},"homepage":"https://codincod.com/","scripts":{"format":"prettier --write .","format:check":"prettier --check .","lint":"eslint . --fix","lint:check":"eslint .","generate-terms":"node generate-terms.js","build":"rollup -c","watch":"rollup -cw","test":"mocha","prepare":"npm run build","measure":"npm run build && node ../lezer-survey/src/cli.ts measure --group parent","fuzz":"npm run build && node ../lezer-survey/src/cli.ts fuzz","gaps":"npm run build && node ../lezer-survey/src/cli.ts gaps --group parent"},"type":"module","main":"dist/index.cjs","module":"dist/index.js","exports":{"import":"./dist/index.js","require":"./dist/index.cjs"},"types":"dist/index.d.ts","sideEffects":false,"dependencies":{"@codemirror/autocomplete":"^6.20.1","@codemirror/language":"^6.12.3","@lezer/highlight":"^1.2.3","@lezer/lr":"^1.4.8"},"devDependencies":{"@eslint/js":"^10.0.1","@lezer/generator":"^1.8.0","@rollup/plugin-typescript":"^12.3.0","@stylistic/eslint-plugin":"^5.10.0","@types/mocha":"^10.0.10","eslint":"^10.2.0","eslint-config-prettier":"^10.1.8","eslint-plugin-mocha":"^11.2.0","mocha":"^11.7.5","prettier":"^3.8.2","rollup":"^4.60.1","rollup-plugin-dts":"^6.4.1","ts-node":"^10.9.2","tslib":"^2.8.1","typescript":"^6.0.2","typescript-eslint":"^8.58.1"},"overrides":{"diff":"^8.0.3","serialize-javascript":"^7.0.2","glob":"^13.0.6"},"keywords":["editor","code","perl","codemirror","lezer"],"contributors":[{"name":"Glenn Rice","email":"grice1@missouriwestern.edu"}],"gitHead":"0a3cc6bf0e47521306771a6395b41006b104ab02","_id":"@codincod/codemirror-lang-perl@0.5.0","_nodeVersion":"25.0.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-eyxSBE3ZZj4BS9SollJ2alGLGxuWm9bw2XXrd1rVCtJ/QMMv8efUxEtib+b3vaU/3okPs08flxn9Z7b4vws1oQ==","shasum":"b803b3e7912ade6009cb09ccad49eb660222a7a7","tarball":"https://registry.npmjs.org/@codincod/codemirror-lang-perl/-/codemirror-lang-perl-0.5.0.tgz","fileCount":14,"unpackedSize":428359,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDHffcIE4KsY9QZt6x3yXH0XVL1J0kOHaSHPoXj0nVXygIgQOsqEHKSVbiaTF4WUvHrY34XT0QEg2YtYrUTU7gUapM="}]},"_npmUser":{"name":"juicemitapfelndrin","email":"juicemitapfelndrin@gmail.com"},"directories":{},"maintainers":[{"name":"juicemitapfelndrin","email":"juicemitapfelndrin@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/codemirror-lang-perl_0.5.0_1786760376937_0.7620168014265989"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-31T22:59:22.148Z","modified":"2026-08-15T02:19:37.262Z","0.1.0":"2026-07-31T22:59:22.439Z","0.2.0":"2026-08-04T13:07:37.180Z","0.3.0":"2026-08-05T21:28:49.670Z","0.3.1":"2026-08-05T22:59:43.872Z","0.4.0":"2026-08-13T22:25:35.275Z","0.5.0":"2026-08-15T02:19:37.095Z"},"author":{"name":"CodinCod","email":"hello@codincod.com"},"license":"MIT","homepage":"https://codincod.com/","keywords":["editor","code","perl","codemirror","lezer"],"repository":{"type":"git","url":"https://codeberg.org/reeven/codemirror-lang-perl"},"description":"Perl language support for the CodeMirror code editor","contributors":[{"name":"Glenn Rice","email":"grice1@missouriwestern.edu"}],"maintainers":[{"name":"juicemitapfelndrin","email":"juicemitapfelndrin@gmail.com"}],"readme":"# @codincod/codemirror-lang-perl\n\nThis package implements Perl language support for the\n[CodeMirror](https://codemirror.net/) code editor, using the\n[Lezer](https://lezer.codemirror.net/) grammar Glenn Rice wrote for\n[codemirror-lang-perl](https://github.com/drgrice1/codemirror-lang-perl), with\nthe parse fixes below on top of it.\n\nWritten in part for [CodinCod](https://codincod.com/), a competitive coding\nplatform, where it colours the editor people solve puzzles in.\n\nThis code is released under an MIT license.\n\n## Usage\n\n```javascript\nimport { EditorView, basicSetup } from 'codemirror';\nimport { perl } from '@codincod/codemirror-lang-perl';\n\nconst view = new EditorView({\n parent: document.body,\n doc: `use strict;\nuse warnings;\n\n$| = 1;\n\nmy @squares = map { $_ ** 2 } 1..10;\nprintf \"%d\\\\n\", $_ for @squares;`,\n extensions: [basicSetup, perl()]\n});\n```\n\n## API Reference\n\n- perl() → [LanguageSupport](https://codemirror.net/docs/ref#language.LanguageSupport)\n- perlLanguage: [LRLanguage](https://codemirror.net/docs/ref#language.LRLanguage)\n\n## What changed\n\nMost of the work here is in reading the Perl people actually write: the empty\npattern, a bare `split`, a multiplication that touches its operands, `given`\nand `when`, subroutine signatures and attributes in every order Perl allows, a\nheredoc tag with a space in it, names in the alphabet the file is written in.\n`CHANGELOG.md` lists those, each with the reason it was hard, and every one has\na grammar test.\n\nFour smaller fixes are against the published 0.1.8 and belong upstream:\n\n- the first dot of a range. A float may end in a decimal point, so `1..10`\n  matched the float `1.` and left `.10` with nowhere to go. This was 40% of\n  every failure we measured, because a numeric range is in a great deal of\n  Perl: `(0..3)`, `for my $i (1..15)`, `1..2*$n`. A float is read in a\n  tokenizer here, which takes the point only when a second dot does not follow\n  it, the way Perl's own lexer does, so the bare `1.` is still a float;\n- a variable name opening with a digit, which no Perl name does. It cost the\n  modulus its right operand, so `$n%4` and `5%2` read `%4` and `%2` as hashes;\n- `$|`, which fell outside the characters a special variable is drawn from and\n  so read as a dereference of nothing followed by a bitwise or;\n- the digits 8 and 9, which two of the tokenizer's own predicates stopped\n  short of. `length8()` did not parse and `\"\\x39\"` highlighted as `\\x3` beside\n  a stray `9`.\n\nAll four are offered back to the original, in three pull requests:\nhttps://github.com/drgrice1/codemirror-lang-perl/pull/1,\nhttps://github.com/drgrice1/codemirror-lang-perl/pull/2 and\nhttps://github.com/drgrice1/codemirror-lang-perl/pull/3\n\n## Tests\n\n`npm test` builds the parser and runs the grammar tests in `test/*.txt`.\n\n`npm run corpus <directory>` parses every file under a directory with\n[lezer-survey](https://codeberg.org/reeven/lezer-survey) and reports how many\nproduce no error node. `npm run gaps <directory>` clusters the failures by\nshape, ordered by how many files each one spoils, which is the list to work\nfrom.\n\nAgainst 1721 Perl solutions from Rosetta Code, which is the shape of code this\npackage was written for, 95.24% parse clean. Against the Perl 5.42 standard\nlibrary, 1553 files and 18.7 MiB, 86.35%, where the original's published 0.1.8\nreads 79.91%.\n\nNo corpus ships here, because none of that code is ours to redistribute.\n\n## Known gaps\n\nOf the Rosetta Code files still failing, a good part are not Perl at all. The\ncorpus holds shell transcripts of `$ perl -e '…'`, pasted program output, and\na solution written in AWK. Those can never parse, and they set a ceiling a\nlittle under 100% on that measurement.\n\nWhat remains beyond them is a long tail: no single shape spoils more than a\nhandful of files, and most spoil one.\n\nOne file of the Perl standard library, `TAP/Parser/Result/Plan.pm`, parses\nclean under 0.1.8 and does not here. The parse loses its place somewhere above\nthe documentation and never recovers.\n","readmeFilename":"README.md"}