有没有办法预处理" 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的行为方式相同,所以它没有多大帮助。
据我了解,简单的正则表达式替换不起作用,因为它们最终会替换字符串中的出现。
答案 0 :(得分:1)
据我所知,没有标准工具可以进行这种转换。特别是,预处理器不替换有向图,因为(与三字母不同)有向图只是普通的令牌,恰好与其他普通令牌相同。
使用flex
编写这样的处理器相对简单,从C的现有flex定义开始。