| /* | |
| _____ __ _____________ _______ ______ ___________ | |
| / \| | \____ \__ \\_ __ \/ ___// __ \_ __ \ | |
| | Y Y \ | / |_> > __ \| | \/\___ \\ ___/| | \/ | |
| |__|_| /____/| __(____ /__| /____ >\___ >__| | |
| \/ |__| \/ \/ \/ | |
| Copyright (C) 2004 - 2022 Ingo Berg | |
| Redistribution and use in source and binary forms, with or without modification, are permitted | |
| provided that the following conditions are met: | |
| * Redistributions of source code must retain the above copyright notice, this list of | |
| conditions and the following disclaimer. | |
| * Redistributions in binary form must reproduce the above copyright notice, this list of | |
| conditions and the following disclaimer in the documentation and/or other materials provided | |
| with the distribution. | |
| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR | |
| IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND | |
| FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR | |
| CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |
| DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |
| DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER | |
| IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT | |
| OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
| */ | |
| //--- Standard includes ------------------------------------------------------------------------ | |
| //--- Parser includes -------------------------------------------------------------------------- | |
| /** \file | |
| \brief Definition of the standard floating point parser. | |
| */ | |
| namespace mu | |
| { | |
| /** \brief Mathematical expressions parser. | |
| Standard implementation of the mathematical expressions parser. | |
| Can be used as a reference implementation for subclassing the parser. | |
| */ | |
| class API_EXPORT_CXX Parser : public ParserBase | |
| { | |
| public: | |
| Parser(); | |
| void InitCharSets() override; | |
| void InitFun() override; | |
| void InitConst() override; | |
| void InitOprt() override; | |
| void OnDetectVar(string_type* pExpr, int& nStart, int& nEnd) override; | |
| value_type Diff(value_type* a_Var, value_type a_fPos, value_type a_fEpsilon = 0) const; | |
| protected: | |
| static int IsVal(const char_type* a_szExpr, int* a_iPos, value_type* a_fVal); | |
| }; | |
| } // namespace mu | |