#ifndef _utl_UnitEvaluator_h #define _utl_UnitEvaluator_h /*! \file UnitEvaluator.h \brief Unit evaluating class \author R. Sipos */ #include #include #include namespace utl { class UnitEvaluator { public: typedef UnitGrammar::SymbolTable SymbolTable; UnitEvaluator(const SymbolTable& symbols) : fSymbolTable(symbols), fGrammar(symbols, fValue, fError) { fValue = 1; fError = UnitGrammar::eOk; } double Evaluate(const std::string& expression) const; std::string GetError() const; UnitGrammar::EErrors GetStatus() const { return fError; } const SymbolTable& GetSymbolTable() const { return fSymbolTable; } private: const SymbolTable& fSymbolTable; UnitGrammar fGrammar; mutable std::string fExpression; double fValue; mutable UnitGrammar::EErrors fError; mutable unsigned int fErrPosition; }; } #endif