Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3381 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [C++] Création d'une machine virtuel

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++] Création d'une machine virtuel

n°131597
Ventilo
Ventilo? Depuis 1998!
Posté le 27-04-2002 à 07:37:43  profilanswer
 

Je suis entrain de préparer un projet en C++ que je souhaite vraiment terminer. Donc je me prépare d'avance en écrivant un document qui contient tout les informations du projet c-à-d que je décrit comment je veux tel chose et tel autre chose. Comme ca je ne serai pas perdu entre deux fonction sans savoir quoi faire :D  
 
Donc mon projet se résume en une classe qui permet de lire un fichier script et d?exécuter ce qui si trouve. Le langage sera très simple, à la base du basic mais avec des élément d'autres langages. Une bout de code pourait avoir l'air de ca:

Code :
  1. Dim VariableXX, VariableYY
  2. VariableXX = 2
  3. VariableYY = "Je sais compter jusqu'a " + VariableXX
  4. Afficher (VariableYY)


Comme vous avez pu le constater, les variable n'on pas de type définit, c'est pas bien mais c'est simple  :sol:  
 
En gros, la classe principale contiendra une liste (de taille variable) de variables et des pointeurs de fonction qui poinent sur des fonction "publier" de mon programe.
 
Si je poste un message ici c'est bien sur parce que j'ai besoin de votre aide  ;) Je me demandais comment je pouvais stoquer la valeur des variables. J'avais pensé à une struct du style:

Code :
  1. struct MV_Variable
  2. {
  3.   char *nom;
  4.   char *valeur;
  5. };


 
J'ai pensé à utiliser un char* et de stocker la valeur sous forme d'une chaîne et de la transformé en entier/float etc. lors des opération mathématique.
 
Croyez vous que c'est une bonne façon ou il existe de meilleur moyen? et lorsque je voudrai accéder à une variable il faudra que je vérifie toutes les variables par leur noms, ce qui me semble assez lent :??: Existe t-il un moyen plus rapide pour retrouver la valeur sans avoir a cherché parmi toute les autre variables?
 
Merci à l'avance!!

 

[jfdsdjhfuetppo]--Message édité par Ventilo le 27-04-2002 à 07:38:05--[/jfdsdjhfuetppo]

mood
Publicité
Posté le 27-04-2002 à 07:37:43  profilanswer
 

n°131604
youdontcar​e
Posté le 27-04-2002 à 11:07:16  profilanswer
 

>> VariableYY = "Je sais compter jusqu'a " + VariableXX  
 
la concaténation de strings n'est pas commutative, donc utiliser '+' = :non: ... et c'est une source (chiante) de problèmes (très chiants) en javascript, quand tu veux additionner des valeurs qui proviennent d'une form : par ex faire form.var1 (qui contient 1) + form.var2 (qui contient 1) te donnera 11 (il 'additionne' en fait les deux strings). php utilise un opérateur distinct '.', donc pas de problème.
 
>> struct MV_Variable  
 
