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