Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

project:parse_dokuwiki

Dies ist eine alte Version des Dokuments!


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...

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> | {{...}}
	
  • innerhalb bestimmter Tags verhalten sich Auszeichnungstoken nochmal anders (s.o.)
  • manche Token gelten nur am Zeilenanfang:
	'  *' '  1'
	
  • newline ( 0x0a ) ist kein any-char sondern braucht ne Extra-Aufforderung:
		(\n|.) 
	
  • whitespace ( 0x20 ) ist auch kein any-char. die ueblichen RE-Tricks ziehen nicht. Man muss es im Lexer einstellen:
		$lexer->skip('');
	
project/parse_dokuwiki.1329774054.txt.gz · Zuletzt geändert: 2012-02-20 22:40 von 109.192.98.64