00001
00008 #ifndef _NonlinearParser_h
00009 #define _NonlinearParser_h
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #include "Parser.h"
00020 #include "Tokenizer.h"
00021
00022
00023
00024
00025
00026 class NonlinearParser
00027 : public Parser
00028 {
00029 public:
00030
00031
00034 NonlinearParser(void);
00035
00036
00039 ~NonlinearParser(void);
00040
00041
00042
00043
00044
00045
00046 virtual std::auto_ptr<FunctionBase> CreateFunction(
00047 const wxString& input,
00048 VariableNames& rVariables,
00049 bool resetVariables)
00050 const throw(ParseError);
00051
00052
00053
00054
00055
00056 protected:
00057 private:
00059 std::auto_ptr<const FunctionTree> Expression(Tokenizer& rTokenizer) const;
00060
00062 std::auto_ptr<const FunctionTree> Product(Tokenizer& rTokenizer,
00063 bool first = false)
00064 const;
00065
00067 std::auto_ptr<const FunctionTree> Power(Tokenizer& rTokenizer,
00068 bool first = false)
00069 const;
00070
00072 std::auto_ptr<const FunctionTree> Operand(Tokenizer& rTokenizer)
00073 const;
00074
00076 std::auto_ptr<const FunctionTree> Function(Tokenizer& rTokenizer) const;
00077
00079 static Tokenizer::FunctionMap MakeFunctionMap();
00080
00081 const static Tokenizer::FunctionMap mFunctions;
00082 };
00083
00084
00085
00086
00087
00088
00089
00090 #endif // _NonlinearParser_h