non è una impresa semplice, già il parser per le espressioni è abbastanza complicato
Hai una classe base
Codice PHP:
class ItrNodo
{
protected:
ItrNodo() ;
public:
...
virtual ~ItrNodo() ;
virtual RES eval() = 0;
};
da cui per esempio derivi
Codice PHP:
// operatore unario
class TUNOP : public ItrNodo
{
protected:
ItrNodo *operand;
TUNOP (ItrNodo *o) ;
~TUNOP() ;
};
// operatore binario
class TBINOP : public ItrNodo
{
protected:
ItrNodo *left, *right;
TBINOP (ItrNodo *l, ItrNodo *r) ;
~TBINOP() ;
};
il + binario ti risulta
Codice PHP:
class TPLUS : public TBINOP
{
public:
TPLUS(ItrNodo *l, ItrNodo *r) ;
RES eval () ;
void print_op() ;
};
dove la eval (virtuale) in questo caso
Codice PHP:
RES TPLUS::eval ()
{
return left->eval() + right->eval();
}
prova a buttare giù qualcosa.
L'interprete lo affronti dopo che è ancora più complicato.
ciao
sergio