预处理C99有向图

时间:2015-07-28 14:08:09

标签: c c-preprocessor c99 digraphs

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

例如,给出以下源代码:

%:define N 5

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

使用GCC的预处理器选项(-E,加上-dD以获得良好的衡量标准)足以摆脱%:有向图(其被评估并重新打印为在这个例子中#define,但不是其他人。

Clang的行为方式相同,所以它没有多大帮助。

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

1 个答案:

答案 0 :(得分:1)

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

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