[PYTHON] Formater la source du langage C avec pycparser

Nettoyez les sources de langage C sales.

Code sale

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 pycparser

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

Façonner

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;
}


$ 

Utilisation

Recommended Posts

Formater la source du langage C avec pycparser
En forme de conteneur réalisé avec C # 1
Débogage C / C ++ avec gdb
Format SQL avec sqlparse
Utilisation de X11 avec ubuntu18.04 (langage C)
Essayez Google Mock avec C
Formater json avec Vim (avec python)
Format de chaîne avec l'opérateur Python%
Résoudre ABC163 A ~ C avec Python
Appeler C depuis Python avec DragonFFI
Installez Python à partir des sources avec Ansible
Ecriture du langage C avec Sympy (métaprogrammation)
Opération et conversion de format vectoriel avec arcpy
Résoudre ABC168 A ~ C avec Python
Augmentez la visibilité de la source avec des conseils de type
Résolu AtCoder ABC 114 C-755 avec Python3
Résoudre ABC162 A ~ C avec Python
Résoudre ABC167 A ~ C avec Python
Résoudre ABC158 A ~ C avec Python
Segfo avec 16 caractères en langage C
Fusionner les données au format JSON avec Ansible
Accélérer la compilation C / C ++ avec ccache
[Python] Formater quand to_csv avec des pandas