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;}
Utilisez l'analyseur de langage C pycparser.
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()) #Lis
parser = c_parser.CParser() #Analyseur
ast = parser.parse(text, filename='<none>') #Pour analyser
generator = c_generator.CGenerator() #Générateur
print(generator.visit(ast)) #Exportez simplement ce que vous avez analysé
if __name__ =='__main__':
main()
référence
Puisque pycparser ne prend pas en charge #include et les commentaires,
--Supprimer #include avec grep
--Supprimer les commentaires avec gcc -E
Puis façonner
Courir
$ 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