2010-04-27 74 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 /野牛,因爲它已經被說過了。