BNF语法的仓库?

26

有没有一个我可以找到流行语言的巴克斯-诺尔范式(Backus–Naur Form)或BNF语法的地方?每当我搜索时,我发现很少,但我想它们一定被发布在某个地方。我最感兴趣的是看到Objective-C和可能是MySQL的其中一个。

5个回答

19

您需要搜索用于创建语法的工具:"lex/yacc grammar", "antlr grammar" "railroad diagram"

http://www.antlr3.org/grammar/list.html

这里有一些语法文件

objective-c

python

javascript

Ruby

Ruby是一种面向对象、动态的编程语言。它具有简洁优美的语法和强大的代码可读性,被广泛应用于Web开发、系统管理等领域。以上链接提供了Ruby解析器(yacc)的文档。

6

6

值得一提的是,MySQL语法文件(mysql-server/sql/sql_yacc.y)是开源的,并且可以在launchpad.net上进行浏览(尽管速度有点慢,当我试图打开特定文件时出现了错误)。

此外,整个MySQL Server源代码的快照可以从dev.mysql.com下载。


2
重用MySQL服务器使用的语法的问题在于它依赖于词法分析器生成的标记。该词法分析器有大约115个成员,既不易于使用也不易于替换。 - dvogel

3

据我所知,BNF语法与yacc/bison所需的输入略有不同,这可能会非常烦人 :) 如果您打算将这些文件提供给解析器生成器,请查找适当格式的文件。我记得曾经在Java、JavaScript和C++等语言中看到过这样的文件。可能是作为Eclipse、Firefox和GCC的一部分,但我不能确定。我认为,通过找到使用该语言的开源项目,您可以找到几乎任何解析器输入文件。


2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接