tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
199
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    PhilippGer PhilippGer ist offline Mitglied Bronze
    Registriert seit
    Jun 2009
    Beiträge
    26
    Hi!

    Ich habe folgendes Problem:
    Ich muss mehrere Ausdrücke der Form ' eins.zwei == "irgendeinstring" ' bzw. ' eins.zwei == [ "Dies ist String 1", "Dies ist String 2" ] ' parsen.

    "eis.zwei" ist eine Adresse und hier eher unbedeutend
    "==" ist einer von mehreren Operatoren.

    Das letzte ist entweder ein einzelner String oder eine Liste von Strings in eckigen Klammern gefasst.


    Zum Parsen trenne ich den gesamten String nun anhand der '&' Zeichen in die einzelnen Ausdrücke auf.
    Danach wird jeder Ausdruck in Adresse, Operator und Operand zerlegt.

    Da in den Strings selber wieder '&'-Zeichen stehen, benutze ich boost::escaped_list_separator um '&'-Zeichen zwischen Quotes zu ignorieren.

    Das Auftrennen in die einzelnen Ausdrücke klappt also.

    Allerdings löscht boost::escaped_list_separator die Quotes!
    Dadurch wird es, wenn ich mir den Operanden dann ansehe, unmöglich die Strings zu trennen.

    ' eins.zwei == [ "Karl &", "- Heinz" ] '

    Liefert dann folgenden Operanden: '[ Karl &, - Heinz ]'
    Ich weiß also nicht mehr wo der erste String aufhört und der zweite beginnt.

    Weiß jemand Rat?
    Geändert von PhilippGer (31.10.11 um 16:11 Uhr)
     

  2. #2
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Hi.

    Vermutlich hat das Forum da irgendwelche Zeichen entfernt, oder ich verstehe nicht ganz was du mit "anhand der '&' Zeichen" auftrennen meinst?!

    Hast du dir mal Boost.Spirit angeschaut?

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  3. #3
    PhilippGer PhilippGer ist offline Mitglied Bronze
    Registriert seit
    Jun 2009
    Beiträge
    26
    Nein, ist alles drin... ich habe mich vermutlich etwas falsch ausgedrückt.

    Hier mal ein beispiel:

    father.son1 == ["Hans", "Peter"] && father.son2 == ["Hans && Peter", "Peter && Paul"]

    Wenn ich nun die escaped List benutze, trennt boost das korrekt in 2 Ausdrücke:
    father.son1 == [Hans, Peter]
    und
    father.son2 == [Hans && Peter, Peter && Paul]

    Allerdings werden dadurch sämtliche Anführungszeichen entfernt.

    Sprich, ich kann in den Klammern nicht mehr feststellen, was genau die ursprünglich in Anführungszeichen gefassten Strings waren.

    Boost Spirit hatte ich mir dazu noch nicht angesehen.
    Wird aber jetzt mal nach geholt.
     

Ähnliche Themen

  1. Boost Regex
    Von Jacal im Forum C/C++
    Antworten: 2
    Letzter Beitrag: 27.08.10, 14:04
  2. Probleme mit dem Boost xml parser
    Von Cyraid im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 09.05.10, 18:45
  3. Boost::thread
    Von Ryu1991 im Forum C/C++
    Antworten: 4
    Letzter Beitrag: 27.07.09, 21:38
  4. Antworten: 2
    Letzter Beitrag: 23.04.09, 22:57
  5. [AE] Speed Boost
    Von haebel im Forum Videoschnitt, Videotechnik & -produktion
    Antworten: 4
    Letzter Beitrag: 04.08.03, 09:35