pkg.soopen package index

brew / rank 6563

Install bnfc with Homebrew, apt, pacman

BNF Converter. Version 2.9.6.3 via Homebrew; verified 2026-07-22. Also installable with debian: sudo apt install bnfc.

install

Additional install commands

macOS

Homebrewverified · 100%
brew install bnfc

local Homebrew formula metadata

overview

Package summary

BNF Converter

Commands and aliases

  • bnfc

history

Project history and usage

BNFC, the BNF Converter, is a compiler-construction tool that turns a Labelled BNF grammar into a compiler front end: abstract syntax, lexer, parser, pretty-printer, test bench, and documentation.

Project history

BNFC started at Chalmers and the University of Gothenburg. A 2004 Haskell workshop demonstration by Markus Forsberg and Aarne Ranta says Forsberg and Ranta began development in 2002 as a tool generating Haskell.

The same source records that Michael Pellauer retargeted BNFC to C, C++, and Java in 2003, moving it from a Haskell-only generator toward a multilingual compiler-front-end generator.

Modern BNFC documentation describes the LBNF formalism independently of any one output language, and the project now advertises generation for Haskell, Agda, C, C++, Java, OCaml, XML representations, and Pygments syntax highlighters.

Adoption history

BNFC found adoption in programming-languages courses, research prototypes, and small language implementations where the grammar is the most stable artifact and hand-written front ends would be repetitive.

Its package-manager footprint is narrower than mainstream parser generators but meaningful: Homebrew, Debian/Ubuntu, Arch, and Haskell package ecosystems carry it for developers who want an executable generator rather than a library-only parser toolkit.

How it is used

A user writes an LBNF grammar, runs bnfc, and then compiles the generated lexer/parser and abstract-syntax code with the target language's usual parser tooling, such as Alex and Happy for Haskell or Flex/Bison-style tools for C-family output.

BNFC is especially useful when the same grammar should produce both implementation artifacts and a readable language specification, keeping parser code, AST constructors, pretty printers, and documentation aligned.

Why package nerds care

BNFC is package-nerd-significant because it packages an academic compiler-construction idea as a practical command-line generator. It is not just yacc with another syntax; its labeled grammar rules become typed abstract syntax across target languages.

For language-tooling nerds, BNFC sits in the interesting space between parser generators, syntax-specification formalisms, and teaching tools. It makes a grammar file the source of truth for several generated artifacts that are otherwise easy to let drift.

Its long survival in package managers matters because many compiler-course and research tools depend on old but useful grammar generators being installable without reconstructing a Chalmers-era toolchain by hand.

Timeline

  • 2002: Forsberg and Ranta start BNFC as a Haskell-generating tool.
  • 2003: BNFC is retargeted to C, C++, and Java by Michael Pellauer.
  • 2004: BNFC is demonstrated at the ACM SIGPLAN Haskell workshop.
  • 2010s: BNFC migrates into modern package managers and public GitHub maintenance.
  • 2020s: BNFC documentation lists target-language support including Haskell, Agda, C, C++, Java, and OCaml.

Related projects

  • Alex and Happy: Haskell lexer and parser tools often used with BNFC's Haskell backend.
  • Flex and Bison: traditional lexer/parser tools related to BNFC's C/C++ style generated front ends.
  • ANTLR, yacc, and Menhir: parser-generator neighbors with different grammar models and target ecosystems.
  • LBNF: the Labelled BNF grammar formalism used by BNFC.

security posture

Risk level: green

narrow executable package without higher-risk signals.

Risk classifier

green risk · low confidence · appliance

Why

  • narrow executable package without higher-risk signals

Signals

  • metadata:no-higher-risk-signals

Install behavior

  • No Homebrew bottle metadata was recorded.

Recommended review

Before unattended agent use, check whether the tool reads plaintext credentials, writes remote state, publishes artifacts, or shells out to plugins.

executables

Installed executables

CommandKindExposureNote
bnfcexecutableindexed executableDiscovered from the local executable index.

freshness

Version and freshness

These signals separate page generation age, package-manager activity, and upstream release comparison. Version lag is warned only when an evidence URL and comparable versions are present.

page generated2026-08-03
manager version2.9.6.3
manager updated2026-07-22
local dataunknown
upstreamnot available
latest detectednot detected
  • okNo freshness warnings were generated.

install metadata

Package metadata

Package keybrew:bnfc
Version2.9.6.3
Package managerHomebrew
Homepagehttps://github.com/BNFC/bnfc
Repositoryhttps://github.com/BNFC/bnfc
Last updated2026-07-22T02:42:18Z
Pulseupdated
Bottlenot recorded
Servicenone declared

source database matches

Other package-manager records

Matches are pulled from external package-manager indexes and kept separate from local Automic Vault package links.

Debian apt95%

bnfc 2.9.5-1

Compiler front-end generator based on Labelled BNF

https://bnfc.digitalgrammars.com/

sudo apt install bnfc
  • Section: devel
  • Architecture: amd64
  • 3 dependencies
  • normalized package name match
  • Matched by: Bnfc
Debian stable package indexes · deb.debian.org · Debian stable package indexes: bnfc from https://deb.debian.org/debian/dists/stable/main/binary-amd64/Packages.xz
Ubuntu apt95%

bnfc 2.9.5-1

Compiler front-end generator based on Labelled BNF

https://bnfc.digitalgrammars.com/

sudo apt install bnfc
  • Section: universe/devel
  • Architecture: amd64
  • 3 dependencies
  • normalized package name match
  • Matched by: Bnfc
Ubuntu 24.04 LTS package indexes · archive.ubuntu.com · Ubuntu 24.04 LTS package indexes: bnfc from https://archive.ubuntu.com/ubuntu/dists/noble/universe/binary-amd64/Packages.gz
pacman95%

bnfc 2.9.6.3-35

A compiler front-end generator.

https://bnfc.digitalgrammars.com/

sudo pacman -S bnfc
  • License: BSD-3-Clause
  • Architecture: x86_64
  • 2 dependencies
  • 3 optional deps
  • normalized package name match
  • Matched by: Bnfc
Arch Linux sync databases · geo.mirror.pkgbuild.com · Arch Linux sync databases: bnfc from https://geo.mirror.pkgbuild.com/extra/os/x86_64/extra.db.tar.gz

source trail

Generated from repository data

This page is generated by av-web from the private package SQLite artifact built by scripts/generate-pkg-sqlite.py.

Used sources

  • Geiger risk classifier
  • cross-ecosystem install command graph
  • curated package history
  • external package-manager database matches
  • pkg.so package database
  • pkgdb category and tag curation