Привет всем! Взялся вот изучать boost::spirit, но пока что-то не очень получается.
Есть в библиотеке пример калькулятора формул, самый простой. Пытаюсь его модифицировать, чтобы в произвольном месте в выражении можно было применять идентификатор, значение которого будет браться из переменной с++.
Например:
((12 + 20) / 3.3 * k) / 100, где k переменная, значение которой задается где-то в с++ коде.
Помогите разобраться, пожалуйста
Здравствуйте, Аноним, Вы писали:
А>Привет всем! Взялся вот изучать boost::spirit, но пока что-то не очень получается.
А>Есть в библиотеке пример калькулятора формул, самый простой. Пытаюсь его модифицировать, чтобы в произвольном месте в выражении можно было применять идентификатор, значение которого будет браться из переменной с++.
А>Например:
А>((12 + 20) / 3.3 * k) / 100, где k переменная, значение которой задается где-то в с++ коде.
А>Помогите разобраться, пожалуйста
Можно так:
// Заводим мапку
std::map< std::string, unsigned int > variables;
// Добавляем правило
qi::rule<Iterator, std::string(), ascii::space_type> id;
id %= qi::lexeme[ qi::alpha >> *qi::alnum ];
// Правим правило
factor = id[_val = boost::phoenix::ref( variables )[ _1 ] ]
...
// Добавляем переменные
variables[ "x" ] = 1;
variables[ "y" ] = 2;
variables[ "z" ] = 3;