Hallo allerseits,
ich bin momentan auf der Suche nach effizienten Methoden wie ich einen Text in einen anderen transformieren kann.
Der source Text wird geparst und es werden einige Tokens durch andere strings ersetzt.
Ziel ist es z.b. folgenden Text:
|
Quellcode
|
1
|
Dies ist eine Zahl: ${number*10}, und ein string $somestring
|
In folgenden umzuwandeln:
|
Quellcode
|
1
|
return "Dies ist eine Zahl: "..(number*10)..", und ein string "..(somestring)..""
|
Nur als simples Beispiel. am einfachsten wäre es natürlich std::string::replace mit find zu benutzen. Ich habe an eine effizientere Methode gedacht:
Der Compiler hat einen Zustand (TEXT, EXPRESSION, LONG_EXPRESSION, evlt später mehr) und parst den Text Zeichen für Zeichen, verändert evtl den Zustand und speichert in einer Chunk Liste Iteratorpaare welche zusammengesetzt den Transformierten Text ergeben.
Aus der Chunkliste kann man sehr fix die Größe des transformierten Strings errechnen. Somit muss jedes Zeichen des transformierten Strings nur ein einziges mal kopiert werden.
Nun, ist ne einfache selfmade Lösung. Was würdet ihr mir Empfehlen? boost::spirit? Ich weiß nicht ob das nicht ein bischen too-much für so ein simples Problem ist. Gibt es performantere Lösungsansätze?
Grüße,
Dennis[/code]