{"_id":"@codincod/codemirror-lang-lisp","_rev":"6-fc63e822b2a8f8e4e264d0ec6e06d6dc","name":"@codincod/codemirror-lang-lisp","dist-tags":{"latest":"0.4.0"},"versions":{"0.1.0":{"name":"@codincod/codemirror-lang-lisp","version":"0.1.0","keywords":["codemirror","codemirror6","lezer","lisp","scheme","racket","common-lisp","syntax","highlighting","parser","editor"],"license":"MIT","_id":"@codincod/codemirror-lang-lisp@0.1.0","maintainers":[{"name":"juicemitapfelndrin","email":"juicemitapfelndrin@gmail.com"}],"dist":{"shasum":"8d1728b7ed7bb1e6d7ab8b8de99f7cb2b6d38a13","tarball":"https://registry.npmjs.org/@codincod/codemirror-lang-lisp/-/codemirror-lang-lisp-0.1.0.tgz","fileCount":11,"integrity":"sha512-QiRUokzgNxZaqKRVL29nb1twSZZWTHQEHYwolRZvcy4H1J3VjpO4GjFopCoeufT0cf40vLAJQzRY2v/bubSYEg==","signatures":[{"sig":"MEUCIEHXohSu43vW4UTFxR7j1QIpr0qTCB1xwV+8oIRETgmSAiEAtHPtZ1nPgt7C1Srq0kn+Z5+3xQIbrSqM1A6DnStG/3w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30931},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"bc78c082e1e047ed323328bf6d817015e9c1948a","scripts":{"test":"npm run build && node --test \"test/*.test.ts\"","build":"npm run build:parser && tsc -p tsconfig.json","corpus":"npm run build && node test/corpus.ts","build:parser":"mkdir -p dist && lezer-generator src/lisp.grammar -o dist/parser.js","prepublishOnly":"npm run test"},"_npmUser":{"name":"juicemitapfelndrin","email":"juicemitapfelndrin@gmail.com"},"repository":{"url":"git+https://codeberg.org/reeven/codemirror-lang-lisp.git","type":"git"},"_npmVersion":"11.6.2","description":"Lisp language support for CodeMirror 6, built on a Lezer grammar. Covers Common Lisp, Scheme and Racket reader syntax.","directories":{},"sideEffects":false,"_nodeVersion":"25.0.0","dependencies":{"@lezer/lr":"^1.0.0","@lezer/common":"^1.0.0","@lezer/highlight":"^1.0.0","@codemirror/language":"^6.0.0","@codemirror/autocomplete":"^6.0.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@lezer/generator":"^1.7.0","@codemirror/state":"^6.7.1"},"_npmOperationalInternal":{"tmp":"tmp/codemirror-lang-lisp_0.1.0_1785075632862_0.8848470495331142","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@codincod/codemirror-lang-lisp","version":"0.2.0","keywords":["editor","code"],"author":{"name":"CodinCod","email":"hello@codincod.com"},"license":"MIT","_id":"@codincod/codemirror-lang-lisp@0.2.0","maintainers":[{"name":"juicemitapfelndrin","email":"juicemitapfelndrin@gmail.com"}],"dist":{"shasum":"fefc424ff535b8ca4676644b037ba2593cd7b308","tarball":"https://registry.npmjs.org/@codincod/codemirror-lang-lisp/-/codemirror-lang-lisp-0.2.0.tgz","fileCount":14,"integrity":"sha512-RipfVxKDT7FIn/1ck/AHqxDmvSrxKchW5oxUzuC0a78xG18fpHX0QYNXSn8fg0qvT+13+9HI3iPpFzsqKa2Sww==","signatures":[{"sig":"MEQCICFEjt0DxfvFKs48TbYx9ThJgIQMoGF+czbpxeWMbFZQAiAr4zPNL0kH9LVV6Yy747pc6Bp0bnq0jp2UEVN79m/+QQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":60078},"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":"5d36a84d7d10b1b8df3c1c226bc56c0e86d716be","scripts":{"test":"npm run build && node --test \"test/*.test.ts\"","build":"rm -rf dist && lezer-generator src/lisp.grammar -o src/parser.js && cm-buildhelper src/lisp.ts","corpus":"npm run build && node test/corpus.ts","prepare":"npm run build","build-debug":"lezer-generator src/lisp.grammar --names -o src/parser.js && cm-buildhelper src/lisp.ts"},"_npmUser":{"name":"juicemitapfelndrin","email":"juicemitapfelndrin@gmail.com"},"repository":{"url":"git+https://codeberg.org/reeven/codemirror-lang-lisp.git","type":"git"},"_npmVersion":"11.6.2","description":"Lisp language support for the CodeMirror code editor","directories":{},"sideEffects":false,"_nodeVersion":"25.0.0","dependencies":{"@lezer/lr":"^1.0.0","@lezer/common":"^1.0.0","@lezer/highlight":"^1.0.0","@codemirror/language":"^6.0.0","@codemirror/autocomplete":"^6.0.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@lezer/generator":"^1.7.0","@codemirror/state":"^6.7.1","@codemirror/buildhelper":"^1.0.2"},"_npmOperationalInternal":{"tmp":"tmp/codemirror-lang-lisp_0.2.0_1785083554566_0.9029620708810802","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@codincod/codemirror-lang-lisp","version":"0.2.1","keywords":["editor","code"],"author":{"name":"CodinCod","email":"hello@codincod.com"},"license":"MIT","_id":"@codincod/codemirror-lang-lisp@0.2.1","maintainers":[{"name":"juicemitapfelndrin","email":"juicemitapfelndrin@gmail.com"}],"homepage":"https://codincod.com/","dist":{"shasum":"26ed78c17ae09c65a6b07d51b82446a71bdf593f","tarball":"https://registry.npmjs.org/@codincod/codemirror-lang-lisp/-/codemirror-lang-lisp-0.2.1.tgz","fileCount":14,"integrity":"sha512-wybJZVtcD0JDSc2MeJ8yKDLdGqSDLoFpXo5Zb3jwJlWtULBRYkHaggKK/vk6hLNqPvPKdUICh9vurEWkmKBDJQ==","signatures":[{"sig":"MEUCIGPZbbBP5/XrbFOw5bo0d2GHadi8fLkVvvWjIQQG4zWWAiEAvW0ya9RlI/lZJbhJSdiNMvovJM4AhstloCPiKBXQbZY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":60261},"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":"30b4e84613ff6ef157a140f00e0ffb55dc520b9b","scripts":{"test":"npm run build && node --test \"test/*.test.ts\"","build":"rm -rf dist && lezer-generator src/lisp.grammar -o src/parser.js && cm-buildhelper src/lisp.ts","corpus":"npm run build && node test/corpus.ts","prepare":"npm run build","build-debug":"lezer-generator src/lisp.grammar --names -o src/parser.js && cm-buildhelper src/lisp.ts"},"_npmUser":{"name":"juicemitapfelndrin","email":"juicemitapfelndrin@gmail.com"},"repository":{"url":"git+https://codeberg.org/reeven/codemirror-lang-lisp.git","type":"git"},"_npmVersion":"11.6.2","description":"Lisp language support for the CodeMirror code editor","directories":{},"sideEffects":false,"_nodeVersion":"25.0.0","dependencies":{"@lezer/lr":"^1.0.0","@lezer/common":"^1.0.0","@lezer/highlight":"^1.0.0","@codemirror/language":"^6.0.0","@codemirror/autocomplete":"^6.0.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@lezer/generator":"^1.7.0","@codemirror/state":"^6.7.1","@codemirror/buildhelper":"^1.0.2"},"_npmOperationalInternal":{"tmp":"tmp/codemirror-lang-lisp_0.2.1_1785286670825_0.4477821955725889","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@codincod/codemirror-lang-lisp","version":"0.3.0","keywords":["editor","code"],"author":{"name":"CodinCod","email":"hello@codincod.com"},"license":"MIT","_id":"@codincod/codemirror-lang-lisp@0.3.0","maintainers":[{"name":"juicemitapfelndrin","email":"juicemitapfelndrin@gmail.com"}],"homepage":"https://codincod.com/","dist":{"shasum":"789ebd41962c490b94da0f4434799929b05f89d7","tarball":"https://registry.npmjs.org/@codincod/codemirror-lang-lisp/-/codemirror-lang-lisp-0.3.0.tgz","fileCount":14,"integrity":"sha512-gzUckkwAgH9cAxujhtbwdUfyS9qhxRDTonMuXLmMy3nsP0zLuSkgornzExzHKSQdzr9+2kVpqkol8YdSLCCTSg==","signatures":[{"sig":"MEUCIQDpeWtgq7FyDYbkE6bA9W5UiY3MBxhNby+1FOV//xZsDwIgY5XUQEJb91dJUsW7eu93zPyU8uO420vtB9IrrPgkm08=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":71281},"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":"ef1316a052c793ae7d10f6791a3d9936659e338f","scripts":{"test":"npm run build && node --test \"test/*.test.ts\"","build":"rm -rf dist && lezer-generator src/lisp.grammar -o src/parser.js && cm-buildhelper src/lisp.ts","corpus":"npm run build && node test/corpus.ts","prepare":"npm run build","build-debug":"lezer-generator src/lisp.grammar --names -o src/parser.js && cm-buildhelper src/lisp.ts"},"_npmUser":{"name":"juicemitapfelndrin","email":"juicemitapfelndrin@gmail.com"},"repository":{"url":"git+https://codeberg.org/reeven/codemirror-lang-lisp.git","type":"git"},"_npmVersion":"11.6.2","description":"Lisp language support for the CodeMirror code editor","directories":{},"sideEffects":false,"_nodeVersion":"25.0.0","dependencies":{"@lezer/lr":"^1.0.0","@lezer/common":"^1.0.0","@lezer/highlight":"^1.0.0","@codemirror/language":"^6.0.0","@codemirror/autocomplete":"^6.0.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@lezer/generator":"^1.7.0","@codemirror/state":"^6.7.1","@codemirror/buildhelper":"^1.0.2"},"_npmOperationalInternal":{"tmp":"tmp/codemirror-lang-lisp_0.3.0_1785501286955_0.24891132035212404","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@codincod/codemirror-lang-lisp","version":"0.3.1","keywords":["editor","code"],"author":{"name":"CodinCod","email":"hello@codincod.com"},"license":"MIT","_id":"@codincod/codemirror-lang-lisp@0.3.1","maintainers":[{"name":"juicemitapfelndrin","email":"juicemitapfelndrin@gmail.com"}],"homepage":"https://codincod.com/","dist":{"shasum":"753eddd7524a2d38ab059929da10ed611ffab89d","tarball":"https://registry.npmjs.org/@codincod/codemirror-lang-lisp/-/codemirror-lang-lisp-0.3.1.tgz","fileCount":14,"integrity":"sha512-Kns47JkfC9SrwlNjIZHdM9NRb0BOFFpyamy87V9Zyzx7rGmXs9/O3o/Q9m+2onjZ0ugx3iJRIos22wekRKw4IQ==","signatures":[{"sig":"MEYCIQD6ZwnsA2ur178RPgXWGJBg+vyLln8Q4+njrN30LCDXlAIhAPYbzzg8WSxP6Y69AfLfX2LOP0CfiswXw5tUPWfNomiG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":71392},"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":"a9dc92134c6f9e289565ab969dc43cae37604e74","scripts":{"gaps":"npm run build && node ../lezer-survey/src/cli.ts gaps --group parent","test":"npm run build && node --test \"test/*.test.ts\"","build":"rm -rf dist && lezer-generator src/lisp.grammar -o src/parser.js && cm-buildhelper src/lisp.ts","corpus":"npm run build && node ../lezer-survey/src/cli.ts measure --group parent","prepare":"npm run build","build-debug":"lezer-generator src/lisp.grammar --names -o src/parser.js && cm-buildhelper src/lisp.ts"},"_npmUser":{"name":"juicemitapfelndrin","email":"juicemitapfelndrin@gmail.com"},"repository":{"url":"https://codeberg.org/reeven/codemirror-lang-lisp","type":"git"},"_npmVersion":"11.6.2","description":"Lisp language support for the CodeMirror code editor","directories":{},"sideEffects":false,"_nodeVersion":"25.0.0","dependencies":{"@lezer/lr":"^1.0.0","@lezer/common":"^1.0.0","@lezer/highlight":"^1.0.0","@codemirror/language":"^6.0.0","@codemirror/autocomplete":"^6.0.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@lezer/generator":"^1.7.0","@codemirror/state":"^6.7.1","@codemirror/buildhelper":"^1.0.2"},"_npmOperationalInternal":{"tmp":"tmp/codemirror-lang-lisp_0.3.1_1785970513091_0.450630010862449","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@codincod/codemirror-lang-lisp","version":"0.4.0","description":"Lisp language support for the CodeMirror code editor","keywords":["editor","code"],"author":{"name":"CodinCod","email":"hello@codincod.com"},"license":"MIT","type":"module","main":"dist/index.cjs","exports":{"import":"./dist/index.js","require":"./dist/index.cjs"},"module":"dist/index.js","types":"dist/index.d.ts","sideEffects":false,"scripts":{"build":"rm -rf dist && lezer-generator src/lisp.grammar -o src/parser.js && cm-buildhelper src/lisp.ts","build-debug":"lezer-generator src/lisp.grammar --names -o src/parser.js && cm-buildhelper src/lisp.ts","prepare":"npm run build","test":"npm run build && node --test \"test/*.test.ts\"","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"},"dependencies":{"@codemirror/autocomplete":"^6.0.0","@codemirror/language":"^6.0.0","@lezer/highlight":"^1.0.0","@lezer/lr":"^1.0.0"},"devDependencies":{"@codemirror/buildhelper":"^1.0.2","@codemirror/state":"^6.7.1","@lezer/generator":"^1.7.0","typescript":"^5.6.0"},"homepage":"https://codincod.com/","repository":{"type":"git","url":"https://codeberg.org/reeven/codemirror-lang-lisp"},"gitHead":"d3fea29784cb96e0b73213a34d79095ca87c7ca4","_id":"@codincod/codemirror-lang-lisp@0.4.0","_nodeVersion":"25.0.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-e5p71U8gfMsisNBuXgfZMyFQjLQxh9JaKs9r5FjiK2PyFkcfE8TDOhV48ReowhflVMeFGS2JbXmjQUt/rkz4Pw==","shasum":"516acb9d7870f1a82e11d82b99c4bb5485da223b","tarball":"https://registry.npmjs.org/@codincod/codemirror-lang-lisp/-/codemirror-lang-lisp-0.4.0.tgz","fileCount":14,"unpackedSize":71463,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCfcGUENBTo13Z9/Q4+ftZVixDWumhal4Nzy981UcXFDQIhAJDH+Dr7Bu2KRM2mT6yV0ItgejIso4SLujaXcBY5Eu3B"}]},"_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-lisp_0.4.0_1786759709278_0.28033448003440076"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-26T14:20:32.766Z","modified":"2026-08-15T02:08:29.627Z","0.1.0":"2026-07-26T14:20:33.022Z","0.2.0":"2026-07-26T16:32:34.697Z","0.2.1":"2026-07-29T00:57:51.011Z","0.3.0":"2026-07-31T12:34:47.108Z","0.3.1":"2026-08-05T22:55:13.270Z","0.4.0":"2026-08-15T02:08:29.407Z"},"author":{"name":"CodinCod","email":"hello@codincod.com"},"license":"MIT","homepage":"https://codincod.com/","keywords":["editor","code"],"repository":{"type":"git","url":"https://codeberg.org/reeven/codemirror-lang-lisp"},"description":"Lisp language support for the CodeMirror code editor","maintainers":[{"name":"juicemitapfelndrin","email":"juicemitapfelndrin@gmail.com"}],"readme":"# @codincod/codemirror-lang-lisp [![NPM version](https://img.shields.io/npm/v/@codincod/codemirror-lang-lisp.svg)](https://www.npmjs.org/package/@codincod/codemirror-lang-lisp)\n\n[ [**CHANGELOG**](https://codeberg.org/reeven/codemirror-lang-lisp/src/branch/master/CHANGELOG.md) ]\n\nThis package implements Lisp language support for the\n[CodeMirror](https://codemirror.net/) code editor, using a\n[Lezer](https://lezer.codemirror.net/) grammar written for this package.\n\nOne parser serves the family: Common Lisp, Scheme, Racket, Emacs Lisp, and the\nsmaller dialects that share their reader. They differ in what the reader does\nbefore the lists are built, and agree about everything after.\n\nCodeMirror ships Common Lisp and Scheme as CodeMirror 5 stream modes. A stream\nmode colours tokens and stops there. Without a tree there is no structural\nfolding, no indentation that knows what a form is, and no node-aware selection.\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\n[MIT license](https://codeberg.org/reeven/codemirror-lang-lisp/src/branch/master/LICENSE).\n\n## Usage\n\n```javascript\nimport {EditorView, basicSetup} from \"codemirror\"\nimport {lisp} from \"@codincod/codemirror-lang-lisp\"\n\nconst view = new EditorView({\n  parent: document.body,\n  doc: `(defun greet (name)\\n  (format t \"hello, ~a~%\" name))`,\n  extensions: [basicSetup, lisp()]\n})\n```\n\n## Coverage\n\nWhich reader constructs the grammar carries was decided by counting them across\n5618 snippets, so a few things that look like omissions are deliberate.\n\nBrackets and braces are lists. Racket and R6RS write `[` where the standard\nwrites `(`, and no dialect gives it a different meaning; brackets appear in 22%\nof the corpus. `#lang` takes its whole line, because that line names the reader\ninstead of being a form the reader produces, and it appears in 17.5%.\n\nAlso handled: the quote family (`'`, `` ` ``, `,`, `,@`, `#'`, `` #` ``, `#,`,\n`#,@`), both keyword spellings (`:name` and `#:name`), characters, booleans,\nvectors and structs (`#(`, `#s(`, `#3a(`), dotted pairs, `|symbols with\nspaces|`, ratios and the radix prefixes `#x` `#b` `#o` `#d` `#e` `#i`, `#;`\ndatum comments, `#+`/`#-` reader conditionals, and comments in both forms with\n`#| |#` nesting properly.\n\nStrings may span lines. That sounds like a detail and is not one. Every Common\nLisp definition may carry a docstring, most of them wrap, and a token that\nstopped at the line end closed the string early, read the prose as symbols, and\nthen took the real closing quote for the start of the next string. Every form\nafter it in the file shifted by one.\n\nSpecial forms are lifted out of `Symbol` into their own node, so structure can\nbe told from application at a glance. The list is a union across dialects. A\nname that is ordinary in the dialect on screen costs one miscoloured symbol;\nleaving it out costs every file that uses it.\n\nThe head of a list is a `Callee`, which is the thing a Lisp does not say with\npunctuation: `(display x)` and `(x display)` are the same shape and different\nprograms. 46% of the symbols in the corpus are the head of something, and 69%\nof them in a Racket file, so a theme that paints a call differently from the\nnames it is passed has most of the file to say it with.\n\nBinding forms are known by name, because a parameter list is a list of names\nand not a call. `(defun f (a b) ...)` gives `f` a `Definition` node and leaves\n`a` and `b` as ordinary symbols, where a grammar that only knew about heads\nwould read `a` as a function. Nineteen forms are recognised (`lambda`, `let`\nand its relatives, `do`, `dolist`, `destructuring-bind` and so on), which is\nthe set whose shape is always \"an optional name, then a list of names\".\n\n## Accuracy\n\nMeasured against 5590 Rosetta Code snippets. A file counts as clean only when\nthe parse leaves no error node anywhere.\n\n| | Snippets | Clean |\n| --- | --: | --: |\n| **All** | **5590** | **98.35%** |\n| Racket | 1191 | 99.58% |\n| Common Lisp | 1161 | 98.36% |\n| PicoLisp | 953 | 98.11% |\n| Scheme | 579 | 98.62% |\n| EchoLisp | 310 | 96.45% |\n| Emacs Lisp | 260 | 98.46% |\n\n92 files are not clean. Most of those have unbalanced brackets: they are\nfragments, transcripts of a REPL session, or shell command lines filed as\nsource. No parser reads them.\n\n`npm run corpus -- path/to/files` runs that measurement over your own\ndirectory. No corpus ships here. Rosetta Code is under the GNU Free\nDocumentation License 1.2 and cannot be redistributed under this one.\n\n## Known limits\n\nPicoLisp reads `]` as a super-parenthesis closing every open bracket at once.\nThat cannot be reconciled with Racket's `[` matching `]` without knowing which\ndialect is on screen. Racket is the larger share, so brackets match.\n\nSpecial forms are recognised by name and never by scope, so a variable called\n`for` or `match` is coloured as a keyword.\n\nThree binding forms keep a shape the grammar does not follow: `defstruct`,\n`defgeneric` and `defmethod` name their arguments after a qualifier or without\na list around them, so the first name in them still reads as a call. That is\n0.05% of the heads in the corpus.\n\n## API Reference\n\n**`lisp`**`() → LanguageSupport`\n\nLisp language support, with completion for the special forms.\n\n**`lispLanguage`**`: LRLanguage`\n\nA language provider based on the Lezer Lisp parser in this package, extended\nwith highlighting and indentation information.\n\n**`lispCompletion`**`: CompletionSource`\n\nAutocompletion for the special forms the grammar recognises.\n\n**`parser`**`: LRParser`\n\nThe raw Lezer parser, for tooling that wants the tree without an editor.\n","readmeFilename":"README.md"}