31 public qi::grammar<std::string::const_iterator,
39 : qi::symbols<typename std::iterator_traits<std::string::const_iterator>::value_type,
51 : qi::symbols<typename std::iterator_traits<std::string::const_iterator>::value_type,
52 std::function<Expression(void)>>
61 std::vector<const TreeNode*>& used);
68 struct variable_ : qi::grammar<std::string::const_iterator,
80 std::vector<const TreeNode*>& used,
83 qi::rule<std::string::const_iterator,
85 ascii::space_type> start;
86 qi::rule<std::string::const_iterator,
88 ascii::space_type> str;
96 : qi::symbols<typename std::iterator_traits<std::string::const_iterator>::value_type,
97 std::function<Expression(Expression&)>>
102 typedef double(*fptr_dd_t)(double);
107 typedef bool(*fptr_bd_t)(
long double);
112 ufunc_(std::vector<const TreeNode*>& already_used);
121 : qi::symbols<typename std::iterator_traits<std::string::const_iterator>::value_type,
122 std::function<Expression(Expression&, Expression&)>>
127 typedef double(*fptr_ddd_t)(double, double);
133 typedef const double&(*fptr_drdrdrt)(
const double&,
const double&);
138 bfunc_(
const std::vector<const TreeNode*>& already_used);
147 : qi::symbols<typename std::iterator_traits<std::string::const_iterator>::value_type,
148 std::function<Expression(Expression&, Expression&, Expression&)>>
153 typedef double(*fptr_dddd_t)(double, double, double);
159 typedef const double&(*fptr_drdrdrdrt)(
const double&,
const double&,
const double&);
164 tfunc_(
const std::vector<const TreeNode*>& already_used);
171 struct constants_ constants;
172 struct builtin_vars_ builtin_vars;
176 struct variable_ var;
189 std::vector<const TreeNode*> already_used_;
194 typedef qi::rule<std::string::const_iterator,
196 ascii::space_type> ExpressionRule;
198 ExpressionRule expression,
216 std::vector<const TreeNode*>& already_used,