如何使用haskell从c ++头文件中提取函数?

时间:2011-05-09 18:32:13

标签: c++ parsing haskell header

我需要从带有haskell的c ++头文件中获取所有函数(不仅仅是方法函数),我需要输入参数,返回类型也是方法名。

我怎么能意识到这一点? olny与正则表达式?或者我必须写一个完整的解析器(自下而上或自上而下)?

3 个答案:

答案 0 :(得分:5)

要从头文件中提取所有函数声明,您需要一个解析器,而不是一个正则表达式。 C ++的解析器很难得到,但幸运的是我们有一些:

使用其中任何一个,您都可以健壮地处理C或C ++标头,并将声明提取为Haskell数据类型,以便进一步处理。

答案 1 :(得分:1)

如果您决定解析它们,我建议您使用Parsec并尝试查看其他人是否已经完成此操作。

但是,已经有很多C ++解析器 - 我建议你使用其中一个并与其输出接口。

答案 2 :(得分:0)

我编写了一个名为cgen的程序,它生成C语言库的C绑定,并解析C ++标头(使用Parsec)并收集您描述的函数数据。它远非成为一个完整的C ++解析器,但它可以解析一些简单的头文件 - 比如example

但它不是一个库,所以你可能需要调整代码以满足你的需求(如果你做了任何改进,请给我发一个补丁)。您可以在github找到相关代码,尤其是HeaderParser和HeaderData模块。