cs_mathmax
Messages postés403Date d'inscriptionvendredi 28 octobre 2005StatutMembreDernière intervention31 août 2008
-
18 juin 2008 à 14:01
cs_mathmax
Messages postés403Date d'inscriptionvendredi 28 octobre 2005StatutMembreDernière intervention31 août 2008
-
19 juin 2008 à 15:24
Bonjour,
J'aimerais parser une expression qui est une condition du langage de
programmation CA-Clipper, ceci afin de la traduire en language SQL. En
cherchant sur le web, j'ai découvert que les outils lex et yacc
permettent justement de faire ce genre de choses. Pensez-vous que ces
outils peuvent m'aider à résoudre mon problème ou me conseilleriez-vous
une autre technique ?
Voici un exemple de traduction que j'aurais à faire :
<!-- BEGIN TEMPLATE: bbcode_code -->
<!--[if !IE]><--><!----><!--[endif]--><!--[if IE]>
<![endif]-->where exists (select 0 from Customers as C, Orders as O where C.Id = O.Customers_Id and (C.Name like "%Mart%" and O.Price >= 120) or O.Date = #18/06/08#)
cs_Lucky92
Messages postés180Date d'inscriptionmercredi 22 décembre 2004StatutMembreDernière intervention16 août 20122 19 juin 2008 à 09:18
Bonjour,
Lex & yacc est un langage certainement trés intéressant, mais il est aussi trés confidentiel ! Pour t'en convaincre, il suffit de regarder la taille de l'article sur wikipédia... les risques portent donc sur l'apprentissage, le support et la maintenance de ton code.
Ensuite, le choix de la techno dépend de ton besoin : est-ce que tu dois créer un analyseur complet du langage CA-clipper ( qui semble bien confidentiel aussi ; on dirait un mélange de perl & de fortran ! ) ou seulement reconnaître quelques commandes ?
Dans l'exemple que tu présentes, j'ai le sentiment qu'un peu de c++ standard et une expression régulière bien sentie feraient parfaitement l'affaire. En revanche, si tu as besoin de parser tout le langage CA-clipper, il existe une bibliothèque boost::spirit qui fournit un framework pour construire des parseurs. L'utilisation de boost nécessite un niveau en c++ assez élévé ( bonne connaissance de la STL, maîtrise de la programmation générique ), en revanche, c'est quasiment du standard ( un certain nombre de bibliothèques de boost seront intégrés dans la prochaine version de c++ ).
cs_mathmax
Messages postés403Date d'inscriptionvendredi 28 octobre 2005StatutMembreDernière intervention31 août 2008 19 juin 2008 à 15:24
Merci pour ta réponse.
En fait je suis novice en C++ (je programme en C# habituellement). J'ai d'ailleurs un problème avec un projet C++ crée avec Visual Studio 2008. La compilation ne génère pas de .exe dans le répertoire bin (bien que dans les propriété du projet l'option Configuration Type est bien sur "Application (.exe)"), mais seulement des .obj.
Du coup j'obtiens le message d'erreur suivant quand j'essai d'exécuter avec le debugger de Visual Studio :
Unable to start the program.
This application has failed to start
because the application configuration is incorrect. Review the manifest
file for possible errors. Reinstalling the application may fix the
problem. For more details, please see the application event log.