Parsen einer Grammatik
Hallo, ich suche eine Möglichkeit eine Grammatik zu definieren und zu parsen. Im speziellen geht es darum, dass ich für C++ & C Code Dateien einen Styleguide definieren kann und diesen mit Hilfe eines Python Scriptes überprüfe. Was bietet Python an Möglichkeiten um eine Grammatik zu definieren bzw. zu verarbeiten. Reguläre Ausdrücke sind definitiv ein Ansatz, reichen aber nicht aus, um z.B. Blockstrukturen zu prüfen. Für mich relevant sind z.B. Funktions-, Namespace-, Methoden-, Variablenbenennung, Einrückung, Kommentierung, Präprozessoranweisungen, if-then-else / case Strukturen (z.B. kein If (i==0) oder ein case ohne default). Danke Phil
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Parser Module zur Definition einer eigenen Grammatik gibt es wie Sand am Meer. http://pyparsing.wikispaces.com/ wäre ein Anfang. - -aj Philipp Kraus wrote:
Hallo,
ich suche eine Möglichkeit eine Grammatik zu definieren und zu parsen. Im speziellen geht es darum, dass ich für C++ & C Code Dateien einen Styleguide definieren kann und diesen mit Hilfe eines Python Scriptes überprüfe. Was bietet Python an Möglichkeiten um eine Grammatik zu definieren bzw. zu verarbeiten. Reguläre Ausdrücke sind definitiv ein Ansatz, reichen aber nicht aus, um z.B. Blockstrukturen zu prüfen. Für mich relevant sind z.B. Funktions-, Namespace-, Methoden-, Variablenbenennung, Einrückung, Kommentierung, Präprozessoranweisungen, if-then-else / case Strukturen (z.B. kein If (i==0) oder ein case ohne default).
Danke
Phil
_______________________________________________ python-de maillist - python-de@python.org http://mail.python.org/mailman/listinfo/python-de
-----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (Darwin) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iQGUBAEBAgAGBQJQ4/Y6AAoJEADcfz7u4AZjWjQLwKQtSn4d81aToxSk4Z7bIaBA ZTswoAVcT2DiFFJfVEZIuBvtQ6wXamk24nBfyJYrcs4LPSL/jdE63paGZemr+dpT aB7DFuevNTv1p0976rJ7tSmHLmNoGXh4aF7vBT3Av/AypBTeY0cUxWmY9g5qEEic LI1fwsRq4iwmazO1pK9PtfoeIZ0UcUEfSORkuvkboU7IwebYTd7GsZ4nDRN9gBDc tE0nHpOyaGqK/1Mx1PWAzTSKlK1GSnCx4pTEisnjtl/X1ZeMxO7/oRO6MIjQTf5D AXdTJUnEa34oOwER4K2LLL00n3IU5uvyv4OGkee+NK4fC/Ik0jvgunR6QdxMTo53 zfG8brroDtsE/o65qFGIBNf3qTfkrSHRQWiRfpVJPxJqC2KCPzZ/CxBuEh381ocW 4B1uWKdraZyUzDCK/bev2jeMy2NPfb9D05RGxvxV/Ag8lnA9lTkE4WoEC2KCfeF4 lwTULYJO0HmZF0Et2YsNa0rwX9hpfCk= =SZbx -----END PGP SIGNATURE-----
Zitat von Philipp Kraus <philipp.kraus@flashpixx.de>:
ich suche eine Möglichkeit eine Grammatik zu definieren und zu parsen.
Ich empfehle ANTLR: http://www.antlr.org/ http://www.antlr.org/api/Python/index.html http://www.antlr.org/wiki/display/ANTLR3/Python+runtime Ciao, Martin
Am 2. Januar 2013 09:50 schrieb Philipp Kraus <philipp.kraus@flashpixx.de>:
Hallo,
ich suche eine Möglichkeit eine Grammatik zu definieren und zu parsen. Im speziellen geht es darum, dass ich für C++ & C Code Dateien einen Styleguide definieren kann und diesen mit Hilfe eines Python Scriptes überprüfe. Was bietet Python an Möglichkeiten um eine Grammatik zu definieren bzw. zu verarbeiten. Reguläre Ausdrücke sind definitiv ein Ansatz, reichen aber nicht aus, um z.B. Blockstrukturen zu prüfen. Für mich relevant sind z.B. Funktions-, Namespace-, Methoden-, Variablenbenennung, Einrückung, Kommentierung, Präprozessoranweisungen, if-then-else / case Strukturen (z.B. kein If (i==0) oder ein case ohne default).
Ich rate Dir davon ab, C oder C++ selbst zu parsen. Beide Sprachen sind kontextsensitiv, komplex und ungeheuer aufwendig zu parsen. Nutze clang und dessen Python-Bindings. Obwohl diese unvollständig sind, wirst Du damit wahrscheinlich schneller ans Ziel kommen als mit einer eigenen Grammatik. Oder versuche, auf cppcheck aufzubauen, und dessen Quelltext um Deine eigenen Prüfungen zu erweitern.
participants (4)
-
Andreas Jung -
martin@v.loewis.de -
Philipp Kraus -
Sebastian Wiesner