Compilateur d'expression

0/5 (6 avis)

Vue 5 770 fois - Téléchargée 661 fois

Description

compilateur d'expression avec operateur dynamique, variable et fonction exterieur.
compilateur ? parce ce que ca transforme l'expression en code machine executable depuis le programme

Source / Exemple :


var x:string;
      d:extended;
...
xvar:='le pere noel ';
d:=2005;

// on ajoute une variable exterieur du type string
g3.add('xvar',@x,gvarstr); 

// idem type float
g3.add('anaujd',@d,gvarfloat); 
...
// on compile
g3.compile('xvar +" a " + (anaujd-1923) +" ans"',bin);

// on excute a volonté
g3.execute(bin); 
...
retournera "le pere noel a 82 ans"

x:='le pape';
g3.execute(bin);

retournera "le pape a 82 ans"

Codes Sources

A voir également

Ajouter un commentaire Commentaires
AVousDeJouer Messages postés 3 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 18 mars 2005
4 mars 2005 à 16:21
salut,

ton truc me branche bien, j'avais deja récuperer la premiere version, sans exemple donc pas forcement exploitable dans l'etat, la seconde version à bien un projet complet avec exemple mais parcontre j'ai deja du modifier un peu le tout pour que cela compile :

- floattostr(b,ffs); // problème forcement si c'est la fonction de base
- fonction IsNum récuperé de la premiere version
- Unité flist récuperé de la premiere version

donc aprés cela, ca compile mais j'ai un problème dans ta fonction récursive gtk puisqu'il ne trouve pas de pointer donc renvoi une exception...

je n'ai pas le temps de regarder et de digerer ton code donc peux tu mettre une ensemble qui soit fonctionnel,

merci d'avance

à bientot

Xavier
Tu diras ce que tu veux, mais Delphiprog en connait un rayon en la matiere et s'il dit que c'est incrompréhensible, c'est que cela l'est.

Par contre je suis d'accord que cela soit un très bon code, mais je le trouve peu etoffé: je veux dire que cela manque d'explications et ... de praticité (enfin c'est pas pratique à utiliser)

@ ++ Flo
cs_foxz Messages postés 101 Date d'inscription mercredi 8 octobre 2003 Statut Membre Dernière intervention 25 février 2009
2 févr. 2005 à 09:38
:-)) dsl
j'ai oublier de mettre un exemple
Alors, pe, le code est pour les initiés
car il faut tout definir. y compris les operateurs.
par ex l'operateur '+' n'est pas codé. il faut le declaré.
sachant qu'il peut y avoir des "interactions" entre les types
par exemple "totor"+2.
2 etant de type extended et "totor" de type string il faut definir l'interaction de l'operateur + dans ce cas.
(g3.op['+.$.#']:=@function dans la beta1)
enfin bref, j'ecris un exemple et un tuto pour la fin de semaine promis :-))
(ps : vous pouvez definir vos propres types
par exemple decide que l'operateur + appliqué a un type list ajoutera l'argument a la fin de la liste)
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
1 févr. 2005 à 22:36
"la source n'est pas assez commentée" : elle ne l'est pas du tout, n'ayons pas peur des mots.

C'est vrai que c'est totalement inutilisable sans un minimum d'explications.

Es-ce que quelqu'un aurait le décodeur qui va bien ?

C'est peut-être un très bon code, mais comme personne n'a envie de passer des heures à essayer de comprendre comment ça fonctionne, on laisse tomber.
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
1 févr. 2005 à 19:50
:)


On sent bien que c'est pour les initiés...

Pour les autres c'est: " CIRCULEZ. Y'A RIEN A VOIR! ".
Afficher les 6 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.