Вопросы по теме 'boost-spirit-qi'

Разбор строки с помощью Boost Spirit 2 для заполнения данных в определяемой пользователем структуре
Я использую Boost.Spirit, который распространялся вместе с Boost-1.42.0 с VS2005. Моя проблема такова. У меня есть эта строка, разделенная запятыми. Первые 3 поля — это строки, а остальные — числа. нравится....
2191 просмотров
schedule 17.11.2023

Проблема с парсерами Boost Spirit и Lex
Я изо всех сил пытался попытаться (постепенно) изменить пример кода из документации, но с небольшим отличием я не получаю ожидаемого поведения. В частности, оператор «if» терпит неудачу, когда (моя цель состоит в том, что) он должен пройти (было...
3377 просмотров
schedule 25.06.2023

В чем проблема с этим простым парсером boost::spirit::qi?
У меня есть этот простой синтаксический анализатор, предназначенный для анализа строк с двойными кавычками в стиле VB. Таким образом, парсер должен получить что-то вроде "This is a quoted string containing quotes ("" "")" в вывод This is...
962 просмотров
schedule 31.10.2022

Как я могу извлечь std::string с помощью boost.spirit?
Используя boost.spirit, я пытаюсь разобрать простую командную строку вида command:param1 param2... для этого я создал этот парсер: (+(char_ - ':'))[ref(cmd) = _1] >> ':' >> (*char_)[ref(params) = _1] Типы атрибутов двух...
1802 просмотров

Передача строки пути к файлу семантическому действию в Boost.Spirit
Я новичок в Boost.Spirit, и у меня есть вопрос, связанный с мини-интерпретатором, который я пытаюсь реализовать с помощью библиотеки. В качестве подзадачи анализа моего языка мне нужно извлечь путь к файлу из ввода формы: "path =...
987 просмотров
schedule 20.05.2023

Boost.Spirit.Qi: Как сообщить о предупреждениях парсера?
Как сообщить о предупреждениях парсера? Аналогично отчету об ошибке, но синтаксический анализатор не должен останавливаться. Записывать в журнал только предупреждающее сообщение и подвыражение, вызвавшее предупреждение. Пример ввода: select...
439 просмотров

Пропускать части ввода в boost :: spirit :: qi, если вызов функции возвращается true
В последнее время я играл с boost :: spirit :: qi и пытался написать свой собственный (очень, очень простой) язык сценариев, который он будет анализировать. У меня были проблемы, когда я добрался до операторов if в скрипте. Мне нужен синтаксический...
307 просмотров
schedule 04.04.2022

Boost.Spirit, как расширить синтаксический анализ xml?
Я хотел бы расширить синтаксический анализ xml с помощью Boost.Spirit и добавить синтаксический анализ атрибутов xml. Вот пример из библиотеки и некоторые модификации от меня: template <typename Iterator> struct mini_xml_grammar :...
1718 просмотров
schedule 21.09.2023

парсер boost:spirit::qi, использующий несколько грамматик и phoenix::construct
У меня возникли проблемы с написанием грамматики ци, которая использует другую грамматику ци. Аналогичный вопрос был задан здесь , но я также пытаюсь использовать phoenix::construct и испытываю трудности с компиляцией. Вот упрощенная версия того,...
2353 просмотров
schedule 31.07.2023

Семантическое действие Boost.Spirit для разбора строки не работает
Я пытаюсь написать анализатор Boost.Spirit, который анализирует строку, которая должна представлять простую команду, например «print foo.txt». Каждый раз, когда ввод соответствует грамматике, должно вызываться семантическое действие. Вот код:...
953 просмотров
schedule 27.08.2022

Нужен способ префикса парсера boost::spirit::qi с другим
У меня есть много правил, которые выглядят так: cmd_BC = (dlm > timestamp > dlm > cid > dlm > double_) [ _val = lazy_shared<dc::BoardControl>(_1, _2, _3) ]; Я хочу сделать его более...
394 просмотров
schedule 07.08.2022

Анализ ряда именованных наборов других именованных наборов
Итак, я хочу написать... ну... не очень простой парсер с boost::spirit::qi. Я знаю основы буст духа, впервые познакомившись с ним за последние пару часов. В основном мне нужно разобрать это: # comment # other comment set "Myset A" {...
505 просмотров
schedule 21.04.2022

Почему это правило boost :: spirit :: qi не соответствует вводу?
Я попытался продолжить работу над своим предыдущим примером и расширить правила. Моя проблема в том, что правила, использующие ID_IDENTIFIER, не работают, хотя я знаю, что лексер работает (с использованием модульных тестов). Вот пример:...
226 просмотров

Проблема с правилами распространения атрибутов парсера духа
Имею небольшой парсер по духу. Проблема в правилах атрибутов. Правило должно иметь возможность анализировать оба @ATTRIBUTE num NUMERIC @ATTRIBUTE test {привет, мир} typedef std::string::iterator string_iter_t;...
592 просмотров

Как проверить алгебраические утверждения с помощью boost::spirit?
Я пытаюсь расширить пример калькулятора , чтобы вместо разбора и оценки алгебраического выражения синтаксический анализатор определял, является ли алгебраическое утверждение истинным или нет. Под этим я подразумеваю такие операторы, как 1 + 5 * 5 -...
557 просмотров

Парсер Boost.Spirit не соответствует
Мне трудно понять, почему следующий синтаксический анализатор не может проанализировать test . После вызова qi::phrase_parse , result истинно, it2 указывает на конец строки, но mynr по-прежнему 0: std::string test = "#define SOMEMACRO...
353 просмотров
schedule 30.07.2022

разобрать строку в структуру с помощью Boost Spirit
У меня есть следующий код, который мне нужен для анализа строки и перемещения ее в структуру, определенную следующим образом: #include "boost\spirit\include\classic.hpp" #include "boost\spirit\include\qi.hpp" #include...
771 просмотров

Ошибка анализа грамматики с помощью Spirit::Qi
Я новичок в Spirit::Qi и пытаюсь написать простой парсер Wavefront Obj. Я следовал руководствам с сайта документации Boost::Spirit ( ссылка ), и у меня работает большинство встроенных правил. Я начал экспериментировать с грамматиками, но не могу...
555 просмотров
schedule 27.01.2024

Получение boost::spirit::qi для использования контейнеров stl
Я пытаюсь что-то разобрать с помощью библиотеки qi boost.spirit, и у меня возникла проблема. Согласно Spirit docs , a >> b должен создать что-то с типом tuple<A, B> . Но это boost::tuple (он же вектор слияния), а не std::tuple...
1414 просмотров
schedule 26.07.2023

Почему Boost.Spirit корректно разбирает идентификатор в std::string, а не в адаптированную структуру, состоящую исключительно из std::string?
Я определил правило для идентификатора: начинать с буквенного символа, за которым следует любое количество буквенно-цифровых символов. У меня разные результаты, когда я анализирую непосредственно std::string по сравнению с адаптированной...
962 просмотров