Home-Produkte-Testarea-Kontakt-Datenschutz-Aktualisiert: 04-Mar-2004
< Voriger Tag   Nächster Tag >

Donnerstag, 04. März 2004

ydTextToPHP-Tool leicht verbessert

Beim Einbauen der Fehlerbehandlung ins ydForum war ich wieder einmal übers ydTextToPHP-Tool gestolpert, weshalb ich das Tool leicht verbessert habe.

ydTextToPHP ist zwar zum einem praktisch, da es speziell die Generierung der Doks erleichtert, weil es aber kein richtiger Parser ist, sondern mit preg_match() arbeitet, macht es laufend Probleme. Um dies zu lösen habe ich in den letzten Tagen ausprobiert mit phpJay (YACC für PHP) eine bessere Lösung zu schreiben.

Handgeschriebener Lexer

Weil phpLex ein C#-Programm ist und ich hier weder .NET noch Mono installiert habe, ist der Lexer handgeschrieben. Ist schnell gemacht und im Gegensatz zu einem handgeschriebenem Parser bliebt ein Lexer auf Dauer gut lesbar.

Möglichst einfach oder so ähnlich

Um möglichst schnell was einsetzbares zu haben sollte der Parser möglichst einfach sein. Sprich nicht den gesamten Quelltext 'verstehen', sondern sich auf das wichtigste beschränken. Andererseits enthalten die .ytp-Quelltexte Bereiche in denen die Formatierung von Bedeutung ist und reiner Text steht, der direkt als Dokumentation übernommen werden muss. Um das zu erreichen arbeitet der Lexer ein wenig kontextspezifisch und erkennt welche Bereiche er als Token und welche als Text zurückgeben muss. Für die Texte werden TOKEN_TEXT_LINE und TOKEN_TEXT_INDENT für einzeiligen und mehrzeiligen, eingerückten Text zurückgegeben.

Syntax-Baum oder Array?

Als nächstes hatte ich dann probiert, die Eingabe in Form eines PHP-Arrays oder eines Syntax-Baums für die nachfolgende Codegenerierung zu speichern. Im Moment ist es in dieser Kombination implementiert. Die Dokumentations-Bereiche werden in Arrays und der Quelltext in einem Syntax-Baum abgelegt.

Erst mal nur der Lexer

Das Ganze nun zu komplettieren, um es benutzen zu können, dürfte noch so drei Tage dauern. Um nun erst mal wieder am Forum weitermachen zu können, habe ich zunächst die alte Version von ydTextToPHP aufgebohrt und dort den Lexer eingebaut. Der gibt nicht nur die Tokens zurück, sondern zugleich den dazugehörigen Quelltextabschnitt im unveränderten Original. Das wird nun dazu genutzt, um fast den gesamten Quelltext unverändert durchzuschleifen und nur die ydNotice()-, ydWarning()- und ydError()-Makros zu erkennen und umzuwandeln. Womit das Ausgangsproblem einigermaßen gelöst ist.

Parser später

Der Rest wird dann früher oder später für eine komplette Parserlösung des Tools eingesetzt werden, welche zudem eine weiterentwickelte Syntax benutzen wird. Die jetzige ist auf preg_match() ausgelegt - mit dem echten Parser sind ein paar Sachen eleganter umzusetzen.

[Direktlink]

< Voriger Tag   Nächster Tag >

  RSS V0.91

<März 2004 >
01020304050607
08091011121314
15161718192021
22232425262728
293031    

Home-Produkte-Testarea-Kontakt-Datenschutz-Aktualisiert: 04-Mar-2004
(C) 2000-2018 by Sven Drieling