Python Quellcode Parsen, Syntaxcheck

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
sabram
User
Beiträge: 28
Registriert: Mittwoch 5. Januar 2011, 13:42

Hallihallo,

ich schreibe gerade an einem kleinen "Editorframe" um mich mit Python etwas genauer vertraut zu machen.
Ich möchte in einem wxTextCTRl das dem Styletyp eines Pythonwin Fensters hat, einen Syntaxcheck durchführen.

Der Syntaxcheck soll vorersteinmal nur falsche Einrückungen verbieten. Ich erlaube momentan noch Mischungen aus Tabs und Spaces wobei ich die Spaces direkt in 4 Tabs umwandel.
Nun möchte ich allerdings testen ob irgendwo noch falsche Einrückungen im Code zu finden sind. ( 3 leerzeichen,7 leerzeichen usw ).

Wie könnte ich das wohl am besten angehen um das Modul erweiterbar zu machen?

Meine bisherige Idee war mit dem tokenizer zu arbeiten, wobei ich diesen noch nicht benutzt habe und keine Ahnung habe wie die Tokens genau definiert sind ( 4 spaces ein token?, 8 spaces ein token? )

Vielleicht habt ihr ein paar Ideen für mich.

Danke und Grüße!
BlackJack

@sabram: Du wandelst Spaces in vier Tabs um!? :shock:

Nur für die Einrückung könntest Du Dir anschauen was das `tabnanny`-Modul aus der Standardbibliothek macht. Ansonsten gibt es die `compile()`-Funktion, die ja gezwungenermassen auch eine Syntax-Überprüfung durchführt und entsprechende Ausnahmen auslöst.
sabram
User
Beiträge: 28
Registriert: Mittwoch 5. Januar 2011, 13:42

ich wandel natürlich einen tab in 4 spaces um ... :/

tabnanny schau ich mir gerade an...
allerdings würde ich lieber in die tokenizer richtung gehen.
BlackJack

@sabram: Ohne es mir genauer angeschaut zu haben würde ich erwarten, dass nach dem Tokenizer `INDENT`- und `DEDENT`-Token bestehen. Und zwar pro Ebene -- egal wieviele Leerzeichen oder Tabs das im Quelltext mal waren. Diese Information interessiert den Compiler an der Stelle ja überhaupt nicht mehr.
Antworten