C++ + Code-Parser



  • Hey @all,

    ich hätte eine wahrscheinlich für Euch simple Frage:
    Und zwar möchte ich eine Art Parser schreiben, der mir dann ein HTML -Dokument generiert, zum Beispiel will ich das wenn das Wort "testlauf" vorkommt, er im HTML dokument automatisch folgendes schreibt:

    <font face="Verdana, Arial, Helvetica, sans-serif" size="2" color="#FF0000">testlauf</font>
    

    Momentan sieht das Programm folgendermaßen aus:

    #include <fstream>
    #include <iostream>
    #include <string>
    #include <vector>
    #include <algorithm>
    
    using namespace std;
    
    int main(int argc, char* argv[]) {
      // Generierung des HTML-Dokumentes
      string line;
      vector<string> HTMLSource;
      ifstream inFile("test.txt");
    
      if(inFile) {
        while(getline(inFile, line)) {
          if(!line.empty())
            HTMLSource.push_back("<br>");
          else
            HTMLSource.push_back(line);
        }
        inFile.close();
      }
    
      // Generierung des HTML-Dokumentes
      ofstream outFile("test.html");
      if(outFile) {
        for(int i=0; i<HTMLSource.size(); i++)
          outFile << HTMLSource[i] << endl;
      }
    
      return 0;
    }
    

    usw.
    Das ganze soll nicht auf irgendeine Programmiersprache abgestimmt sein, sondern eher für mich ein universeller parser.

    MfG Roman1311



  • und was ist deine Frage?



  • rofl()



  • Ich wollte nun wissen, wie ich den Text "testlauf" beispielsweise aus dem folgenden Text parsen kann (Beispielstext):

    Bericht Abgabe testlauf
    Geburtsdatum von irgendwas
    Abgabe Bericht sonstiges
    teslauf von Bericht irgendwas
    .
    .
    .
    usw.
    

    MfG Roman1311



  • immer diese unregestrierten spammern, heutzutage ist mann nirgendwoe sicher...

    also ich würde folgendes machen

    ein array mit alles wörter die ersetzen willst sowie einer Spalte für die Ersetzung

    dann z.B. mit strsr im deinem Speicher (eingelese Zeile oder ganzer Text der Datei) nach jedem Element suchen und dieses halt ersetzen ^^

    evtl würde ich sogar mit CStrings arbeiten wenns für Windows only ist



  • Hm,

    wie wärs mit:

    Jedes Wort einzeln einlesen (operator>>), in einer map prüfen ob das Wort eine Ersetzung hat und ggf. die Ersetzung einfügen.

    in der map hälst Du test und <font face="Verdana, Arial, Helvetica, sans-serif" size="2" color="#FF0000">testlauf</font>



  • (Mit Parsen hat das aber nichts zu tun.)



  • Brr, wenn ich einen Konverter brauche der so hässliches HTML generiert nehme ich aber gleich Word! 👎

    Aber schau Dir doch mal die Sourcen von HumeSikkins' cpp2html an, das ist ziemlich schön!


Log in to reply