2010-04-27 40 views
12

我正在寻找GCC源代码中的C语法,更具体地说是yacc/bison格式的语法。GCC源代码中的C语法

+6

这更像是一个陈述而不是问题? (我决定回答我的陈述作为一个问题,好玩!) – 2010-04-27 12:30:12

+0

你试过Google搜索吗?我搜索了“c yacc语法”,并提出了http://www.lysator.liu.se/c/ANSI-C-grammar-y.html以及其他许多点击。 – 2010-04-27 12:30:17

+0

@Neil,也许这不是Hurkai的意思,但GCC有一些C扩展,而通用的C语法不能完全适合它。 – 2010-04-27 12:41:05

回答

12

发现在Yacc规定的C语法在3.3 GCC版本的文件在 “C-parse.y”

+2

http://yaxx.googlecode.com/svn/branches/yaxx-proc/gcc-3.4.0/gcc/c-parse.y – 2013-10-09 05:05:49

7

版本4.3的GCC不包含明确写入的C语法。解析和语义分析是同时进行的,不需要将语法树作为独立的数据结构。

信息来源:我读过GCC源代码。

10

在当前GCC源代码中找不到C语法yacc/bison文件。它是在过去,在egcs fork之前完成的。我不能给你确切的版本和位置,但我可以告诉你,这应该是在2.x版本

GCC的当前版本有它自己的C解析器

+0

所以在GCC源代码中有一个语法规范,对吧?用GCC自己的C语法分析器进行解析。你知道我在哪个文件中找到它吗? – Haruki 2010-04-27 13:17:51

+0

@Hurkai @Hurkai你可以在评论中找到执行解析的子程序:-) – 2010-04-27 13:22:30

7

GCC的G ++从YACC切换(野牛)多年前的解析器(可能至少5年)。他们开始使用递归体裁解析器,因为C++在yacc中很困难。

将这个解析器用于C++数年之后,他们将C切换到使用递归下标进行解析。

你将不得不返回几个版本来定位bison格式的语法,但它在那里。你应该尝试谷歌代码搜索与

GCC yyparse

更新:谷歌代码搜索关闭在2012年

http://en.wikipedia.org/wiki/Google_Code_Search

老:http://yaxx.googlecode.com/svn/branches/yaxx-proc/gcc-3.4.0/gcc/c-parse.y

找到一个版本的gcc它有它,然后你应该能够在那里找到yacc/bison源文件。尽管如此,它会很老。

+6

我认为你的意思是_descent_,尽管解析器已经足够了_decent_ :) – 2010-04-29 08:06:40

4

GCC不使用生成的解析器;它的解析器是一个手写的递归下降解析器。

+1

它从4.6+版本开始是真的 – Jack 2013-01-22 01:28:52

+1

@Jack:有趣!你能指点我的任何文件吗?我知道他们从性能和(更重要的)可维护性原因(可能在3.4-4.2时间范围内的某处)(我没有精确记得)将*从生成的分析器*转换为新手写的*。什么原因切换回来,他们使用哪个分析器生成器? – 2013-01-22 01:34:21

0

的C语法可以在C-解析器注释中找到。在GCC源文件中输入c文件。 它不是yacc /野牛,因为它已经被说过了。