diff options
author | astrojhgu <astrojhgu@ed2142bd-67ad-457f-ba7c-d818d4011675> | 2009-08-21 04:14:23 +0000 |
---|---|---|
committer | astrojhgu <astrojhgu@ed2142bd-67ad-457f-ba7c-d818d4011675> | 2009-08-21 04:14:23 +0000 |
commit | 3099d2011c505c0c73c4304344e9ee936caab7a3 (patch) | |
tree | adaa9bb1490be182a1af818b1a17d4a8c7d50c6f /muparser/muParserTokenReader.h | |
parent | 36f6c2b1b422b51a4e7dd9d50f9f30aba49aefd3 (diff) | |
download | opt-utilities-3099d2011c505c0c73c4304344e9ee936caab7a3.tar.bz2 |
git-svn-id: file:///home/svn/opt_utilities@45 ed2142bd-67ad-457f-ba7c-d818d4011675
Diffstat (limited to 'muparser/muParserTokenReader.h')
-rw-r--r-- | muparser/muParserTokenReader.h | 156 |
1 files changed, 0 insertions, 156 deletions
diff --git a/muparser/muParserTokenReader.h b/muparser/muParserTokenReader.h deleted file mode 100644 index 122586e..0000000 --- a/muparser/muParserTokenReader.h +++ /dev/null @@ -1,156 +0,0 @@ -/*
- __________
- _____ __ __\______ \_____ _______ ______ ____ _______
- / \ | | \| ___/\__ \ \_ __ \/ ___/_/ __ \\_ __ \
- | Y Y \| | /| | / __ \_| | \/\___ \ \ ___/ | | \/
- |__|_| /|____/ |____| (____ /|__| /____ > \___ >|__|
- \/ \/ \/ \/
- Copyright (C) 2004-2006 Ingo Berg
-
- Permission is hereby granted, free of charge, to any person obtaining a copy of this
- software and associated documentation files (the "Software"), to deal in the Software
- without restriction, including without limitation the rights to use, copy, modify,
- merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in all copies or
- substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
- NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-*/
-
-#ifndef MU_PARSER_TOKEN_READER_H
-#define MU_PARSER_TOKEN_READER_H
-
-#include <cassert>
-#include <cstdio>
-#include <cstring>
-#include <map>
-#include <memory>
-#include <stack>
-#include <string>
-
-#include "muParserDef.h"
-#include "muParserToken.h"
-
-
-namespace mu
-{
-
- // Forward declaration
- class ParserBase;
-
- /** \brief Token reader for the ParserBase class.
-
- */
- class ParserTokenReader
- {
- private:
- typedef ParserToken<value_type, string_type> token_type;
-
- private:
- ParserBase *m_pParser;
- string_type m_strFormula;
- int m_iPos;
- int m_iSynFlags;
- bool m_bIgnoreUndefVar;
-
- const funmap_type *m_pFunDef;
- const funmap_type *m_pPostOprtDef;
- const funmap_type *m_pInfixOprtDef;
- const funmap_type *m_pOprtDef;
- const valmap_type *m_pConstDef;
- const strmap_type *m_pStrVarDef;
- varmap_type *m_pVarDef; ///< The only non const pointer to parser internals
- facfun_type m_pFactory;
- void *m_pFactoryData;
- std::vector<identfun_type> m_vIdentFun; ///< Value token identification function
- varmap_type m_UsedVar;
- value_type m_fZero; ///< Dummy value of zero, referenced by undefined variables
- int m_iBrackets;
-
- //
- // private Functions
- //
- private:
-
- /** \brief Syntax codes.
-
- The syntax codes control the syntax check done during the first time parsing of
- the expression string. They are flags that indicate which tokens are allowed next
- if certain tokens are identified.
- */
- enum ESynCodes
- {
- noBO = 1 << 0, ///< to avoid i.e. "cos(7)("
- noBC = 1 << 1, ///< to avoid i.e. "sin)" or "()"
- noVAL = 1 << 2, ///< to avoid i.e. "tan 2" or "sin(8)3.14"
- noVAR = 1 << 3, ///< to avoid i.e. "sin a" or "sin(8)a"
- noCOMMA = 1 << 4, ///< to avoid i.e. ",," or "+," ...
- noFUN = 1 << 5, ///< to avoid i.e. "sqrt cos" or "(1)sin"
- noOPT = 1 << 6, ///< to avoid i.e. "(+)"
- noPOSTOP = 1 << 7, ///< to avoid i.e. "(5!!)" "sin!"
- noINFIXOP = 1 << 8, ///< to avoid i.e. "++4" "!!4"
- noEND = 1 << 9, ///< to avoid unexpected end of formula
- noSTR = 1 << 10, ///< to block numeric arguments on string functions
- noASSIGN = 1 << 11, ///< to block assignement to constant i.e. "4=7"
- noANY = ~0 ///< All of he above flags set
- };
-
- ParserTokenReader(const ParserTokenReader &a_Reader);
- ParserTokenReader& operator=(const ParserTokenReader &a_Reader);
- void Assign(const ParserTokenReader &a_Reader);
-
- public:
- ParserTokenReader(ParserBase *a_pParent);
- ~ParserTokenReader();
- ParserTokenReader* Clone(ParserBase *a_pParent) const;
-
- void AddValIdent(identfun_type a_pCallback);
- void SetVarCreator(facfun_type a_pFactory, void *pUserData);
- int GetPos() const;
- const string_type& GetFormula() const;
- const varmap_type& GetUsedVar() const;
- void SetFormula(const string_type &a_strFormula);
- void SetDefs( const funmap_type *a_pFunDef,
- const funmap_type *a_pOprtDef,
- const funmap_type *a_pInfixOprtDef,
- const funmap_type *a_pPostOprtDef,
- varmap_type *a_pVarDef,
- const strmap_type *a_pStrVarDef,
- const valmap_type *a_pConstDef );
- void IgnoreUndefVar(bool bIgnore);
- void ReInit();
- token_type ReadNextToken();
-
- //
- // private functions
- //
- private:
-
- void SetParent(ParserBase *a_pParent);
- int ExtractToken( const char_type *a_szCharSet,
- string_type &a_strTok, int a_iPos ) const;
- bool IsBuiltIn(token_type &a_Tok);
- bool IsEOF(token_type &a_Tok);
- bool IsInfixOpTok(token_type &a_Tok);
- bool IsFunTok(token_type &a_Tok);
- bool IsPostOpTok(token_type &a_Tok);
- bool IsOprt(token_type &a_Tok);
- bool IsValTok(token_type &a_Tok);
- bool IsVarTok(token_type &a_Tok);
- bool IsStrVarTok(token_type &a_Tok);
- bool IsUndefVarTok(token_type &a_Tok);
- bool IsString(token_type &a_Tok);
- void Error( EErrorCodes a_iErrc, int a_iPos = -1,
- const string_type &a_sTok = string_type() ) const;
- };
-} // namespace mu
-
-#endif
-
-
|