使用Perl进行C代码预处理

8
我在Perl中负责C代码解析器。目前我需要对代码进行预处理。实现预处理似乎需要很多工作,因此我正在寻找一个脚本或库,可以允许对文件进行预处理。我发现以下几种可能性:
  1. Text::CPP
  2. Filter::CPP
这两个都需要cpp,而我在Windows机器上没有它。还有其他选择吗?

Text::CPP 表示它需要 一个可用的 C 编译器 - devnull
@devnull 这是一个专有编译器,似乎没有 -save-temps 选项... - Alex
在gcc和clang中,-E选项只是进行预处理。 - SheetJS
1
@Alex - 预处理通常是通用的,因此您可以将gcc插入其中,而不是使用专有编译器。 - DVK
我发现了一个基于Java的C预处理器:https://github.com/shevek/jcpp。我认为你需要让它从你的原始文件中生成新的源文件,才能让它有任何用处。 - DJG
显示剩余7条评论
1个回答

7

我不确定我理解您的需求,但您是正确的,自行实现可能并不明智。我最近也在寻找替代C预处理器。

Text::CPP模块只需要编译器来编译自身。如果您可以找到一个预编译版本,它应该可以为您工作。

由同一作者编写的JCPP Java C Preprocessor 可能可以工作。您可能需要进行外部处理,然后加载结果。

Filepp是一个较旧的Perl程序,声称具有CPP兼容性。有一个预编译的Windows二进制文件可供下载。

还有一个全新的Lua C-Preprocessor LCPP可能是您可以使用的东西。最好作为独立的应用程序,但您可能可以使用Inline::Lua

SWIG附带了自己的预处理器实现。我假设这将适用于Windows。

还有什么?Boost Wave Preprocessor可能效果很好,并且可用于Windows。MSVC编译器可以预处理到文件

不过,最简单,长期而言最好的解决方案可能是安装CPP。它作为GCC的一部分提供,您可以从CygwinMinGW获取。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接