Compilateur d'expression

Soyez le premier à donner votre avis sur cette source.

Vue 5 510 fois - Téléchargée 633 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

Messages postés
3
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
18 mars 2005

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
Messages postés
102
Date d'inscription
mercredi 8 octobre 2003
Statut
Membre
Dernière intervention
25 février 2009

:-)) 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)
Messages postés
4580
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
27
"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.
Messages postés
2527
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
16 octobre 2019
13
:)


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.