{"ref":"artifact:abapcdsgrammar","page":"/artifacts/abapcdsgrammar","json":"/artifacts/abapcdsgrammar.json","generated":"2026-10-27","drafted_with_ai":true,"entity":{"id":"abapcdsgrammar","name":"abapcdsgrammar","artifact_type":"package","ecosystem":"abap","domain":"developer-experience","origin_ring":"independent","description":{"one_line":"An ANTLR4 grammar for [ABAP CDS](artifact:abap-cds), with the lexer and parser generated from it, so CDS source can be read as a parse tree outside a system.","short":"ANTLR4 grammar, lexer and parser for ABAP CDS","what_it_solves":"The grammar is the deliverable and the generated lexer and parser ship beside it, so a tool that needs to read ABAP CDS source without a system has the parse step already written. It stops at the tree: what is checked, rendered or rewritten from there belongs to whatever calls it. The README runs to two lines and a pair of links to MIT-licensed ABAP repositories the examples are taken from, and there is no usage documentation beyond that."},"links":{"npm":"https://www.npmjs.com/package/abapcdsgrammar","repo":"https://github.com/esjewett/ABAPCDSGrammar"},"identity":{"license":"MIT"},"provides":[{"capability":"capability:abap-static-analysis","what_it_does":"Supplies the grammar an ABAP CDS analyser needs before it can read source at all: the parse step, not the checks run on the tree.","sources":[{"url":"https://github.com/esjewett/ABAPCDSGrammar","title":"esjewett/ABAPCDSGrammar — README","checked":"2026-09-18","quote":"ABAP CDS Grammar and Lexer/Parser for Antlr4"}]}],"maintainers":["actor:esjewett"],"provenance":{"discovered_via":[{"source":"source:discover"},{"source":"source:npm"}],"first_seen":"2026-09-18"},"drafted_with_ai":true,"contributors":["actor:esjewett","actor:marcellourbani","actor:tobiasmelcher"]},"effective_normative_relations":[],"readings":{"liveness":[{"label":"Maintenance","tier":"poor","evidence":"80 months since release"},{"label":"Continuity","tier":"good","evidence":"3 contributors, 1 publisher"},{"label":"Repository","tier":"poor","evidence":"pushed 2023-09, not archived"}],"compatibility":[{"label":"Declared for","tier":"fair","evidence":"nothing declared"},{"label":"Survived majors","tier":"unknown","evidence":"not read on ABAP: its lines run side by side"},{"label":"Maintainer's CI","tier":"fair","evidence":"workflows present, no completed run on the default branch"}],"practice":[{"label":"Tests","tier":"good","evidence":"npm test"},{"label":"Docs","tier":"poor","evidence":"README <1 KB"},{"label":"Changelog","tier":"fair","evidence":"none in the repo"}],"reach":[{"value":145,"unit":"installs/week"},{"value":5,"unit":"watching"}]},"signals":{"crawled_at":"2026-10-24","latest_version":"0.0.7","majors":{"0.0":{"version":"0.0.1","date":"2020-01-02"}},"license":"MIT","first_release":"2020-01-02","last_release":"2020-03-06","releases":7,"cadence_days":1,"maintainers":1,"repository":null,"repository_directory":null,"peer_cds":null,"test_script":true,"types":true,"downloads_weekly":145,"stars":5,"forks":4,"open_issues":7,"archived":false,"pushed_at":"2023-09-29","license_spdx":"MIT","org_owned":false,"default_branch":"master","contributors":3,"tree_truncated":false,"test_files":0,"workflows":1,"other_ci":false,"readme_bytes":203,"docs_files":0,"changelog":false,"license_file":true,"dts_files":0,"first_commit":"2019-12-24","last_commit":"2023-09-29","commits":63,"readme_path":"README.md","readme_sha":"b8ffa5db076ceea7cf2ee295f55846668feeeed5","months_since_release":80,"dormant":true,"dependencies":1,"node_engine":null,"downloads_monthly":357,"created_at":"2019-12-24T14:00:42Z","open_prs":1,"repo_read":"2026-10-24"},"release_notes":{"license":"MIT","quotable":true,"source":{"kind":"github-releases","url":"https://github.com/esjewett/ABAPCDSGrammar/releases"},"format":"github-releases","releases":[{"version":"0.0.5","date":"2020-01-03","date_source":"github","heading":"Feature-complete for 1.0","url":"https://github.com/esjewett/ABAPCDSGrammar/releases/tag/v0.0.5","sections":[],"hash":"8e6c24f19d470746"},{"version":"0.0.4","date":"2020-01-02","date_source":"github","heading":"Corrections from testing on existing data models","url":"https://github.com/esjewett/ABAPCDSGrammar/releases/tag/v0.0.4","sections":[],"hash":"ee896d50d84c1d29"},{"version":"0.0.2","date":"2020-01-02","date_source":"github","heading":"Now with a working NPM package version ;)","url":"https://github.com/esjewett/ABAPCDSGrammar/releases/tag/v0.0.2","sections":[],"hash":"e3b0c44298fc1c14"},{"version":"0.0.1","date":"2020-01-02","date_source":"github","heading":"Pre-1.0 initial release","url":"https://github.com/esjewett/ABAPCDSGrammar/releases/tag/v0.0.1","sections":[],"hash":"fc8ffbf9d88add3c"}],"versions":[{"version":"0.0.7","date":"2020-03-06"},{"version":"0.0.6","date":"2020-03-05"},{"version":"0.0.5","date":"2020-01-03"},{"version":"0.0.4","date":"2020-01-02"},{"version":"0.0.3","date":"2020-01-02"},{"version":"0.0.2","date":"2020-01-02"},{"version":"0.0.1","date":"2020-01-02"}],"crawled_at":"2026-10-25"},"edges":{"maintainers":[{"ref":"actor:esjewett","name":"Ethan Jewett","json":"/actors/esjewett.json"}],"contributors":[{"ref":"actor:esjewett","name":"Ethan Jewett","json":"/actors/esjewett.json"},{"ref":"actor:marcellourbani","name":"Marcello Urbani","json":"/actors/marcellourbani.json"},{"ref":"actor:tobiasmelcher","name":"Tobias Melcher","json":"/actors/tobiasmelcher.json"}],"explained_by":[],"alternative_to_this":[],"needed_by":[],"available_via":[],"parts":[],"add_ons":[],"answered_through_parts":[]}}