parser d'expression dans un logiciel

parser d'expression dans un logiciel - C++ - Programmation

Marsh Posté le 13-12-2006 à 19:49:52    

Hello !
Je suis en train d'envisager de faire un petit parser dans un logiciel. En gros, par exemple, il faudrait rentrer des expressions genre "create vector 1000" pour que ça fasse un vector<double> tmp; tmp.assign(1000,0);
L'idée intuitive c'est de faire une analyse mot à mot, mais ça ne me parait pas propre, et si les mots sont collés, c'est la galère.
Vous feriez ça comment, vous les informaticiens? des librairies? quoi donc?
merci
 

Reply

Marsh Posté le 13-12-2006 à 19:49:52   

Reply

Marsh Posté le 13-12-2006 à 20:18:51    

flex/bison ou outil similaire

Message cité 2 fois
Message édité par 0x90 le 13-12-2006 à 20:19:13

---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
Reply

Marsh Posté le 13-12-2006 à 20:48:49    

0x90 a écrit :

flex/bison ou outil similaire


 
Ouep, j'étais tombé sur ce genre d'outils, mais j'ai un doute.
L'impression rapide que me laissent les pages de manuels de ces outils, c'est que ça génère un code source à recompiler etc...
Ce que je souhaite, c'est, effectivement, un "truc" qui fasse l'analyse lexicale de ce que je tape dans la fenetre du programme qui tourne déjà, et que ça se comporte comme un "if premier_mot regarde deuxième mot, pointe sur la fonction machin et exécute"
Ca fait bien ça, ce que tu dis?

Reply

Marsh Posté le 13-12-2006 à 20:51:43    

Ces outils lisent une définition de ton langage, et produisent le code source d'un interpréteur pour celui-ci. Tu n'as "plus qu'à" ajouter ce code à ton projet et il te fournit des fonctions du style parser_puis_executer("crate vector 1000" ); qui font le job que tu demande.
 
Autant te prévenir, y'a quand même une bonne dose de travail si tu n'a jamais touché à tout ce qui concerne les langages et leur interprétation.


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
Reply

Marsh Posté le 13-12-2006 à 20:56:48    

Mais le code source, il est généré une fois pour toutes ou est-ce qu'il doit être re généré et recompilé pour chaque expression entrée? Si c'est la dernière solution, ça ne colle pas.
edit ok c'est bon t'as répondu à la question :-)


Message édité par GrosBocdel le 13-12-2006 à 20:58:10
Reply

Marsh Posté le 13-12-2006 à 20:58:09    

première solution, sinon ce serait totalement inutile.


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
Reply

Marsh Posté le 13-12-2006 à 21:12:42    

0x90 a écrit :

première solution, sinon ce serait totalement inutile.


 
J'ai toujours peur avec l'utilisation de librairies que les logiciels au final se retrouvent tous avec des performances absolument identiques, et qu'il n'y en ait plus un seul qui sorte du lot. Mais au point où j'en suis je pense que je vais utiliser cette solution. J'ai un peu de temps libre, et le langage à interpréter va comporter très peu de vocabulaire.
Ok merci.


Message édité par GrosBocdel le 13-12-2006 à 21:13:02
Reply

Marsh Posté le 13-12-2006 à 21:52:40    

0x90 a écrit :

flex/bison ou outil similaire


boost::spirit

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed