Ich suche einen Parser für C. Hier ist was ich brauche:
Es kann Teil eines Projekts sein, solange es entkoppelt ist, so dass ich den Parser herausziehen kann.
Gibt es einen vorhandenen Parser, der diese Anforderungen erfüllt?
Wenn Sie C99 nicht benötigen, dann ist lcc ein Slam Dunk:
Ein möglicher Nachteil ist, dass der lcc
Parser keinen abstrakten Syntaxbaum erstellt - er geht direkt vom Parsing zum Zwischencode.
Wenn Sie C99 haben müssen, dann denke ich, dass tinycc (tcc) die beste Wahl ist.
Ein guter c-Compiler ist an diesem Ort vorhanden. Einfach und zugänglich. Ссылка
Überprüfen Sie elsa, es verwendet den verallgemeinerten LR-Algorithmus.
Seine Hauptverwendung ist für C ++, aber es analysiert auch C-Code.
Überprüfen Sie auf der Seite im Abschnitt "Wie viel C kann Elsa analysieren?" was besagt, dass es die meisten C-Programme analysieren kann, einschließlich des Linux-Kernels.
Es ist unter einer BSD-Lizenz veröffentlicht.
Hier ist ein rekursiver Descent-Parser, den ich nach C portiert habe: Ссылка