Seite 1 von 1
String suchen???
Verfasst: Sonntag 23. November 2008, 14:33
von Andyh
Hallo
Ich dachte das Problem lasse ich erst noch ruhen, jetzt plagt es mich aber schon seit fast einer Woche.
Da dies meiner meinugn nach nicht viel mit Tkinter zu tuhen hat schreibe ich es mal hier rein.
Ich schreibe ja gerade einen Editor für Python mit Syntaxhighlithing.
Mein Problem ist das ich die Stings gerne einfärben möchte.
Wenn man immer alles schön braf macht und nicht kompliziertes schreibt ist das ja recht einfach z.B. print "hallo"
jetzt habe ich das Problem das es ja unzählige kombinationen gibt z.B:
Code: Alles auswählen
print "Hallo" + ' du'
print "hallo ' du"
print "f ' f ' f "
ich mache das bis jetzt mit re.findall(), das ich das nicht so lassen kann ist mir klar.
hier mal der code:
http://paste.pocoo.org/show/92221/
Ich muss wie schon an andere Stelle angesprochen den Syntax erkennen um sinnvoll arbeiten zu können.
Wie würdet ihr sowas lösen?
(Muss kein fertiger code sein(währe zwar nicht schlecht) es reicht hoffentlich wenn ihr mir eine Sinnvolle Methode zeigen würdet)
Gruß
Andyh
Verfasst: Sonntag 23. November 2008, 14:49
von Leonidas
Dazu benutzt man Lexer, siehe etwa den
Python Lexer aus Pygments. Dieser entscheidet, was der vorliegende String so enthält und man kann dann die entsprechenden Tokens einfärben.
Verfasst: Sonntag 23. November 2008, 14:59
von Andyh
Hallo
Danke für die Schnelle Antwort ich hätte schreiben sollen das ich soetwas eigentlich nicht nehmen will.
Der Weg ist doch das Ziel, heist es doch so schön
Gruß
Andyh
Verfasst: Sonntag 23. November 2008, 15:34
von Leonidas
Andyh hat geschrieben:Danke für die Schnelle Antwort ich hätte schreiben sollen das ich soetwas eigentlich nicht nehmen will.
Dennoch nutzt man für soetwas Lexer, also wenn du das Highlighting richtig machen willst, nimmst du entweder den Pygments-Lexer oder du schreibst selbst einen.
Verfasst: Sonntag 23. November 2008, 15:45
von Andyh
Hallo
Gut verstanden CHEF!
Läuft Pygments auch unter WIN?
Ich habe es bis jetzt noch nicht zum laufen gebracht.
Gruß
Andyh
Verfasst: Sonntag 23. November 2008, 16:36
von derdon
Pygments ist unabhängig vom verwendeten Betriebssystem. Wie hast du denn bisher versucht, es zu installieren? Hast du dir
die Installationsanleitung angeguckt? Unter Windows würde ich [wiki=Easy_Install]easy_install[/wiki] nehmen, ist da die einfachste Variante.
Verfasst: Sonntag 23. November 2008, 16:41
von Andyh
Hallo
hat geklapt nach einen Neustart.
Gruß
Andyh
Verfasst: Sonntag 23. November 2008, 18:09
von Andyh
Hallo
Gut ich habe jetzt kapituliert!!!
Ich habe einfach alle benötigten Module von idle in meinen Programmordner gepackt und habe sie umbenannt.
Jetzt gehts und zwar gut, nur habe ich es nicht selber gemacht.
Schade ich hatte schon keinen schlechten ansatz.
Trauriger Gruß
Andyh
Verfasst: Sonntag 23. November 2008, 18:11
von Leonidas
Wovon redest du? Das scheint ja irgendwie gar nicht in den Kontext des Threads zu passen? Welche Module? Die von Pygments? Die scheinen doch laut deinem Posting zu funktionieren. Die von IDLE? Was hätte das damit zu tun? Welcher Ansatz? Reguläre Ausdrücke? Also die sind definitiv kein brauchbarer Ansatz dafür.
Verfasst: Sonntag 23. November 2008, 18:23
von Andyh
Hallo
Ja das past eigentlich nicht in den Thread, aber mit der Methode finde ich ja auch die strings.
Idle hat ja Syntaxhighlithing und das habe ich eingebaut, halt nur das ich jetzt nicht mehr die Module vom Idle-Ordner benutze sondern im meinem Eigenen Ordner.
Gruß
Andyh
Verfasst: Sonntag 23. November 2008, 18:25
von DasIch
Andyh hat geschrieben:Schade ich hatte schon keinen schlechten ansatz.
Schade dass ich dich in dem Punkt enttäuschen muss. Wenn ein Block(außer bei einer Klasse) so lang ist dass er nicht mehr komplett auf den Bildschirm passt dann ist der Code schlecht.
Desweiteren sieht dein Code wirklich nicht wie Code aus von dem man in ein paar Wochen noch versteht was er eigentlich tun soll.
Verfasst: Sonntag 23. November 2008, 18:34
von Andyh
Hallo
Das ist ja nur der Code zum Stringsuchen und der ist schlecht, aber beim experimentieren mache ich doch nichts schönes.
Der rest ist schon besser, aber auch nicht schön, aber der anstzt dabei wahr nicht schlecht.
Ich hatte schon alles:
-ein Config system um die Einstellungen aus einer txt zu lesen
-Dialoge zum einstellen des Syntaxhighlithing
-Der Benutzer wurde zu PEP8 gezwungen wenn er Farbe sehen wollte
usw.
Gruß
Andyh
Verfasst: Sonntag 23. November 2008, 18:36
von derdon
schade nur, dass dich keiner zu PEP8 zwingt

Verfasst: Sonntag 23. November 2008, 18:42
von Andyh
Hallo
Gerade deswegen habe ich es eingebaut, nur wird da jetzt nichts mehr draus.
Naja dann lerne ich es eben nie
Achso so siehts aus:
Startdialog:
Gerade beim Ausführen:
Gruß
Andyh
Verfasst: Sonntag 23. November 2008, 18:47
von Leonidas
Andyh hat geschrieben:Gerade deswegen habe ich es eingebaut, nur wird da jetzt nichts mehr draus.
Naja dann lerne ich es eben nie
Du kannst den Lexer doch auch selbst schreiben. Du hast gefragt wie man das macht und ich habe gemeint, dass man das Problem durch Lexer löst. Daraufhin hast du erst Pygments installiert und dann sofort danach aufgegeben. Könnte man erfahren wieso? Den Lexer aus Pygments zu verwenden ist die einfachere Lösung, einen Lexer selbst zu schreiben kompilierter (aber durchaus machbar, jedoch nutzen die meisten lieber Tools wie flex oder in Python eben PLY um Lexer zu bauen) aber nicht unmöglich.
Verfasst: Sonntag 23. November 2008, 18:47
von jonas
Hast du auch schon Rechtschreibfehler Highlighting eingebaut

Verfasst: Sonntag 23. November 2008, 18:55
von Andyh
Hallo
@Leonidas
An Pygments werde ich noch weiter machen, das aufgeben hat sich auf mein eigenes Projekt bezogen.
Pygments werde ich aufjeden fall zum exportieren des Codes verwenden, wenn man aus Idle rauskopiert ist das alles ja Langweilig schwarz.
@jonas
Ich stehe zu meiner 4(note) in Deutsch
Gruß
Andyh