BNFC标志

语言技术中心

查尔默斯科技大学和哥德堡大学

什么是BNF转换器?

BNF Converter是生成编译器的编译器构造工具前端来自带标签的BNF语法。目前是为目标语言生成代码Haskell、Agda、C、C++、Java和OCaml,以及XML表示和Pyagm语法高亮显示。

给定一个带标签的BNF语法该工具生成:

下载

通过堆栈安装:

$stack安装BNFC

由Cabal从Hackage安装:

$cabal安装BNFC

当前开发版本(上的源存储库github)

$git克隆https://github.com/BNFC/BNFC

新闻

在上查找最新版本https://github.com/BNFC/BNFC/发布.

BNFC版本2.9.5 2023-07-26

BNFC版本2.9.4.1 2022-12-17

BNFC版本2.9.4 2022-02-17

BNFC版本2.9.3 2021-10-01

BNFC版本2.9.2 2021-06-13

BNFC版本2.9.1 2021-03-01

BNFC版本2.9.0 2020-12-28

BNFC版本2.8.4 2020-10-10

BNFC版本2.8.3 2019-08-27

BNFC版本2.8.2 2018-11-04

资源

文档

邮件列表

向我们的谷歌群组.

书籍封面

实现编程语言,一本使用BNFC的编译器书籍。

一个小例子

文件内容计算.cf以下为:
--Calc.cf:算术表达式的语法
E添加。 费用 时间:= 费用 "+" 实验1 ;
E分节。 费用 ::= 费用 "-" 实验1 ;
EMul公司。 实验1 ::= 实验1 "*" 实验2 ;
EDiv公司。 实验1 ::= 实验1 "/" 实验2 ;
EInt公司。 实验2 ::= 整数 ;
强制转换 费用 2 ;
生成分析器(选择后端):
bnfc—haskell-d-m计算.cf和生成bnfc—agda-d-m计算.cf和生成bnfc—c-m计算.cf和生成bnfc—cpp-m计算.cf和生成bnfc—java-m Calc.cf&&makebnfc—java-antlr-m计算.cf和生成bnfc—ocaml-m计算.cf和生成bnfc—ocaml-menhir-m计算.cf和生成
运行测试解析器,例如使用`--haskell`生成:
echo“1+2*3-4/5”|计算/测试
BNFC功能概述:BNFC代码生成器图

大型示例

A类C的语法具有一个示例C文件.

A类阿尔法语法带有Alfa文件示例.(有关更多详细信息,请参阅Alfa主页.)

A类LBNF语法.它同时也是一个示例LBNF文件。这个开发版本在BNF转换器的实现中使用了此语法的。

A类Java 1.1语法由开发迈克·雷尼.

作者

©安德烈亚斯·阿贝尔(Andreas Abel)、乔纳斯·阿尔姆斯特伦·杜雷加德(Jonas Almström Duregárd)、克拉西米尔·安吉洛夫(Krasimir Angelov),Jean-Philippe Bernardy、Björn Bringert、Johan Broberg、Kyle Butt、,保罗·卡拉汉,格雷戈伊尔·德特雷斯,马库斯·福斯伯格、奥拉·弗里德、,彼得·甘米,托马斯·哈格伦(Thomas Hallgren)、帕斯卡·霍夫(Pascal Hof)、西蒙·胡贝尔(Simon Huber)、,Patrik Jansson、Kristofer Johannisson、,Antti-Juhani Kaijanaho,安德烈亚斯·洛夫,贾斯汀·梅纳斯(Justin Meiners)、肯特·梅恩(Kent Mein)、,乌尔夫·诺雷尔,Gabriele Paganelli、Michael Pellauer、,Fabian Ruch和阿内·兰塔(Aarne Ranta),2002年至2021年。

许可证

自由软件BSD 3条款许可证。

2.8.4之前的版本根据通用公共许可证(GPL公司).