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
{
public:
int value;
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)
{
MyInteger* myInt;
char* input = "1"; // la chaine que je veux parser
MyParser parser;
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")
# Des fois Internet n'es pas le bon outil...
Posté par mac . Évalué à 4.
Tu peux aussi jeter un oeil sur http://cholm.home.cern.ch/cholm/misc/ylmm/(...) également (qui n'existait pas à l'époque :( )
comment faire en sorte que Yacc prenne un "char*" en entrée, et pas l'entrée standard ni un fichier ?
http://cholm.home.cern.ch/cholm/misc/ylmm/buffer_issues.html(...)
comment faire en sorte que le "main" de mon appli ne soit pas dans le fichier généré par Yacc ?
http://cholm.home.cern.ch/cholm/misc/ylmm/both.html(...)
Et pour les deux autres questions, faut creuser un peu :)
Bon courage
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.