【发布时间】:2020-04-23 14:14:19
【问题描述】:
我需要编写一个 Python 程序来解析 C 源代码文件并在每个函数声明的末尾添加一个隐藏参数。
更准确地说,我需要更改如下内容:
void f(int a, int b, int c) { ... }
变成这样:
void f(int a, int b, int c, int hiddenArg) { ... }
显然,我还需要编辑从其他函数对该函数的所有调用。
我需要使用pycparser 来执行此操作,但是一旦我阅读了 AST,我就无法找出编辑 AST 的正确方法。有没有我想念的正确方法(或任何方法)?
【问题讨论】:
-
"each" 函数声明?这不会破坏很多需要特定类型签名的函数,例如
main? -
@JosephSible-ReinstateMonica 我只想对 OpenCL 内核文件 (*.cl) 中的辅助函数执行此操作。什么都不会破坏,在我的情况下,这是由于其他原因而得到保证的。
-
不清楚,只是声明而不是实现或调用应该更新?
-
@Ôrel 正如我所指出的,我最终需要更改呼叫,但这不是目前的主要问题。我只需要知道是否有适当的方法来编辑
pycparser构造的 AST 节点。 -
如果你总是使用相同的额外参数,也许你可以覆盖
visit_FuncCall