main.c
#include <stdio.h>
int main
()
{ int // how to
a=0; // comment ?
if(a)printf("hello world\n"
) ;else{ printf /* is this ?*/
("good by\n"); } return
0;}
Verwenden Sie pycparser, einen Parser in C-Sprache.
c2c.py
#!/usr/bin/env python
import sys
from pycparser import parse_file, c_parser, c_generator, c_ast
def main():
text = ''.join(sys.stdin.readlines()) #Lesen
parser = c_parser.CParser() #Parser
ast = parser.parse(text, filename='<none>') #Zu analysieren
generator = c_generator.CGenerator() #Generator
print(generator.visit(ast)) #Exportieren Sie einfach das, was Sie analysiert haben
if __name__ =='__main__':
main()
Referenz
Da pycparser #include und Kommentare nicht unterstützt,
gcc -E
Dann formenLauf
$ cat main.c | grep -v "#include" | gcc -E - | python c2c.py
int main()
{
int a = 0;
if (a)
printf("hello world\n");
else
{
printf("good by\n");
}
return 0;
}
$
Recommended Posts