0

有没有办法“预处理”C99 风格的有向图以获得 C 文件(或.i预处理的源),使得生成的文件不包含任何有向图?

例如,给定以下源代码:

%:define N 5

int main() <%
  int a<:N:> = <%2,1,0%>;
  char *s = "a<:b";
  return a<:4:>;
%>

使用 GCC 的预处理器选项 ( -E, plus -dDfor good measure) 足以摆脱%:digraph (在这个例子中被评估和重新打印#define),但不是其他的。

Clang 的行为方式相同,因此没有多大帮助。

据我了解,简单的正则表达式替换不起作用,因为它们最终会替换字符串中的出现。

4

1 回答 1

1

据我所知,没有标准工具可以进行这种转换。特别是,预处理器不会替换有向图,因为(与三联图不同)有向图只是普通标记,恰好与其他普通标记具有相同的含义。

flex从 C 的现有 flex 定义开始,使用 编写这样的处理器相对简单。

于 2015-07-28T17:51:59.360 回答