簡體   English   中英

如何使用haskell從c ++頭文件中提取函數?

[英]how to extract the functions from a c++ header file with haskell?

我需要從具有haskell的c ++頭文件中獲取所有函數(不是僅方法函數),我需要輸入參數和返回類型以及方法名稱。

我怎么能意識到這一點? 正規與正則表達式? 還是我必須寫一個完整的解析器(自下而上或自上而下)?

要從頭文件中提取所有函數聲明,您將需要一個解析器,而不是正則表達式。 C ++的解析器很難獲得,但是幸運的是我們有一些:

使用這兩種方法,您將能夠穩健地處理C或C ++頭文件,並提取聲明為Haskell數據類型,以進行進一步處理。

如果您決定解析它們,我建議您使用Parsec並嘗試查看是否有人已經這樣做。

但是,已經有很多C ++解析器-我建議您使用其中之一並與其輸出接口。

我編寫了一個名為cgen的程序,該程序生成與C ++庫的C綁定,並解析C ++頭文件(使用Parsec)並按您的描述收集函數數據。 它離成為一個完整的C ++解析器還很可笑,但它可以解析一些簡單的頭文件,例如本

但是,它不是一個庫,因此您可能需要調整代碼以適合您的需求(如果進行了任何改進,請給我發送補丁)。 您可以在github上找到相關的代碼,特別是模塊HeaderParser和HeaderData。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM