Yacc: Kommentar ans Ende von C-File generieren?

  • Hallo zusammen,

    ich habe ein Yacc-File, das ein C-File generiert.
    Jetzt möchte ich, dass ganz an den Anfang und ganz an das Ende des
    C-Files außerdem je eine Kommentarzeile generiert wird.

    Kann mir jemand sagen, wo man im Yacc-File die Kommentarzeile
    einfügen muss, die ganz an das Ende des C-Files generiert werden soll?
    (Nur zur Info: Ich habe heute zum 1. Mal mit Yacc zu tun :rolleyes: )

    Ich freue mich über Antworten!

  • Ein yacc-File hat drei Abschnitte, die durch %% voneinander getrennt sind. Im ersten stehen diverse Deklarationen und sowas, im zweiten die Grammatikregeln, und im dritten kann beliebiger Code stehen, der ans Ende vom generierten C-File kopiert wird. Dort gehört dein Kommentar also hin.

    *plantsch*

  • Ein yacc-File hat drei Abschnitte, die durch %% voneinander getrennt sind. Im ersten stehen diverse Deklarationen und sowas, im zweiten die Grammatikregeln, und im dritten kann beliebiger Code stehen, der ans Ende vom generierten C-File kopiert wird. Dort gehört dein Kommentar also hin.


    Hmm, das geht leider nicht... Das was im Yacc-File im 3. Abschnitt steht,
    steht dann zwar auch im generierten C-File, aber leider wird da trotzdem
    noch was hinter generiert! :(

    Da steht dann unter anderem noch:


    Weiß jemand, wo sowas noch herkommen könnte / von wo sowas dann
    generiert wird?

  • Weiß jemand, wo sowas noch herkommen könnte / von wo sowas dann
    generiert wird?


    Naja, das kommt vom yacc selbst.

    Ich nehme mal an, du verwendest ein Makefile. Warum benutzt du dann nicht die Shell, um deine Kommentarzeilen einzufügen. Das funktioniert dann auf jeden Fall, unabhängig davon, was yacc selbst mit dem Code aufführt.

    Zwei Files "anfang" und "ende", die die Kommentare enthalten:

    Code
    yacc file.y   # erzeugt z.b. gen_file.c
    cat anfang gen_file.c ende > g
    mv -f g gen_file.c

    Dipper dipper dii dipper dii dipper dii duuu

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!