gpt4 book ai didi

c - 生成 C 声明

转载 作者:行者123 更新时间:2023-12-02 00:51:32 25 4
gpt4 key购买 nike

关于如何解析 C 声明的主题已经写了很多。

我需要做相反的事情:获取一个类型的树表示,连同变量名,并打印出相应的声明,就像它会出现在 C 源代码中一样。

有没有人以可用的形式写下执行此操作的算法?

(我试着查看 https://github.com/ridiculousfish/cdecl-blocks,它似乎必须包含这样的东西,但我已经能够在其中找到与它的功能相关的所有代码除了生成 C声明。)

最佳答案

Eli Bendersky 的 Python 库 pycparser有一个示例,将 C 代码解析为 AST 表示,并漂亮地打印它,再次将其转换为 C 代码。

我想到的具体例子can be found here ,我认为您感兴趣的部分是:

def _zz_test_translate():
# internal use
src = r'''
void f(char * restrict joe){}
int main(void)
{
unsigned int long k = 4;
int p = - - k;
return 0;
}
'''
parser = c_parser.CParser()
ast = parser.parse(src)
ast.show()
generator = c_generator.CGenerator()

print(generator.visit(ast))

那么这个例子的作用是从字符串 (src) 解析 C -> AST。然后它漂亮地打印出 AST (ast.show())。然后它将 AST 转换为 C 源代码并打印出来。

此示例使用c_generator 模块which can be found here .它是一个具有 visit 方法的类,该方法遍历 AST 并吐出 C 代码。

我用它来检测 C 代码,例如在函数调用或返回点的开头插入代码。应该可以通过编程方式定义 struct-decls,然后将它们转换为 C。

从您的描述来看,这听起来很有用?要么直接:来自 AST 格式 -> C 源,要么作为您自己工作的灵感来源。

您能否提供一些您希望转换为 C 代码的 struct-decl 示例?

关于c - 生成 C 声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57210279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com