[PYTHON] Formatieren Sie die Sprachquelle C mit pycparser

Bereinigen Sie verschmutzte C-Sprachquellen.

Schmutziger Code

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

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

Gestaltung

Da pycparser #include und Kommentare nicht unterstützt,

Lauf


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


$ 

Verwenden

Recommended Posts

Formatieren Sie die Sprachquelle C mit pycparser
Behälterartig hergestellt mit C # 1
C / C ++ - Debugging mit gdb
SQL-Format mit sqlparse
Verwenden von X11 mit ubuntu18.04 (C-Sprache)
Versuchen Sie Google Mock mit C.
Formatieren Sie json mit Vim (mit Python)
String-Format mit Python% -Operator
Löse ABC163 A ~ C mit Python
Rufen Sie C von Python mit DragonFFI auf
Installieren Sie Python von der Quelle mit Ansible
Schreiben der C-Sprache mit Sympy (Metaprogrammierung)
Vektorformatoperation & Konvertierung mit arcpy
Löse ABC168 A ~ C mit Python
Erhöhen Sie die Sichtbarkeit der Quelle mit Typhinweisen
AtCoder ABC 114 C-755 mit Python3 gelöst
Löse ABC162 A ~ C mit Python
Löse ABC167 A ~ C mit Python
Löse ABC158 A ~ C mit Python
Segfo mit 16 Zeichen in C-Sprache
Führen Sie Daten im JSON-Format mit Ansible zusammen
Beschleunigen Sie die C / C ++ - Kompilierung mit ccache
[Python] Format, wenn to_csv mit Pandas