{"_id":"@codincod/codemirror-lang-rexx","_rev":"6-412345bff2530f4de0d7e14d296ce3e8","name":"@codincod/codemirror-lang-rexx","dist-tags":{"latest":"0.4.0"},"versions":{"0.1.0":{"name":"@codincod/codemirror-lang-rexx","version":"0.1.0","keywords":["editor","code","rexx","oorexx","codemirror"],"author":{"name":"CodinCod","email":"hello@codincod.com"},"license":"MIT","_id":"@codincod/codemirror-lang-rexx@0.1.0","maintainers":[{"name":"juicemitapfelndrin","email":"juicemitapfelndrin@gmail.com"}],"dist":{"shasum":"2d81b718a90cb493a1377f69838942a55c32ba87","tarball":"https://registry.npmjs.org/@codincod/codemirror-lang-rexx/-/codemirror-lang-rexx-0.1.0.tgz","fileCount":14,"integrity":"sha512-HpC6eElHyxdOLcqkqOfFt0qDAx/3tdX1L2G9FkSV/1ZBijLt5v9nvJSjkaNb/dTEa93EOG+8wGbygvWn+KZufA==","signatures":[{"sig":"MEUCIQCWR40SIqR3XshGlbdJfkzqQ9pUF+IepgO3VgpIFxAuTQIgFley31QWU1V0K0YdMLKgZR6iHVSowZ6bTIZQ+4YJHsg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":183791},"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":"6a03ee4f1d10d28e2d0eb5757cf59721c84b14df","scripts":{"test":"npm run build && node --test \"test/*.test.ts\"","build":"rm -rf dist && lezer-generator src/rexx.grammar -o src/parser.js && cm-buildhelper src/rexx.ts","corpus":"npm run build && node test/corpus.ts","prepare":"npm run build","build-debug":"lezer-generator src/rexx.grammar --names -o src/parser.js && cm-buildhelper src/rexx.ts"},"_npmUser":{"name":"juicemitapfelndrin","email":"juicemitapfelndrin@gmail.com"},"repository":{"url":"git+https://codeberg.org/reeven/codemirror-lang-rexx.git","type":"git"},"_npmVersion":"11.6.2","description":"REXX 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-rexx_0.1.0_1785095980668_0.9030516937899338","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@codincod/codemirror-lang-rexx","version":"0.1.1","keywords":["editor","code","rexx","oorexx","codemirror"],"author":{"name":"CodinCod","email":"hello@codincod.com"},"license":"MIT","_id":"@codincod/codemirror-lang-rexx@0.1.1","maintainers":[{"name":"juicemitapfelndrin","email":"juicemitapfelndrin@gmail.com"}],"homepage":"https://codincod.com/","dist":{"shasum":"f56efc7db084337845acfe6891df8940314c9c82","tarball":"https://registry.npmjs.org/@codincod/codemirror-lang-rexx/-/codemirror-lang-rexx-0.1.1.tgz","fileCount":14,"integrity":"sha512-hwD9ZHOkPeFAycQbrU8/0risfB3O5D83RXmHGjwpBv5wvvhT4+qLgVoU/5r/p+wQNnzI+3mz4emu6Ia51809fQ==","signatures":[{"sig":"MEYCIQC26MTFEhSentuTFMtQVbvNKpUnkrPFDzC9CcRkAEv+/AIhAJ8/qvQZ1D3WSS3N+FFSomFzQt0m4tQivDnOSBFAq5vh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":184010},"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":"fc971be8c5b45e6c8e447bc05d426d3f2a349426","scripts":{"test":"npm run build && node --test \"test/*.test.ts\"","build":"rm -rf dist && lezer-generator src/rexx.grammar -o src/parser.js && cm-buildhelper src/rexx.ts","corpus":"npm run build && node test/corpus.ts","prepare":"npm run build","build-debug":"lezer-generator src/rexx.grammar --names -o src/parser.js && cm-buildhelper src/rexx.ts"},"_npmUser":{"name":"juicemitapfelndrin","email":"juicemitapfelndrin@gmail.com"},"repository":{"url":"git+https://codeberg.org/reeven/codemirror-lang-rexx.git","type":"git"},"_npmVersion":"11.6.2","description":"REXX 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-rexx_0.1.1_1785286934851_0.6111351701637513","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@codincod/codemirror-lang-rexx","version":"0.1.2","keywords":["editor","code","rexx","oorexx","codemirror"],"author":{"name":"CodinCod","email":"hello@codincod.com"},"license":"MIT","_id":"@codincod/codemirror-lang-rexx@0.1.2","maintainers":[{"name":"juicemitapfelndrin","email":"juicemitapfelndrin@gmail.com"}],"homepage":"https://codincod.com/","dist":{"shasum":"e24ece16601cffd3451a1734315cdc53f48d31b1","tarball":"https://registry.npmjs.org/@codincod/codemirror-lang-rexx/-/codemirror-lang-rexx-0.1.2.tgz","fileCount":14,"integrity":"sha512-H/2ZJdxmdqoZLk2rrGCwOYk2cESb2FP8IfN45lmVWXeBzTUM3pq0llnJfbQelKBKKOW/1yrY5lsJ77ypTkkSxQ==","signatures":[{"sig":"MEUCIQDYmrqXkRHpcq3niJcMogNUVVOkkiFIZywAZgYQi4O+wwIgYigQmPVJDWg4OxWPzfBO+EKVEQQyQFJjpzUeGbFwUlE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":184119},"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":"7b230bacbe1ddefa70537fcc74bbb2f57e3bd26f","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/rexx.grammar -o src/parser.js && cm-buildhelper src/rexx.ts","corpus":"npm run build && node ../lezer-survey/src/cli.ts measure --group parent","prepare":"npm run build","build-debug":"lezer-generator src/rexx.grammar --names -o src/parser.js && cm-buildhelper src/rexx.ts"},"_npmUser":{"name":"juicemitapfelndrin","email":"juicemitapfelndrin@gmail.com"},"repository":{"url":"https://codeberg.org/reeven/codemirror-lang-rexx","type":"git"},"_npmVersion":"11.6.2","description":"REXX 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-rexx_0.1.2_1785970833506_0.6751763708419789","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@codincod/codemirror-lang-rexx","version":"0.2.0","keywords":["editor","code","rexx","oorexx","codemirror"],"author":{"name":"CodinCod","email":"hello@codincod.com"},"license":"MIT","_id":"@codincod/codemirror-lang-rexx@0.2.0","maintainers":[{"name":"juicemitapfelndrin","email":"juicemitapfelndrin@gmail.com"}],"homepage":"https://codincod.com/","dist":{"shasum":"d03f8617559a6504ad7dc69ee156974e3b10a487","tarball":"https://registry.npmjs.org/@codincod/codemirror-lang-rexx/-/codemirror-lang-rexx-0.2.0.tgz","fileCount":14,"integrity":"sha512-zYKvVzWEYvrFZX7NC+YscMTdRj3ru+1xyR9qKVU2r60J98J6xpi9Onsn5Z11XG212DsPJoGyZIaPLbgGRINuBA==","signatures":[{"sig":"MEQCIEe3m0S713wWo44h62xAgqpCV6Z8quJ2iSD15WVJbj25AiAQItKZ34q7nalEpvYtTIHJ2vg1MkhcOAxcSG+f+T4SoQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":198294},"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":"ed768731c3e681a01e4f244da9ee55d1354967b9","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","test":"npm run build && node --test \"test/*.test.ts\"","build":"rm -rf dist && lezer-generator src/rexx.grammar -o src/parser.js && cm-buildhelper src/rexx.ts","measure":"npm run build && node ../lezer-survey/src/cli.ts measure --group parent","prepare":"npm run build","build-debug":"lezer-generator src/rexx.grammar --names -o src/parser.js && cm-buildhelper src/rexx.ts"},"_npmUser":{"name":"juicemitapfelndrin","email":"juicemitapfelndrin@gmail.com"},"repository":{"url":"https://codeberg.org/reeven/codemirror-lang-rexx","type":"git"},"_npmVersion":"11.6.2","description":"REXX 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/state":"^6.7.1","@codemirror/language":"^6.0.0","@codemirror/autocomplete":"^6.0.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@lezer/generator":"^1.7.0","@codemirror/buildhelper":"^1.0.2"},"_npmOperationalInternal":{"tmp":"tmp/codemirror-lang-rexx_0.2.0_1786760496919_0.6268290632290441","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@codincod/codemirror-lang-rexx","version":"0.3.0","keywords":["editor","code","rexx","oorexx","codemirror"],"author":{"name":"CodinCod","email":"hello@codincod.com"},"license":"MIT","_id":"@codincod/codemirror-lang-rexx@0.3.0","maintainers":[{"name":"juicemitapfelndrin","email":"juicemitapfelndrin@gmail.com"}],"homepage":"https://codincod.com/","dist":{"shasum":"c205f14db5aed153d52c13da1bcfccd699a27e8b","tarball":"https://registry.npmjs.org/@codincod/codemirror-lang-rexx/-/codemirror-lang-rexx-0.3.0.tgz","fileCount":14,"integrity":"sha512-0Mij8LN7o7cuGtbMqNDcodASnozZq6TVVv2S9kfI/FC0rGXgiA+l54CldBsyXCE9RneFi48WjzRjeBKN6SKSMA==","signatures":[{"sig":"MEYCIQClSv8L+h3/BEOKhdyFCPdBFcK20R5Rz6E62MC4qfgQHAIhAKSJEtW0O+BUu/XkECy3biSqmia86/ZSe9mhgCUwPZWE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":207836},"main":"dist/index.cjs","type":"module","_from":"file:codincod-codemirror-lang-rexx-0.3.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","exports":{"import":"./dist/index.js","require":"./dist/index.cjs"},"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","test":"npm run build && node --test \"test/*.test.ts\"","build":"rm -rf dist && lezer-generator src/rexx.grammar -o src/parser.js && cm-buildhelper src/rexx.ts","measure":"npm run build && node ../lezer-survey/src/cli.ts measure --group parent","build-debug":"lezer-generator src/rexx.grammar --names -o src/parser.js && cm-buildhelper src/rexx.ts"},"_npmUser":{"name":"juicemitapfelndrin","email":"juicemitapfelndrin@gmail.com"},"_resolved":"/tmp/72485d587e3ab63eeacd42d75bb1f634/codincod-codemirror-lang-rexx-0.3.0.tgz","_integrity":"sha512-0Mij8LN7o7cuGtbMqNDcodASnozZq6TVVv2S9kfI/FC0rGXgiA+l54CldBsyXCE9RneFi48WjzRjeBKN6SKSMA==","repository":{"url":"https://codeberg.org/reeven/codemirror-lang-rexx","type":"git"},"_npmVersion":"11.6.2","description":"REXX 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/state":"^6.7.1","@codemirror/language":"^6.0.0","@codemirror/autocomplete":"^6.0.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@lezer/generator":"^1.7.0","@codemirror/buildhelper":"^1.0.2"},"_npmOperationalInternal":{"tmp":"tmp/codemirror-lang-rexx_0.3.0_1786831871434_0.25256109689306894","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@codincod/codemirror-lang-rexx","version":"0.4.0","description":"REXX language support for the CodeMirror code editor","keywords":["editor","code","rexx","oorexx","codemirror"],"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/rexx.grammar -o src/parser.js && cm-buildhelper src/rexx.ts","build-debug":"lezer-generator src/rexx.grammar --names -o src/parser.js && cm-buildhelper src/rexx.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","clean":"node ../lezer-survey/src/cli.ts clean ../rexx-corpus --oracle \"$PWD/tools/regina-oracle.sh {}\" --reject \"regina: shape error\" --jobs 8"},"dependencies":{"@codemirror/autocomplete":"^6.0.0","@codemirror/language":"^6.0.0","@codemirror/state":"^6.7.1","@lezer/common":"^1.0.0","@lezer/highlight":"^1.0.0","@lezer/lr":"^1.0.0"},"devDependencies":{"@codemirror/buildhelper":"^1.0.2","@lezer/generator":"^1.7.0","typescript":"^5.6.0"},"homepage":"https://codincod.com/","repository":{"type":"git","url":"https://codeberg.org/reeven/codemirror-lang-rexx"},"gitHead":"3e869040820ca964b59c411ec7b86c8063d9f298","_id":"@codincod/codemirror-lang-rexx@0.4.0","_nodeVersion":"22.20.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-YfuU4WPT+qymdWh1ppLGFd9WMApPiKAnO+MbwPQX/mafm0LyK83ZLaCSWEMolK+ncWTqeY6TgsMUIHnlAIxBJw==","shasum":"5116e450ec30c65777ceb8a75a6cd046b7e5305c","tarball":"https://registry.npmjs.org/@codincod/codemirror-lang-rexx/-/codemirror-lang-rexx-0.4.0.tgz","fileCount":14,"unpackedSize":208940,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGrOT2Y6F4yTUzkYeEtuvjmZ56l92ziEmBcBU/+V+APmAiBWmF8C79loHOF1gIjHYRd9XO1w+xUfgtF7rJbgp8eqtA=="}]},"_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-rexx_0.4.0_1787823761100_0.13984819626223488"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-26T19:59:40.520Z","modified":"2026-08-27T09:42:41.404Z","0.1.0":"2026-07-26T19:59:40.819Z","0.1.1":"2026-07-29T01:02:15.003Z","0.1.2":"2026-08-05T23:00:33.654Z","0.2.0":"2026-08-15T02:21:37.063Z","0.3.0":"2026-08-15T22:11:11.577Z","0.4.0":"2026-08-27T09:42:41.246Z"},"author":{"name":"CodinCod","email":"hello@codincod.com"},"license":"MIT","homepage":"https://codincod.com/","keywords":["editor","code","rexx","oorexx","codemirror"],"repository":{"type":"git","url":"https://codeberg.org/reeven/codemirror-lang-rexx"},"description":"REXX language support for the CodeMirror code editor","maintainers":[{"name":"juicemitapfelndrin","email":"juicemitapfelndrin@gmail.com"}],"readme":"# @codincod/codemirror-lang-rexx [![NPM version](https://img.shields.io/npm/v/@codincod/codemirror-lang-rexx.svg)](https://www.npmjs.org/package/@codincod/codemirror-lang-rexx)\n\n[ [**CHANGELOG**](https://codeberg.org/reeven/codemirror-lang-rexx/src/branch/master/CHANGELOG.md) ]\n\nThis package implements REXX 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\nCodeMirror has never shipped REXX, in either version. There was no CodeMirror 5\nstream mode to port, so a REXX file in a browser editor has been plain text for\nas long as browser editors have existed.\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-rexx/src/branch/master/LICENSE).\n\n## Usage\n\n```javascript\nimport {EditorView, basicSetup} from \"codemirror\"\nimport {rexx} from \"@codincod/codemirror-lang-rexx\"\n\nconst view = new EditorView({\n  parent: document.body,\n  doc: `say 'Hello World!'`,\n  extensions: [basicSetup, rexx()]\n})\n```\n\nFor ooRexx, which reads `--` as a comment:\n\n```javascript\nrexx({dialect: \"oorexx\"})\n```\n\n## Coverage\n\nANSI REXX (X3.274-1996) and TRL 2, with the parts of Regina and ooRexx that\nreal programs use: `--` line comments, the compound assignments `+=` and their\nrelatives, `/=` for \"not equal\", `LOOP`, `USE ARG`, `RAISE`, `FORWARD`,\n`GUARD`, `REPLY`, the `~` message operator and the `::CLASS` directives. ARexx's\n`~` for `not` works as well, because the two never want it in the same place.\n\nInstructions are parsed as themselves rather than as a generic statement, so\n`PARSE` gets a template rather than an expression, `DO` gets its control\nvariable and limits, and `SIGNAL ON ERROR NAME handler` gets a condition and a\nlabel. That is what gives folding a body to fold and indentation a block to\nmeasure.\n\n## What it was measured on\n\n**4728 published REXX files from 371 repositories, of which 4703 parse with no\nerror node: 99.47%.** Under the ooRexx dialect, 1266 files that use ooRexx's\nown syntax, of which 1211 parse: 95.66%.\n\nThe classic corpus has a sieve: `npm run clean` puts every file to Regina\nthrough `tools/regina-oracle.sh`, and moves out what Regina will not tokenise.\nThat took 372 of the 5100 the corpus used to hold, and the figure from 95.33%.\nMost of what went was never REXX: a JCL job deck under a `.REXX`, a licence\ntext under a `.rexx`, a shell script under a `.exec`.\n\nThe two figures are two corpora because they are two languages. A file that\nwrites `--` for a comment, sends a message with `~`, or opens a `::CLASS` is\nooRexx, and reading it as classic REXX measures the wrong thing: the same 1266\nfiles read 51.26% under the classic dialect, which says nothing about either\ngrammar. The registry in\n[lezer-survey](https://codeberg.org/reeven/lezer-survey) is where the line\nbetween them is written down, and `npm run measure` is what draws it.\n\nWhat still fails is twenty-five files and ninety-nine error nodes. The corpus\nholds a card-image convention as well, where columns 73 to 80 carry a sequence\nnumber no editor shows; those are set aside rather than parsed.\n\nRegina is asked about three dialects, since a call written as a function,\n`call open(1, f)`, is how ARexx spells what ANSI Rexx spells with spaces.\nThree spellings are normalised before the question is put, because Regina knows\nthe operator and not the way a given file writes it: a UTF-8 byte order mark,\nthe `¬=` of a terminal that had a not-sign, and the `/=` ooRexx spells the same\noperator with. Each substitution is the same length as what it replaces, so a\nline number still points where it pointed. And Regina dumps core on a handful\nof these files; a crash is no verdict on the program that provoked it, so only\nwhat it reports as `Error N` counts.\n\n## Three things REXX does differently\n\n**Nothing is reserved.** `say = 1` assigns to a variable named `say`, `end:` is\na label, and `x = if + 1` adds one to a variable named `if`. A word here is a\nkeyword only where the parser has room for that keyword, so the same word reads\nas an instruction in one column and as a variable in the next.\n\n**A clause ends at the end of the line**, unless the line ended with a comma,\nwhich continues it. Runs of terminators are folded into one token, so a blank\nline or a comment between `then` and `else` does not end the `if`.\n\n**Concatenation has no operator.** `say 'total:' n 'items'` is three values\njoined by the blanks between them. This is also why `-` needs care: after a\nvalue it is subtraction, so `end-1`, `end - 1` and `end -1` are one expression,\nwhile `say -1` is a sign. REXX decides by position and so does this grammar.\n\n## What it gives an editor\n\nSyntax highlighting, folding for `DO` and `SELECT` groups, indentation that\nknows `END` closes a block and that `WHEN` sits inside its `SELECT`, and\ncompletion for the instruction keywords, the TRL 2 built-in functions and the\ntrappable conditions.\n\n`rexxLanguage` and `ooRexxLanguage` are exported for use with\n`LanguageSupport`, and `parser` for use on its own.\n\n## Testing it on your own code\n\nThe grammar was developed against a corpus, and the script that measures it\nships with the package:\n\n```\nnpm run corpus -- path/to/your/rexx\n```\n\nIt prints the files that failed, the first line of each that did, and the\nproportion that came out clean. The corpus itself is not included; Rosetta Code\nis under the GNU Free Documentation License 1.2 and cannot be redistributed\nunder this one.\n","readmeFilename":"README.md"}