2013-03-21 53 views
2

我在寫我自己的腳本語言,我需要一個軟件工具,它生成解析我的語言C++代碼。我需要一個詞法分析器和一個生成C++代碼的分析器生成器。對我來說,能夠生成Visual C++ 2010項目也是很好的選擇。建議?C++的語法分析生成

+0

你的語言有多複雜?你有沒有考慮過使用[Boost.Spirit](http://www.boost.org/doc/libs/release/libs/spirit/doc/html/index.html)? – 2013-03-21 08:09:07

+0

我的語言不是很複雜......我需要做變量分配,for和while while循環,if語句,表達式計算,然後解析一些分析器必須識別的用於在TCP/IP連接上生成字符串的特殊命令... – salvo 2013-03-21 08:11:54

回答

6

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

爲C/C++:http://epaperpress.com/lexandyacc/

或者看看:Boost.Spirit:

「精神是一組C++的如域中實現解析和輸出生成 庫使用 表達式模板和模板元編程的特定嵌入式語言(DSEL)。「

豆你真的需要新的語言?也許使用Lua,Python等衆所周知的更好?

+0

我需要一種新的語言,因爲我還必須解析一些特殊的腳本命令。對於這些命令中的每一個,解析器都必須構建一個適當的字符串來寫入套接字。 – salvo 2013-03-21 08:16:29

0

你有兩個選擇:你是否通過創建AST(抽象語法樹)創建自己的解析器,那麼這將是一個很好的鍛鍊你,但它是很長時間的努力來實現。或者你可以使用開源解決方案,如ANTLR解析器生成器,它具有用於C/C++的語法以及預處理器。我從來沒有使用過它,所以我不能說C++的解析將會如何完整。然後,如果你是在趕時間,你想創造一個良好的解析器,你最好使用第二個解決方案

1

這是一個老問題,但仍可能是相關的:因爲我是不滿意現有的方案,我最近寫了一模板C++解析器生成器,它不需要任何外部工具(包括頭文件並直接在C++源文件中定義語法)。它使用可讀的PEG語法,因此不需要單獨的lexing步驟。您可以在Github上查看。