Página principal   Lista de namespaces   Hierarquia de classes   Lista de componentes   Lista de ficheiros   Componentes   Declarações  

simbolo.H

Ir para a documentação deste ficheiro.
00001 #ifndef CALCULO_SIMBOLO_H
00002 #define CALCULO_SIMBOLO_H
00003 
00004 #include <iosfwd>
00005 #include <string>
00006 
00007 #include "erros.H"
00008 
00009 namespace Calculo {
00010 
00015     class Simbolo {
00016     public:
00018         enum Tipo {
00019             teste_de_condicao,  
00020             primeiro = teste_de_condicao, 
00021             separador_de_condicao, 
00022             ou,                 
00023             e,                  
00024             negacao,            
00025             igual,              
00026             diferente,          
00027             menor,              
00028             menor_ou_igual,     
00029             maior,              
00030             maior_ou_igual,     
00031             adicao,             
00032             subtraccao,         
00033             produto,            
00034             divisao,            
00035             potencia,           
00036             parenteses_esquerdo, 
00037             parenteses_direito, 
00038             virgula,            
00039             identificador,      
00040             numero,             
00041             constante,          
00042             fim,                
00043             ultimo = fim
00044         };
00045 
00048         explicit Simbolo(std::istream& entrada);
00049 
00059         operator Tipo() const;
00060 
00066         std::string const& valorTextual() const;
00067 
00072         double valorNumerico() const;
00073 
00076         std::string const& nomeCurto() const;
00077 
00080         std::string const& nomeLongo() const;
00081 
00084         std::string nomeCompleto() const;
00085 
00089         std::string descricao() const ;
00090 
00091         static bool eIdentificador(std::string const& nome);
00092     private:
00093         Tipo tipo_;
00094         std::string valor_textual;
00095         double valor_numerico;
00096 
00097         static std::string const nomes_curtos_dos_tipos[fim + 1];
00098         static std::string const nomes_longos_dos_tipos[fim + 1];
00099 
00101         void leValorTextual(std::istream& entrada);
00102 
00104         void leValorNumerico(std::istream& entrada);
00105 
00107         bool cumpreInvariante() const;
00108     };
00109 
00110 }
00111 
00112 #include "simbolo_impl.H"
00113 
00114 #endif // CALCULO_ANALISE_SIMBOLO_H

Gerado em Sun Apr 21 23:29:51 2002 para Calculo por doxygen1.2.6 escrito por Dimitri van Heesch, © 1997-2001