en général, c'est plutôt une structure 'variant', qui contient le type de la variable et une union de toutes les valeurs qu'elle peut prendre (entier, flottant, string, etc.). tu peux regarder les sources de php ou les headers de com ( http://216.239.51.100/search?q=cac [...] iant&hl=en )  
 
>> il faudra que je vérifie toutes les variables par leur noms, ce qui me semble assez lent  
 
pour ça, tu utilises une hashtable.  
 
je ressors la page de crenshaw http://compilers.iecc.com/crenshaw/ qui a le mérite d'être claire et simple.

n°131700
Ventilo
Ventilo? Depuis 1998!
Posté le 27-04-2002 à 17:08:04  profilanswer
 

:jap: Merci beaucoup  :hello:
 
Je vais regarder ca!!

 

[jfdsdjhfuetppo]--Message édité par Ventilo le 27-04-2002 à 17:08:34--[/jfdsdjhfuetppo]

n°131735
Ventilo
Ventilo? Depuis 1998!
Posté le 27-04-2002 à 19:43:50  profilanswer
 

J'ai fait une recherche sur les hashtable, et je suis un peu confu à ce sujet...
 
J'ai découvert que la STL offrait un container map et que sur certain site il était considéré comme une hashtable et sure d'autre rien n'est dit à ce sujet  :??:  :??:  
 
map est t'il oui ou non basé sur une hashtable  :??:

n°131743
fabsk
Posté le 27-04-2002 à 20:29:17  profilanswer
 

Ventilo a écrit a écrit :

 
map est t'il oui ou non basé sur une hashtable  :??:  




 
Non. std::map utilise l'operateur "inferieur" sur les clefs de la map

n°131744
fabsk
Posté le 27-04-2002 à 20:31:07  profilanswer
 

[citation]
Donc mon projet se résume en une classe qui permet de lire un fichier script et d?exécuter ce qui si trouve. Le langage sera très simple, à la base du basic mais avec des élément d'autres langages. Une bout de code pourait avoir l'air de ca:
[/citation]
Je suis curieux de savoir si tu vas utiliser un truc genre lex/flex ou yacc/bison pour faire de l'analyse syntaxique.

n°131748
Kris
Posté le 27-04-2002 à 20:38:49  profilanswer
 

une petit definition de map :
 
Definition: A map is a data structure that stores pairs of keys and values. A value may be inserted or retrieved based on its key. In C++, map is a container class in the Standard Template Library, STL.  
 
Also Known As: associative array, hash


---------------
L'homme sage apprend de ses erreurs.  
n°131760
Ventilo
Ventilo? Depuis 1998!
Posté le 27-04-2002 à 21:25:43  profilanswer
 

En fait, j'en suis encore au stade de pré-conception. Je ne sais pas encore comment je vais faire fonctioner le tout. J'ai regardé un peu ce que pouvait faire les programes du style lex,yacc/flex/bison etc.
 
Je vais expériementer un peu puis je me déciderai après.

n°131763
fabsk
Posté le 27-04-2002 à 21:30:12  profilanswer
 

kris a écrit a écrit :

 
Also Known As: associative array, hash  




 
Les clefs de la map sont comparees en utilisant par defaut en utilisant "less<Key>" (doc de la STL SGI), bref "operator <".
Si on veut, on peut definir "operator <" tel qu'il utilise une valeur de hachage, mais je ne vois pas de "hash table" la dedans...
 
D'ailleurs, Stroustrup propose l'ecriture d'une classe "hash_map" en plus de la classe "map" dans son bouquin...

n°131802
Kris
Posté le 28-04-2002 à 11:32:34  profilanswer
 

je suis d accord en ce qui concerne la map.
il est preferable, je pense, de se faire une petite class hash_map.
 
Sinon pour le scanner et le parser je te conseille le couple flex/bison
 
en plus cherches sur le net la version 1.49a de bison car elle genere du code C++ (sympa!) Bon ok, c une beta mais elle marche bien!

 

[jfdsdjhfuetppo]--Message édité par kris le 28-04-2002 à 11:33:26--[/jfdsdjhfuetppo]


---------------
L'homme sage apprend de ses erreurs.  
mood
Publicité
Posté le 28-04-2002 à 11:32:34  profilanswer
 

n°131960
Ventilo
Ventilo? Depuis 1998!
Posté le 28-04-2002 à 18:48:15  profilanswer
 

Je vien de décourvrir sur le site de SGI qu'il avait une extension de la STL qui contien justement une classe hash_map  :)  
 
Reste plus qu'a l'aprivoiser!!
 
Par contre, je crois que j'y suis aller un peu fort avec le terme "Machine virtuel". En fait c'est vraiment plus du "script" que je veux... du style pas compilé... Je le parse et je l'execute! L'interprétation de code compilé me semble encore un peu trop compliqué...

n°132478
Kris
Posté le 29-04-2002 à 21:16:05  profilanswer
 

cool, je ne savais pas pour hash_map!
 
sinon n'ai pas peur pour la machine virtuel, c pas aussi dur que tu penses!
 
@+


---------------
L'homme sage apprend de ses erreurs.  
n°132529
El_gringo
Posté le 30-04-2002 à 08:53:26  profilanswer
 

Et, une question:
ça va servir à quoi ton truc ? parce que, je vois pas l'intéret de créer un "sous-langage" en C...

n°141152
Ventilo
Ventilo? Depuis 1998!
Posté le 20-05-2002 à 07:20:28  profilanswer
 

el_gringo a écrit a écrit :

Et, une question:
ça va servir à quoi ton truc ? parce que, je vois pas l'intéret de créer un "sous-langage" en C...  




 
Ben.... le défi  ;)

