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

simbolo_impl.H

Ir para a documentação deste ficheiro.
00001 #include <iostream>
00002 #include <cassert>
00003 
00004 inline 
00005 Calculo::Simbolo::operator Calculo::Simbolo::Tipo() const
00006 {
00007     assert(cumpreInvariante());
00008 
00009     return tipo_;
00010 }
00011 
00012 inline std::string const& Calculo::Simbolo::valorTextual() const
00013 {
00014     assert(cumpreInvariante());
00015     assert(*this == identificador or *this == constante);
00016 
00017     return valor_textual;
00018 }
00019 
00020 inline double Calculo::Simbolo::valorNumerico() const
00021 {
00022     assert(cumpreInvariante());
00023     assert(*this == numero);
00024 
00025     return valor_numerico;
00026 }
00027 
00028 inline std::string const& Calculo::Simbolo::nomeCurto() const
00029 {
00030     assert(cumpreInvariante());
00031 
00032     return nomes_curtos_dos_tipos[tipo_];
00033 }
00034 
00035 inline std::string const& Calculo::Simbolo::nomeLongo() const
00036 {
00037     assert(cumpreInvariante());
00038 
00039     return nomes_longos_dos_tipos[tipo_];
00040 }
00041 
00042 inline std::string Calculo::Simbolo::nomeCompleto() const
00043 {
00044     assert(cumpreInvariante());
00045 
00046     return std::string("'") + nomeCurto() + "' (" + nomeLongo() + ')';
00047 }
00048 
00049 inline void Calculo::Simbolo::leValorNumerico(std::istream& entrada)
00050 {
00051     if(not (entrada >> valor_numerico))
00052         throw ErroDeAnalise("formato de número errado");
00053     tipo_ = numero;
00054 }
00055 
00056 
00057 inline bool Calculo::Simbolo::cumpreInvariante() const
00058 {
00059     return primeiro <= tipo_ and tipo_ <= ultimo;
00060 }
00061 

Gerado em Mon Apr 15 15:57:08 2002 para Calculo por doxygen1.2.6 escrito por Dimitri van Heesch, © 1997-2001