Etes-vous sûr de vouloir écrire l'analyseur en C ?
Si vous utilisez un langage moderne (par exemple C#, Java, Python), je soutiendrais la suggestion de spgennard d'utiliser ANTLR pour l'analyseur syntaxique.
Si l'écriture de l'analyseur en C est une exigence, alors vous êtes coincé avec lex et yacc (flex et bison) ou peut-être un analyseur artisanal.
On dirait que Uno se rapproche de ce que vous voulez faire. Il utilise lex/yacc et inclut les fichiers de grammaire. La partie analyse est cependant écrite en C++.
Vous trouverez peut-être d'autres idées sur le comment et le quoi dans les outils répertoriés à l'adresse suivante SpinRoot . Wikipedia contient également de bonnes informations.