n°141390
RiffRaff
I'm not your boy toy !
Posté le 21-05-2002 à 00:52:40  profilanswer
 

Ben oui le defi, c quand meme tres instructif ce genre de trucs et ca permet de voir la galere qu'il y a a faire un compilo...
J'ai essayer de faire un truc de ce genre l'an dernier et le conseil que je peux donner c d'un part avoir une grammaire tres precise du langage(pour utiliser flex et bison correctement) et d'autre part de s'armer de courage(ca peut s'averer galere).
Bonne chance...

n°141460
El_gringo
Posté le 21-05-2002 à 10:35:51  profilanswer
 

Ventilo a écrit a écrit :

 
 
Ben.... le défi  ;)  




 
Ouais, ms bon, tant qu'a se lancer un défit, autant que le trucs que tu fasse puisse avoir une utilité. Parce que, créer un truc inutile, c pas très gratifiant j'trouve !
Et créer un langage en utilisant le C, y a + utile.

n°142036
youdontcar​e
Posté le 21-05-2002 à 22:21:45  profilanswer
 

el_gringo a écrit a écrit :

Et créer un langage en utilisant le C, y a + utile.


j'ai énormément appris en codant une petite combinaison compilo + vm. et ça m'a "décoincé" de ma "peur" d'évaluation d'expression, chose que je considérais complexe et qui s'est révélée être très simple. deuxième chose surprenante, ça ne m'avait pas pris tant de temps que ça (c'était très basique mais je m'imagineais des montagnes).
 
dire "y'a plus utile", c'est justement ça qui n'est pas très utile.

 

[jfdsdjhfuetppo]--Message édité par youdontcare le 21-05-2002 à 22:22:24--[/jfdsdjhfuetppo]

n°142145
El_gringo
Posté le 22-05-2002 à 08:56:28  profilanswer
 

youdontcare a écrit a écrit :

j'ai énormément appris en codant une petite combinaison compilo + vm. et ça m'a "décoincé" de ma "peur" d'évaluation d'expression, chose que je considérais complexe et qui s'est révélée être très simple. deuxième chose surprenante, ça ne m'avait pas pris tant de temps que ça (c'était très basique mais je m'imagineais des montagnes).
 
dire "y'a plus utile", c'est justement ça qui n'est pas très utile.  




 
Bah si, c utile que je donne mon avis. Tout avis est bon à prendre. Sauf pour les gens bornés bien sur.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [C++] Création d'une machine virtuel

 

Sujets relatifs
forums création de site internet[MFC] Création dynamique d'un CDialogBar avec le contenu d'un CDialog
[VB] creation fichier en UTF-8 (unicode) ?[ Delphi ] Creation d'un programme d'installation
[JAVA] Creation de dossier et Creation de fichier[ php ou perl + rezo ] actualiser l'ip d'une machine sous adsl
[Oracle 7.3.4] pb de création d'enregistrement[C++Builder] Création dynamique d'images
[C] Création d'une ListView ..[C noobs inside] Probleme a la creation du fichier
Plus de sujets relatifs à : [C++] Création d'une machine virtuel


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)