Funktionen aus C-Modul



  • Hallo,
    hoffe ich bin hier richtig.

    Ich habe eine "lose" Text-Datei in der immer wieder C-Funktionen eingebunden
    sind - ähnlich einer c-Datei mit Kommentaren dazwischen. Dabei gibt
    es leider keine Struktur an der sich das Dokument orientieren würde.
    (Die c-Funktionen an sich sind natürlich schon strukturiert und valide)

    Gibt es einen Parser (oder ggf Algorithmus), der mir das Dokument durchsucht
    und alle Funktionen heraus filtert?

    vg
    Puss


  • Mod

    So etwas wird es noch nicht geben, aber man kann es sich schreiben, bzw. einen allgemeinen Parser so anpassen, dass er dies tut. Wie genau, das hängt davon ab, wie das Dokument genau aussieht.



  • Das ist natürlich schade.
    Wie gesagt, hat das Dokument leider keine fixe Struktur, soll heiße, es lässt sich nicht ableiten, wann eine (neue) Funktion anfängt.

    Blah blah.
    Blubb.
    23456
    
    void do()
    {
    }
    
    blah
    [image]
    
    int get(char[] xy)
    {
    }
    

    Gibt es denn irgendwo Parser-Regeln oder reguläre Ausdrücke für bspw.
    Compiler oder Code Highligher?


  • Mod

    Du musst doch irgendetwas über den Text wissen. Es wird ja wohl kaum

    k34nt r94engf0 3n'sf;wt kw4/tkint main(){};34run34rtfvoid eknf{}3k3
    

    sein (man beachte, dass das void eknf{} kein gültiges C ist und daher wohl gefiltert werden soll). Wenn du so etwas wie hier hättest, dann müsstest du wirklich weit ausholen. Aber in deinem Beispiel hast du unter anderem eine schöne Leerzeile vor dem C-Code, der Text enthält nix was nach C aussieht, das ließe sich doch ganz einfach finden.



  • Ja, ähnlich dem Beispiel.
    Wie gesagt, die Funktionen an sich sind strukturiert (+ valide), zu mindest so
    weit ich es sehen kann.
    Es lässt sich nur nicht sagen wo, wie und wann diese auftreten.
    Man könnte es sich als c-Datei in ein Word-Dokument vorstellen, wo
    dann irgendwelche Märchen einfach mittenrein geschrieben werden.
    Leider kann/darf ich kein direktes Beispiel hochladen.

    Was auf jeden fall immer so gebaut ist:

    void do()
    {
    

    Da muss es doch irgendwo einen Satz von Parser-Regeln geben ... ?



  • Ich sollte den Code-Abschnitt nochmal besser machen 🙂

    TYP BEZEICHNER(TYP1 param1, TYP2 param2, ...)
    {

    Ggf kommt dann noch ein static, o.ä. dazu.


  • Mod

    Das ist doch schon eine Parserregel.



  • SeppJ schrieb:

    Das ist doch schon eine Parserregel.

    Ja, da hast du durchaus recht; man kann darauf einen Parser aufbauen.
    Da ich aber leider kein erfahrener C/C++-Programmierer bin und nicht
    alle möglichen Konstrukte kenne, suche ich nach was fertigem oder wie
    gesagt einem guten Algorithmus, der die existierenden Fälle abdeckt.

    Das hat auch nicht unbedingt mit Faulheit zu tun, sondern eher mit
    meiner unzulänglichkeit auf dem Gebiet 😞


Anmelden zum Antworten