Kontextfreie Grammatik für C

Lesezeit: 1 Minute

Benutzer-Avatar
limp_chimp

Ich arbeite an einem Parser für C. Ich versuche, eine Liste aller kontextfreien Ableitungen für C zu finden. Idealerweise wäre es in BNF oder ähnlichem. Ich bin mir sicher, dass es so etwas gibt, aber googeln hat mir nicht viel gebracht.

Das Lesen des Quellcodes für vorhandene Parser/Compiler hat sich als weitaus verwirrender als hilfreich erwiesen, da die meisten, die ich gefunden habe, viel ehrgeiziger und komplizierter sind als der, den ich baue.

  • yacc-Grammatik für C: lysator.liu.se/c/ANSI-C-grammatik-y.html

    – Kongusbongus

    19. März 2013 um 6:04 Uhr

  • Das kann ich gut bestätigen. Ich habe neulich einen Flex/Bison-Parser aus den LEX/YACC-Grammatiken von dieser Seite gebaut.

    – Morten Jensen

    19. März 2013 um 6:26 Uhr


  • @CongXu, sieht gut aus, der einzige Nachteil, den es hat, dass ich sehe, dass es nur historisches C ist und weder C99 noch C11.

    – Jens Gustedt

    19. März 2013 um 8:51 Uhr

  • @JonathanLeffler nein, Sie können immer noch eine kontextfreie Grammatik haben, indem Sie den Typnamen in Deklarationen als Terminalkennung analysieren und die Überprüfung auf semantischer Ebene durchführen. Tatsächlich tut Clang genau das.

    – Stefano Sanfilippo

    24. Juli 2014 um 12:07 Uhr

  • @ThuyNguyen nur der GNU-Präprozessor cpp. Mcpp ist eine weitere Alternative mit einer freizügigeren Lizenz

    – Morten Jensen

    6. August 2018 um 21:11 Uhr

Dies ist eine ANSI-C-Grammatik, die auf den C11-Standard aktualisiert wurde. Sollte deinen Zweck erfüllen.

http://www.quut.com/c/ANSI-C-grammatik-y.html

Sie könnten immer Anhang A des C11-Standards selbst verwenden. Der frei verfügbare Normentwurf funktioniert für Ihre Zwecke unter http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf .

1334500cookie-checkKontextfreie Grammatik für C

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy