{"id":25451479,"url":"https://github.com/usagi-coffee/tree-sitter-abl","last_synced_at":"2025-08-27T04:11:47.139Z","repository":{"id":155234989,"uuid":"632496249","full_name":"usagi-coffee/tree-sitter-abl","owner":"usagi-coffee","description":"OpenEdge ABL grammar for tree-sitter","archived":false,"fork":false,"pushed_at":"2025-02-26T10:37:08.000Z","size":22754,"stargazers_count":8,"open_issues_count":6,"forks_count":3,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-08T22:51:54.618Z","etag":null,"topics":["4gl","abl","openedge","openedge-abl","parser","progress","progress4gl","tree-sitter","tree-sitter-parser"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/usagi-coffee.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-04-25T14:23:53.000Z","updated_at":"2025-03-18T15:15:00.000Z","dependencies_parsed_at":null,"dependency_job_id":"72e97421-3980-4dc3-a11b-eec8ad9cbfd2","html_url":"https://github.com/usagi-coffee/tree-sitter-abl","commit_stats":null,"previous_names":[],"tags_count":32,"template":false,"template_full_name":null,"purl":"pkg:github/usagi-coffee/tree-sitter-abl","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/usagi-coffee%2Ftree-sitter-abl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/usagi-coffee%2Ftree-sitter-abl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/usagi-coffee%2Ftree-sitter-abl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/usagi-coffee%2Ftree-sitter-abl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/usagi-coffee","download_url":"https://codeload.github.com/usagi-coffee/tree-sitter-abl/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/usagi-coffee%2Ftree-sitter-abl/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272289491,"owners_count":24907799,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-27T02:00:09.397Z","response_time":76,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["4gl","abl","openedge","openedge-abl","parser","progress","progress4gl","tree-sitter","tree-sitter-parser"],"created_at":"2025-02-17T22:53:41.542Z","updated_at":"2025-08-27T04:11:47.101Z","avatar_url":"https://github.com/usagi-coffee.png","language":"C","funding_links":[],"categories":["Tools and libraries"],"sub_categories":["Zed"],"readme":"# tree-sitter-abl\n\nOpenEdge Advanced Business Language (ABL) grammar for tree-sitter.\n\nTo see syntax tree output see `test/corpus`.\n\nCheck out [tree-sitter-df](https://github.com/usagi-coffee/tree-sitter-df) for progress data definitions parser.\n\n## Usage\n\n\u003e Keep in mind there are many ABL statements that are not yet implemented but that doesn't ***necessarily*** mean they're not parsable, it just means the syntax tree won't have details about the statements!\n\nFor the grammar usage in your project look at tree-sitter documentation on how to use the grammar parsers because you can use tree-sitter parsers using [node](https://github.com/tree-sitter/node-tree-sitter)/[rust](https://github.com/tree-sitter/tree-sitter/tree/master/lib/binding_rust)/[wasm](https://github.com/tree-sitter/tree-sitter/tree/master/lib/binding_web) bindings.\n\n### Node\n\n```bash\nnpm install @usagi-coffee/tree-sitter-abl\n```\n\n### WASM\n\nPrebuilt WASM binary can be found in NPM package or build yourself with `npm run build:wasm`.\nFollow [web-tree-sitter](https://github.com/tree-sitter/tree-sitter/tree/master/lib/binding_web) binding documentation.\n\n```\n// Getting wasm binary from the npm package\nconst fs = require('node:fs');\nconst mod = fs.readFileSync('node_modules/@usagi-coffee/tree-sitter-abl/tree-sitter-abl.wasm');\n```\n\n### Shared library (.so)\n\nYou can build a shared library `.so` to use it in tools like [ast-grep](https://ast-grep.github.io/)\n\n```bash\ngcc -shared -fPIC -fno-exceptions -g -I 'src' -o abl.so -O2 src/scanner.c -xc src/parser.c -lstdc++\n```\n\n### Running the tests\n\n```bash\nnpm run test\n```\n\n### Testing your file\n\n```bash\nnpm run parse your_file.p\n```\n\n## License\n\n```LICENSE\nMIT License\n\nCopyright (c) Kamil Jakubus, Jason Chrosrova and contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fusagi-coffee%2Ftree-sitter-abl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fusagi-coffee%2Ftree-sitter-abl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fusagi-coffee%2Ftree-sitter-abl/lists"}