Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
Parser fuer Dokuwiki-Markup
Plan
Einen Parser fuer Dokuwiki-Markupup nach XML.
Fernziel ist ein Toolkit, um Wikimarkups ueber ein Zwischenformat ineinander ueberfuehren zu koennen, so wie netpbm das fuer Pixelformate kann.
Ansaetze
1. s///
Ersetze '//
' durch '<it>
' bzw. jedes 2. '' eben durch '
</it>'.
Failt bei der ersten URL:
http://www… →
http:<it>www…
</code>
==== 2. Lex & Yacc ====
Hier in der Variante der Perlmodule Parse::Lex und Parse::Yacc.
Besondere Schmankerl:
* Wikicode ist natuerlich keine Programmiersprache:
* zwischen relevanten Tags fliegt viel Zeug rum, das fuer die Auszeichnung irrelvant, aber tatsaechlich wichtig ist: der Inhalt. ;-)
* die Auszeichnungstoken genuegen keiner einheitlichen Syntax z.B.:
<code>
<code> | project
</code>
* innerhalb bestimmter Tags verhalten sich Auszeichnungstoken nochmal anders (s.o.)
* manche Token gelten nur am Zeilenanfang:
<code>
' *' ' 1'
</code>
* newline ( 0x0a ) ist kein any-char sondern braucht ne Extra-Aufforderung:
<code>
(\n|.)
</code>
* whitespace ( 0x20 ) ist auch kein any-char. die ueblichen RE-Tricks ziehen nicht. Man muss es im Lexer einstellen:
<code>
$lexer→skip('');
</code>