URL: https://linuxfr.org/forums/programmation-c/posts/lex-yacc-comment-utiliser-le-parser-de-maniere-dynamique Title: Lex Yacc : comment utiliser le parser de maniere dynamique ? Authors: PhunkyBob Date: 2005年04月26日T23:11:42+02:00 Tags: Score: 0 Bonjour, Malgré des heures de recherches sur Internet, je n'arrive pas à trouver la solution à mon probleme. Je vous explique : J'ai une classe MyInteger class MyInteger { £spaces£ £/spaces£public: £spaces£ £/spaces£int value; £spaces£ £/spaces£inline MyInteger(int val) {value = val; } ; } Je voudrais me faire une classe "MyParser" (générée par Lex/Yacc) qui pourrait parser une chaine (char*), et me retourner un [b]pointeur[/b] de MyInteger (où le contenu serait la valeur en entrée). En gros, je voudrais avoir une classe à moi qui contienne un main : #include "les_fichiers_generes_par_lex_yacc" int main(int argc, char** argv) { £spaces£ £/spaces£MyInteger* myInt; £spaces£ £/spaces£char* input = "1"; // la chaine que je veux parser £spaces£ £/spaces£MyParser parser; £spaces£ £/spaces£myInt = parser.construire_un_objet_myinteger(input); } Si mon "input" vaut "1", je veux que le code généré par Lex/Yacc me retourne un "new MyInteger(1);". Ce qui me pose probleme c'est : - comment faire en sorte que Yacc prenne un "char*" en entrée, et pas l'entrée standard ni un fichier ? - comment faire en sorte que le "main" de mon appli ne soit pas dans le fichier généré par Yacc ? - comment construire la fonction "construire_un_objet_myinteger" ? - comment faire en sorte que Yacc puisse créer un objet de type "MyInteger" ? (quand je dis "Lex/Yacc", ca peut etre "Flex/Bison")