In diesem Zusammenhang, ist gleich ein neues Projekt entstanden.
Früher hat mir Tekisuto sehr gefallen. Auch, wenn es wenier als fertig (laut blackbird) war/ist. Ich habe deshalb auch Tekisuto als Vorbild für meine eigene Markup Lexer & Parser Toolsammlung genommen.
Es ist ein Regular Expression basierender Scanner, der einzeln anhand vorher genau definierter Regular Expressions den Text absucht.
Man hat die Möglichkeit, einer regex eine `handler` Funktion anzugeben, die dann automatisch aufgerufen wird und `Token`s zurückgeben sollte, jedoch nicht muss. (warum auch immer)
So hat man sehr viel Freiraum, was das Lexen angeht und doch sehr wenig schreibarbeit, da gute Regexen einen weiteren `handler` ersparen.
Als Handler sollte rein theoretisch jegliches ausführbares Objekt in Frage kommen. Wie das in der Praxis klappt, hab ich zZ nicht testen können. Funktionen sind jedoch vorzügliche `handler`

Regular Expressions werden in einem einfachen Dictionary gecached. In wie weit das Geschwindigkeitsvorteile bringt hab ich nicht ausgetestet.
Also im großen und ganzen gibt es eine Klasse, die von `globby.lexerlLexer` erbt. Diese definiert eine Liste mit Tupeln, namens `scan_re`. Nach dieser wird der Text durchgescannt und en entsprechender TokenStream erstellt.
Das ganze ansich ist sehr schnell. Im vergleich zu Tekisuto jedenfalls sehr viel schneller (ok, hab keine Benchmarks... nur Erfahrungswerte!)
Zur Zeit bin ich dabei verschiedene Markup-Sprachen zu implementieren, um Swächen von `globby` herauszufinden. (u.A., BBCode und MoinMoin-Markup)
Und zZ ist auch nur der Lexer wirklich gut benutzbar, eigentlich fertig. Der Parser ist zwar ansich funktionsfähig und nicht schlecht. Doch fehlt mir irgentetwas. Ich weiß nur nicht was :'(
So -- ich rede zu viel. Hier, das SVN-Repo: http://entes-world.org/trac/browser/globby
Erreichbar zum auschecken:
Code: Alles auswählen
svn co http://entes-world.org/svn/globby/
Ich bitte sehr um Kritik, Ideen und vor allem um Verbesserungsvorschläge.
Was gefällt euch, was gefällt euch nicht?
Könntet ihr euch vorstellen, `globby` später selber mal einzusetzen, wenn es fertig ist?
MfG EnTeQuAk
€dit: hab einfach ma ein wenig mehr text geschrieben...