Salut,
En fait, je ferais sans doute une classe de base Task, avec un seule fonction (en dehors des constructeurs et destructeurs

) virtuelle pure : execute.
A partir de là, pour chaque foncteur, il y aurait une classe qui hérite de cette classe de base, et, pour les "bloc d'instructions" comme les boucle et autres tests, on se baserait meme sur un pattern proche du composite.
La tache qui servirait pour les tests pourrait en effet ressembler à
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| class Task
{
public:
virtual ~Task(){}
virtual void execute() const = 0;
}
class Test : public Task
{
public:
Test(Functor * fun):fun_(fun){}
virtual void execute() const
{
if(fun() )
executeAll(true_.begin(),true_.end());
else
executeAll(false_.begin(),false_.end());
}
private:
template <typename iterator>
void executeAll(iterator begin, iterator end) const
{
while(begin!:end)
{
(*begin)->execute();
++begin;
}
}
std::vector<Task*> true_;
std::vector<Task*> false_;
}; |
Après, vient le problème du parsing et de la compréhension du fichier texte dans lequel le "script" est défini

Partager