12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- /* Copyright 2010 Juan Rada-Vilela
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
- http://www.apache.org/licenses/LICENSE-2.0
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- */
- /*
- * File: InfixToPostfix.h
- * Author: jcrada
- *
- * Created on March 6, 2010, 1:14 AM
- */
- #ifndef _INFIXTOPOSTFIX_H
- #define _INFIXTOPOSTFIX_H
- #include <vector>
- #include <string>
- #include <map>
- #include "flScalar.h"
- namespace fl {
- class InfixToPostfix {
- private:
- std::vector<std::string> _operators;
- protected:
- virtual std::string preprocess(const std::string& infix) const;
- public:
- InfixToPostfix();
- virtual ~InfixToPostfix();
- virtual void addOperator(const std::string& op, int precedence = 0);
- virtual std::string removeOperator(int index);
- virtual std::string getOperator(int index) const;
- virtual int operatorPrecedence(const std::string& op) const;
- virtual int numberOfOperators() const;
- virtual bool isOperator(const std::string& op) const;
- virtual bool isUnaryOperator(const std::string op) const;
- virtual bool isOperand(const std::string& op) const;
- virtual bool isNumeric(const std::string& op) const;
- virtual void loadLogicalOperators();
- virtual void loadMathOperators();
- virtual std::string transform(const std::string& infix) const;
- virtual flScalar evaluate(const std::string postfix,
- const std::map<std::string, flScalar>* variables = NULL) const;
- virtual flScalar compute(const std::string& op, flScalar a, flScalar b) const;
- static void main(int args, char** argv);
- };
- }
- #endif /* _INFIXTOPOSTFIX_H */
|