以编程方式缩进自动生成的C代码

2024-06-16 10:41:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个自动生成代码的python。 下面是一个小片段:

source = open("auto_comps.c", "w")    
filter_proto = """bool filter_%s_%s(char *record, 
                  size_t field_offset, 
                  uint64_t value, 
                  uint64_t delta)"""
...
for op in 'eq', 'ne', 'lt', 'gt', 'le', 'ge':
    for atype in 'uint8_t', 'uint16_t', 'uint32_t', 'uint64_t':
        source.write(filter_proto%(op,atype))

我不想在脚本中显式地为C代码创建缩进。 目前我让脚本用haywire缩进生成代码 然后使用IDE选择整个代码并从那里缩进。在

但是,结果是每次必须手动执行此过程 调整脚本。此外,另一个开发商可能没有奢侈的 一个IDE,看着自动生成的C代码可能会发疯。在

以编程的方式,我可以从代码中缩进 在我关闭源文件之前?在


Tags: 代码in脚本sourceforautoopenfilter
3条回答

瓦伊巴夫·巴杰帕伊

源代码的缩进比它最初出现的要复杂得多。实际上,为了正确地缩进源代码,您需要有效地构建编译器的前端。请查看this article以获得对此的特殊视图。在

关键是,你真的,真的想用别人创造的工具。以下是一些:

除此之外,我有在C和Java中使用AsStyle的个人经验,我很乐意推荐它。在

顺便说一句,重新声明可能需要您识别c令牌并对其采取行动。您可能会从reindent.py开始,这是python的,但是将标记改为C。我想,这至少可以让您意识到任务的难度!。:)

另一个选择是安装一个类似astyle的程序,并在写入文件之前运行生成的代码。那样比较容易。在

最简单的解决方案可能是通过独立的压头(如GNU indent)运行生成的代码。在

相关问题 更多 >