我想解析C++代碼,並創建一個AST。我想要做的是提取一些簡單的反射信息(類名稱,成員變量及其類型等)。我不需要編譯代碼或生成二進制文件。我正在尋找最簡單的方法來做到這一點。理想情況下,我想要一個小的解析器,在一個靜態庫中,沒有依賴關係。如何解析C++來創建AST?
我一直在環顧四周,它似乎是一個野牛分析器可能能夠爲我做到這一點。我試圖找到一個開源的解析器,但所有的谷歌會給我的是C++的Bison包裝器,而不是C++的Bison解析器。鍵入「C++解析器」也會失敗,通過爲C++編寫的其他所有解析器提供結果。
有沒有一個開源項目能夠滿足我的需求?
鐺前端。 C++的語法不是上下文無關的;解析和語義分析是相連的,你確實需要大部分的編譯器。 –
沒有「小C++解析器」這樣的東西。語言是巨大的。 –
@BenVoigt:實際上,存在各種C++語法,用於以無上下文的方式解析C++(請參閱我們的使用GLR解析器的工具)。你會得到含義不止一個句法解釋的歧義節點,但這意味着你可以解析格式良好的C++文件,而不必具有所有的定義。 (預處理器仍然有麻煩,但我們也有辦法處理這個問題)。 –