Anzeige:
Ergebnis 1 bis 2 von 2

Thema: C++ -> C Kommetare wandeln, Regulaeren Ausdruck verbessern?

  1. #1
    Registrierter Benutzer
    Registriert seit
    15.05.2001
    Beiträge
    88

    C++ -> C Kommetare wandeln, Regulaeren Ausdruck verbessern?

    Guten Morgen

    Mit folgendem Quick and Dirty Regex
    sed 's/\(.*\)/& \*\//g;s/\/\//\/\*/g' pattern
    konnte ich bei diesem Pattern
    // foo
    // baz spam qnx
    // grrr
    alle // Kommentare durch /* Kommentar */ ersetzen.

    Leider frisst der obige Ausdruck aber zuviel. Nur * wird z.B. auch
    erwischt und das ist in C natuerlich Mist

    Folgendes Vorgehen habe ich mir ueberlegt. (kann redundant sein)

    wenn schon /* oder */ dann skippe diese Line
    wenn schon nur / oder * dann skippe diese Line
    opt. wenn /*/* */*/ dann skippe diese Line
    opt. wenn multilinecomment (suche nach \n\r) dann skippe diese Line

    solange wie line matches // und nur //
    s'////* bzw. */

    Kann mir jemand einen kleinen Tip geben? Mir wurde schon empfohlen
    eine State Machine in C zu schreiben, das waere dann die naechste
    Aufgabe, momentan will ich erstmal den Regex weiter verbessern.

    Gruss 403
    ;)

  2. #2
    Registrierter Benutzer
    Registriert seit
    05.06.2003
    Beiträge
    118
    s#^\s*(.*)$#/* $1 */#

    sollte es eigentlich bringen, korrekte Escapes im Pattern vorausgesetzt. Vielleicht ein wenig ineffektiv wegen dem gierigen \s* vorne. Schneller könnte noch

    s#^\s*?(\S+.*)$#/* $1 */#

    sein.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •