Описание тега boost-spirit-qi
None Практичная масштабируемая библиотека синтаксического анализа для C++
1
ответ
Обработка исключений в семантических действиях
Рассмотрим следующий парсер: class test { public: static test from_string(const string &str); //throws! }; template <typename Iterator = string::const_iterator> struct test_parser : grammar<Iterator, test(), blank_type> { test_parser…
28 окт '13 в 08:34
1
ответ
Парсинг std::vector<int> из целых чисел через запятую
Я пытаюсь реализовать очень специфическую грамматику, которая требует от меня в определенный момент для анализа списка целых чисел через запятую. Правило ци выглядит следующим образом: qi::rule<Iterator, ascii::space_type> ident; qi::rule<I…
12 фев '17 в 18:49
1
ответ
Почему я не могу разобрать это double_?
Когда я анализирую входные данные как std::string, я получаю строку, но когда я анализирую это как double_, структура fusion содержит очень небольшое число, а не то, что ожидается. #include <boost/spirit/include/qi.hpp> #include <boost/fusi…
06 ноя '14 в 23:23
1
ответ
Передача строки пути к файлу в семантическое действие в Boost.Spirit
Я новичок в Boost.Spirit, и у меня есть вопрос, связанный с мини-интерпретатором, который я пытаюсь реализовать с помощью библиотеки. В качестве подзадачи анализа моего языка мне нужно извлечь путь к файлу из ввода в форме: "path = \"/path/to/file\"…
02 мар '11 в 12:39
1
ответ
BOOST_FUSION_ADAPT_STRUCT не принимает правильное количество аргументов
Я использую Boost::Spirit для разбора текста в структуры. Это требует использования BOOST_FUSION_ADAPT_STRUCT для анализа текста и непосредственного сохранения в структуре. Я знаю, что макрос принимает 2 аргумента: имя структуры в качестве первого а…
05 авг '11 в 18:36
1
ответ
Boost Spirit QI: автоматическое удержание правила для кортежа с последовательностью внутри альтернативной функции
Я пытаюсь использовать автоматическое удержание для назначения в кортеж из трех элементов. Второй тип - это строка, а третий - вектор строки (тип первого параметра не так важен для этого примера). Я пытаюсь понять, почему следующий код не компилируе…
14 авг '18 в 03:14
1
ответ
spirit::qi:: грамматическое имя с различным размером символа
Я делаю парсер с spirit::qi и стремлюсь сделать его совместимым с разными размерами символов. template < typename Iterator > struct grammar : qi::grammar < Iterator > { grammar () : grammar::base_type ( file, alter_string_size_to < It…
28 янв '12 в 03:30
1
ответ
Не удается увеличить строку цитаты при разборе духа
Это мой грамматик unesc_char.add(L"\\a", L'\a')(L"\\b", L'\b')(L"\\f", L'\f')(L"\\n", L'\n') (L"\\r", L'\r')(L"\\t", L'\t')(L"\\v", L'\v')(L"\\\\", L'\\') (L"\\\'", L'\'')(L"\\\"", L'\"'); unesc_str = '\"' >> *((boost::spirit::standard_wide::c…
22 фев '18 в 11:42
1
ответ
Разбор структуры с массивами с помощью Boost Spirit
Прежде чем я начну, да, я знаю, что есть много постов, связанных с этой темой, я провожу больше дня, читая, но мои знания о Boost::spirit ограничены, поэтому я могу понять, как решить мою проблему. Я беру пример с Boost Employee и модифицирую его, п…
12 апр '15 в 17:43
1
ответ
Создание собственного дерева выражений в духе: Ци (без Utree или Boost::Variant)
Прежде всего, если гораздо проще использовать Boost Variant или Utree, то я с ними соглашаюсь и постараюсь решить свои проблемы с ними в другой теме. Тем не менее, я бы очень хотел иметь возможность построить дерево, как у меня ниже. Фон, игнорируйт…
24 окт '12 в 20:09
1
ответ
Разбор конца фразы перед началом в Boost.Spirit
Я пытаюсь заставить Boost.Spirit разобрать искаженные символы MSVC. Они принимают форму: ?myvolatileStaticMember@myclass@@2HC что означает "volatile int myclass::myvolatileStaticMember". "Ключом" к синтаксическому анализу является двойной символ "@@…
04 дек '12 в 21:56
1
ответ
Boost.Spirit - Как использовать повтор для разбора в структуру?
Я пытаюсь создать небольшую программу для анализа информации об использовании процессора из /proc/stat с помощью Boost.Spirit. В основном это работает, но я не могу заставить мою грамматику компилироваться при использовании repeat. Что мне не хватае…
30 янв '16 в 06:04
0
ответов
Boost:: Spirit добавить вектор
У меня проблема со вставкой данных в вектор с помощью phoenix::insert, Код должен анализировать ввод, такой как "(переместить элемент x y z - loc r - робот) в struct Predicate с именем "move " и 3 переменными типа loc, 1 переменная типа robot и 1 пе…
19 фев '13 в 21:34
2
ответа
Boost Бинарный парсер Endian не работает?
Я изучаю, как использовать двоичный парсер endian. Я пишу небольшую тестовую программу парсера в соответствии с приведенными здесь примерами и примерами, но она не работает должным образом. Это дало мне сообщение:"Ошибка: нет совпадения". Вот мой ко…
19 май '10 в 22:51
0
ответов
Как преобразовать boost::wave::cpplexer::lex_token в число внутри семантического правила Boost Spirit?
У меня есть потомок Spirit от qi::primitive_parser, который возвращает lex_token<>: struct TokenParser : boost::spirit::qi::primitive_parser<TokenParser> { TokenParser(boost::wave::token_id _id) : id(_id) {} template <typename Context, type…
30 апр '15 в 23:04
1
ответ
Разбор химической формулы со смесями элементов
Я хотел бы использовать boost::spirit для извлечения стехиометрии соединений, состоящих из нескольких элементов, из грубой формулы. В данном соединении мой парсер должен уметь различать три вида паттернов химических элементов: природный элемент из с…
21 мар '17 в 20:18
2
ответа
Boost Spirit Qi проверяющий анализатор ввода
У меня есть базовая грамматика Boost Spirit Qi для анализа IP-порта или диапазона IP-портов, т.е. "6322" или же "6322-6325", Грамматика выглядит так: template<class It> void init_port_rule(u16_rule<It>& port) { port = boost::spirit::…
11 ноя '17 в 23:24
1
ответ
C++ Boost Spirit attr_cast не вызывает ожидаемый tranform_attribute
Я работаю над синтаксическим анализатором строковых литералов C++ с бодрым духом. Это то, что я до сих пор: #include <boost/config/warning_disable.hpp> #include <boost/spirit/include/qi.hpp> #include <boost/spirit/include/phoenix.hpp&…
05 окт '13 в 03:57
1
ответ
Как использовать boost::spirit::qi с std::vector<token_type> вместо std::string
В приложении я в основном хочу иметь фазу "предварительного разбора", где я настраиваю поток токенов, прежде чем парсер Q сможет его увидеть. Одним из способов сделать это было бы иметь какой-то "адаптер lexer", который построен из lexer и сам по се…
23 авг '15 в 07:04
1
ответ
Пример парсера ключевого слова Compile Boost Spirit
У меня возникли проблемы с компиляцией примера кода для анализатора ключевых слов boost. я использую boost 1.63.0 а также gcc 6.3.0 и указав C++ 11. Я запустил: g++ -std=c++11 -I boost-1.63-0/include keywords-1.cpp и был поражен массивной стеной оши…
16 мар '17 в 16:08