2012-08-06 67 views
7

我正在開發一個C++解析器(一個IDE),所以現在想了解詳細的C++語法。 雖然我已經找到一個很好的語法源在http://www.nongnu.org/hcb/,我無法理解它的某些部分 - ,特別是其中的「真實」的語言結構對應於不同的生產。C++ BNF語法與分析/匹配的例子

所以我在尋找一個C/C++ BNF語法指南與適應不同的生產/規則的代碼示例。有沒有?

+0

+1鏈接。我相信Eclipse是一個開源的IDE。看看它的源代碼怎麼樣。 – iammilind 2012-08-06 08:37:53

+0

@BartKiers我對C和C++都很常見的構造感興趣,比如聲明器。 – intelfx 2012-08-06 08:42:28

+0

@intelfx,啊,好的,我以爲你只對C++感興趣。 – 2012-08-06 08:42:58

回答

7

超鏈接(自稱)的語法不一定是一個可以在其上方便地構建一個解析器。這取決於解析引擎的性質,以及您關心的C和C++的真正方言(ANSI?GNU?C99?C++ 11?MS?)。

建設工作的C++解析器是真的辛苦。出於某些原因,請參閱我對Why C++ cannot be parsed with a LR(1) parser?的回答。如果你想要一個「好」的解析器,我建議你使用一個現有的解析器。值得一看的可能是Elsa,因爲它是開源的。

+0

好吧,這不是從頭開始 - 已經有一個解析器(IDE是KDevelop 4),我想稍微改進它。解析器(將成爲)C++ 11。 但是,謝謝你的鏈接;我會看看它。 – intelfx 2012-08-10 02:36:29

+0

...不幸的是,Elsa不是C++ 11。 – intelfx 2012-08-10 03:33:59

+0

而且,C++ 11解析器(包括類型檢查)實際上比C++ 98解析器(相應的類型檢查)要多得多。 – 2013-03-09 11:04:56