Globby -- Markup Scanner & Parser -- Suche noch Ideen!

Du hast eine Idee für ein Projekt?
Antworten
EnTeQuAk
User
Beiträge: 986
Registriert: Freitag 21. Juli 2006, 15:03
Wohnort: Berlin
Kontaktdaten:

Wie schon ab und zu hier im Forum zu sehen war, arbeite ich an einem neuen eigenen Lexer für `daucms`. (siehe meine Signatur)

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/
Als einziges komplettes Beispiel der Benutzung kann ich nur `dautext` anbieten. Die anderen sollen aber so bald wie möglich auch funktionsfähig werden.


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...
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Wie sieht es inzwischen mit deinem Markup aus???

Ich möchte nämlich in PyLucid mein tinyTextile langsam loswerden ;) Aber das ist nicht mein Hauptproblem...

z.Z. weiß ich noch nicht wie ich Pygments als Plugin realisieren kann.

Ich möchte nämlich Pygments erstmal nicht direkt mit PyLucid mitliefern, sondern das über ein externes Plugin zum nachinstallieren anbieten.

Nun muß sich aber Pygments in den Markup Parser einhacken um Sourcecode direkt in der Seite darzustellen.

Wobei, vielleicht sollte ich es nicht so kompliziert machen. Denn außer Pygments kommt eh kein andere Hightligter in Frage ;)
Also könnte man es ganz einfach machen:
Entweder Pygments kann man importieren oder nicht und fertig...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
EnTeQuAk
User
Beiträge: 986
Registriert: Freitag 21. Juli 2006, 15:03
Wohnort: Berlin
Kontaktdaten:

Ich komme immer weiter.

Wie gesagt, das ganze (globby) ist kein ganzer parser, noch ein kompletter Lexer. Es sind nur Module, die eine einfache implementierung von Markupsprachen (und einigem anderen) ermöglichen.

Globby ansich ist zur Zeit in der Phase, wo es ausprobiert wird.

Wenn du magst, die Sourcen liegen hier: http://svn.webshox.org/globby/

Leider fehlt mir die Zeit, eine ordentliche Dokumentation zu schreiben.

MfG EnTeQuAk
Antworten