У меня есть несколько простая проблема, с которой я как-то не могу найти ответы. Работая над разбором более крупной грамматики, я обнаружил, что синтаксический анализ любой строки больше, чем 15 символов, приведет к тому, что парсер вернется с ошибкой. Анализатор выглядит следующим образом:Синхронизация строки с более чем 15 символами с boost-spirit
namespace parser {
template <typename Iterator>
struct p_grammar : qi::grammar<Iterator, standard::space_type> {
p_grammar() : p_grammar::base_type(spec) {
spec = "qwertyuiopasdfgh";
}
qi::rule<Iterator, standard::space_type> spec;
};
И будет работать из другой функции:
void MainWindow::parserTest() {
typedef parser::p_grammar<std::string::const_iterator> p_grammar;
p_grammar grammar;
using boost::spirit::standard::space;
std::string::const_iterator iter = editor->toPlainText().toStdString().begin();
std::string::const_iterator end = editor->toPlainText().toStdString().end();
if (phrase_parse(iter,end,grammar,space)) {
outputLog->append("Parsing succesfull");
} else {
outputLog->append("Parsing failed");
}
}
Удаление последнего символа в «qwertyuiopasdfgh», так что только 15 символов присутствуют, делает его разобрать без разрушения ,
Почувствуйте, что я не замечаю здесь ничего очевидного.