/**
*
* @File : CExpression.h
*
* @Authors : D. Mathieu
*
* @Date : 09/05/2001
*
* @Version : V1.0
*
* @Synopsis :
*
**/
#if !defined __CEXPRESSION_H__
#define      __CEXPRESSION_H__

#include <iostream>
#include <fstream>

#include "CNode2Gen.h"
#include "CToken.h"

namespace nsCompil
{
    class CExpression
    {
        typedef nsSdD::CNode2Gen <CToken> CNodeToken;

        CNodeToken * m_Racine;

      public :

        ~CExpression (void);

      Question 2

      private :
        void Prefixe (std::ostream & os, CNodeToken * const Ptr) const;

      public :
        void EditerPrefixe (std::ostream & os = std::cout) const;

      Question 3

      private :
        void Postfixe (std::ostream & os, CNodeToken * const Ptr) const;

      public :
        void EditerPostfixe (std::ostream & os = std::cout) const;

      Question 4

      private :
        void Infixe (std::ostream & os, CNodeToken * const Ptr) const;

      public :
        void EditerInfixe (std::ostream & os = std::cout) const;

      Question 5

      private :
        int  Evaluer (CNodeToken * const Ptr) const;

      public :
        int  Evaluer (void) const;

      Question 6

      private :
        CNodeToken * Ajouter (std::istream & is);

      public :
        CExpression (std::istream & is = std::cin);

    }; // CExpression

} // nsCompil

#include "CExpression.hxx"

#endif       __CEXPRESSION_H__