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

Vai*_*pai 1 python

我有一个自动生成C代码的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))
Run Code Online (Sandbox Code Playgroud)

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

但是,因此每次我必须调整脚本时,我必须手动执行此过程.此外,另一个开发人员可能没有拥有IDE的奢侈品,可能会疯狂地看着自动生成的C代码.

有没有一种方法可以在关闭源文件之前以编程方式从脚本中缩进代码?

bri*_*ice 6

Vaibhav Bajpai,

源代码缩进比首次出现复杂得多.实际上,要正确缩进源代码,您需要有效地构建编译器的前端.看一下这篇文章的特殊观点.

关键是,你真的,真的想要使用别人创建的工具.这里有一些:

其中,我有使用C和Java的AsStyle的个人经验,并乐意推荐它.