ich bräuchte demnächst reguläre ausdrücke für mein programm und stehe da jetzt vor der qual der wahl... eine fertige lib nehmen oder selbst basteln...
Kennt irgendwer eine gute library (lizenz frei oder zumindest eine gescheite lizenz die keine ansprüche stellt xD) dafür..? Natürlich in C++..
Was für mich wieder gegen die fremd-lib spricht ist diesmal nicht der wille es selbst zu machen aus lernzwecken, als vielmehr:
Alle libs die ich bisher gefunden habe nutzen meist entweder char*, std::string oder std::wstring.. da ich aber meine eigene String-klasse habe, wäre es äusserst unpraktisch das ständig in wstring rum zu convertieren etc.. und Unicode sollte die lib aufjedenfall können!
Wenn es eine lib gäbe die gut anpassbar ist, sprich der Source nicht so mega umfangreich ist könnte ich die prinzipiell einfach für meine String klasse umschreiben.. also falls jemand so eine kennt, bitte sagen
Ansonsten.. hat schon jemand erfahrung damit sowas selbst zu schreiben? Ich stelle mir das durchaus kompliziert vor.. oder gibt es da nen recht simplen trick wie man eine RegExp parsed..?
Ich vermute du magst PCRE (http://de.wikipedia.org/wiki/PCRE) nutzen, dass erste was du also machen müsstest wäre die Grammatik der Sprache herauszufinden.
Aus dieser kannst du dann einen endlichen Automaten ableiten, am besten den malt man sich erstmal auf. Wenn das erledigt ist, ist es ein leichtes daraus code zu zaubern, denn Autmaten können immer auf die gleiche Art und Weise umgesetzt werden.
Das wirklich problematische an der Sache ist die Optimierung, eigentlich möchte man reguläre Ausdrücke kompilieren, und nicht immer neu parsen, dabei müsste man dann natürlich von der regulären vorgehensweise des umsetztens einer Regulären Sprache abweichen.
Die Boost-Library hat unter anderem auch reguläre Ausdrücke. Wir sieht den deine String-Klasse intern aus? Wird doch letztlich auch nur ein Char-Pointer und eine Länge sein, oder? Du musst nur dafür sorgen das der Anwender direkt darauf arbeiten kann, std::string hat ja auch eine Methode c_str() für solche Fälle.
Die Boost-Library hat unter anderem auch reguläre Ausdrücke. Wir sieht den deine String-Klasse intern aus? Wird doch letztlich auch nur ein Char-Pointer und eine Länge sein, oder? Du musst nur dafür sorgen das der Anwender direkt darauf arbeiten kann, std::string hat ja auch eine Methode c_str() für solche Fälle.
boost möchte ich nicht nutzen.. die library ist mir definitiv zu groß und zu umfangreich.
Meine String-klasse intern arbeitet mit UTF-32, also direkt mit Unicode-IDs.. macht in dem moment wo man viel mit fremd-libs arbeitet wenig sinn weil man dann ständig nach UTF-8, bzw ASCII convertieren darf.. aber bei mir arbeitet intern komplett alles direkt mit Unicode-IDs, insofern ist es das optimalste.
Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.