{"id":37822320,"url":"https://github.com/elimity-com/abnf","last_synced_at":"2026-01-16T15:42:51.673Z","repository":{"id":57519147,"uuid":"246011795","full_name":"elimity-com/abnf","owner":"elimity-com","description":"A Code Generator for ABNF Parsers","archived":false,"fork":false,"pushed_at":"2023-02-25T04:30:55.000Z","size":85,"stargazers_count":11,"open_issues_count":3,"forks_count":5,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-06-19T06:55:30.230Z","etag":null,"topics":["abnf"],"latest_commit_sha":null,"homepage":"","language":"Go","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/elimity-com.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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":"2020-03-09T10:57:45.000Z","updated_at":"2023-11-06T13:35:59.000Z","dependencies_parsed_at":"2024-06-19T06:17:07.228Z","dependency_job_id":"54528577-2add-48c6-b328-0b7fba025f06","html_url":"https://github.com/elimity-com/abnf","commit_stats":null,"previous_names":["di-wu/abnf"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/elimity-com/abnf","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elimity-com%2Fabnf","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elimity-com%2Fabnf/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elimity-com%2Fabnf/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elimity-com%2Fabnf/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/elimity-com","download_url":"https://codeload.github.com/elimity-com/abnf/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elimity-com%2Fabnf/sbom","scorecard":{"id":372872,"data":{"date":"2025-08-11","repo":{"name":"github.com/elimity-com/abnf","commit":"789cbbcbac801dd74ad57144198cdde4b26384a6"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.8,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/20 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Maintained","score":0,"reason":"project is archived","details":["Warn: Repository is archived."],"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.md:0","Info: FSF or OSI recognized license: MIT License: LICENSE.md:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":8,"reason":"2 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GO-2021-0113 / GHSA-ppp9-7jff-5vj2","Warn: Project is vulnerable to: GO-2022-1059 / GHSA-69ch-w2m2-3vjp"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 15 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-18T13:24:38.386Z","repository_id":57519147,"created_at":"2025-08-18T13:24:38.386Z","updated_at":"2025-08-18T13:24:38.386Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28479409,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T11:59:17.896Z","status":"ssl_error","status_checked_at":"2026-01-16T11:55:55.838Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["abnf"],"created_at":"2026-01-16T15:42:51.610Z","updated_at":"2026-01-16T15:42:51.666Z","avatar_url":"https://github.com/elimity-com.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Augmented BNF for Syntax Specifications: ABNF\nInternet technical specifications often need to define a formal syntax and are free to employ whatever notation their \nauthors deem useful. Over the years, a modified version of Backus-Naur Form (BNF), called Augmented BNF (ABNF), has been\npopular among many Internet specifications. It balances compactness and simplicity with reasonable representational power.\n\n[RFC 5234](https://tools.ietf.org/html/rfc5234)\n\n## Contents\n\n**!** `[]byte(...)` should be UTF-8 encoded!\n\n### Function Generator\nA way to generate the operators in memory.\n```go\ng := ParserGenerator{\n\tRawABNF: rawABNF,\n}\nfunctions := g.GenerateABNFAsOperators()\n// e.g. functions[\"ALPHA\"]([]byte(\"a\"))\n```\n### Code Generator\nBoth the [Core ABNF](./core/core_abnf.go) and the [ABNF Definition](./definition/abnf_definition.go) contained within this package \nwhere created by the generator.\n```go\ncorePkg := externalABNF{\n\toperator:    true,\n\tpackageName: \"github.com/elimity-com/abnf/core\",\n}\ng := Generator{\n\tPackageName:  \"definition\",\n\tRawABNF:      rawABNF,\n\tExternalABNF: map[string]ExternalABNF{\n\t\t\"ALPHA\":  corePkg,\n\t\t\"BIT\":    corePkg,\n\t\t// etc.\n\t},\n}\nf := g.GenerateABNFAsAlternatives()\n// e.g. ioutil.WriteFile(\"./definition/abnf_definition.go\", []byte(fmt.Sprintf(\"%#v\", f)), 0644)\n```\n##### (Currently) Not Supported\n- free-form prose\n- incremental alternatives\n\n### [Core ABNF](https://godoc.org/github.com/elimity-com/abnf/core)\n\"Core\" rules that are used variously among higher-level rules. The \"core\" rules might be formed into a lexical analyzer \nor simply be part of the main ruleset.\n### [Operators](https://godoc.org/github.com/elimity-com/abnf/operators)\nElements form a sequence of one or more rule names and/or value definitions, combined according to the various operators\ndefined in this package, such as alternative and repetition.\n\n## HEXDIG\nIn the spec HEXDIG is case insensitive. \\\ni.e. `0x6e != 0x6E`\n```abnf\nHEXDIG = DIGIT / \"A\" / \"B\" / \"C\" / \"D\" / \"E\" / \"F\"\n```\nIn this implementation it is so that `0x6e == 0x6E`.\n```abnf\nHEXDIG = DIGIT / \"A\" / \"B\" / \"C\" / \"D\" / \"E\" / \"F\"\n               / \"a\" / \"b\" / \"c\" / \"d\" / \"e\" / \"f\"\n```\n\n## EOL\nText files created on DOS/Windows machines have different line endings than files created on Unix/Linux. \nDOS uses carriage return and line feed (`\\r\\n`) as a line ending, which Unix uses just line feed (`\\n`).\n\nThis is why this package also allows LF which is **NOT** compliant with the specification.\n```abnf\nCRLF = CR LF / LF\n```\n\n## Operator Precedence\n[RFC 5234 3.10](https://tools.ietf.org/html/rfc5234#section-3.10)\n\n`highest`\n\n1. Rule name, prose-val, Terminal value\n2. Comment\n3. Value range\n4. Repetition\n5. Grouping, Optional\n6. Concatenation\n7. Alternative\n\n`lowest`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felimity-com%2Fabnf","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Felimity-com%2Fabnf","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felimity-com%2Fabnf/lists"}