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

Использование указателя на парсер в boost :: spirit
В основном я занимаюсь парсером выражений. Поскольку мне нужна как можно более высокая производительность, и, согласно документации, построение грамматики может быть довольно медленным, я хотел бы повторно использовать грамматику и связать таблицу...
762 просмотров
schedule 09.11.2021

Boost :: Spirit :: Qi Автоматические правила и условные действия
Это, вероятно, до жалости простой вопрос, тем более что я уже некоторое время успешно использую QI для анализа простых структур и, вероятно, уже должен знать ответ, но он ускользает от меня, несмотря ни на что ... Допустим, у нас есть такой...
628 просмотров
schedule 12.09.2021

boost :: spirit добавить вектор
У меня проблема с вставкой данных в вектор с помощью phoenix::insert . Код должен анализировать ввод, такой как «(move x y z - loc r - robot item)», в struct Predicate с именем «move» и 3 переменными типа loc , 1 переменной типа robot и 1...
1111 просмотров
schedule 17.10.2021

Изменение порядка подправил внутри правила в грамматике boost :: spirit приводит к ошибке segfault
Предупреждение; пока я пытался сократить код до минимума. Мне еще нужно было включить совсем немного, чтобы обеспечить наличие необходимой информации. Этот код компилирует файлы и запускается, что приводит к синтаксической ошибке; name =...
283 просмотров

boost spirit istream_iterator слишком много потребляет из потока
Рассмотрим следующий пример, извлеченный из более сложного кода: #include <boost/fusion/adapted.hpp> #include <boost/fusion/include/std_pair.hpp> #include <boost/phoenix.hpp> #include <boost/spirit/include/qi.hpp> #include...
425 просмотров
schedule 03.12.2021

Boost Spirit Qi: ошибка компиляции при небольшом изменении правила
Я пишу небольшой компилятор просто для удовольствия и использую Boost Spirit Qi для описания своей грамматики. Теперь я хочу внести небольшие изменения в грамматику, чтобы подготовить некоторые дальнейшие дополнения. К сожалению, эти изменения не...
92 просмотров
schedule 06.11.2021

spirit x3 не может распространять атрибуты типа optional ‹vector›
Простой парсер, как на Coliru . Синтаксический анализатор -(+x3::alpha) должен иметь возможность распространять атрибут типа boost::optional<std::string> , как это делает Qi. Но не компилируется. std::string const input = "abc";...
292 просмотров

Атрибуты оператора последовательности и списка в boost.spirit qi?
Я хочу разобрать что-то вроде "{xxxx} {xxxx}" который разделяется eol на vector<vector<wchar_t>> : ({xxxx},{xxxx}) , так что "{" и "}" остаются вместе с внутренними символами. Мой код: #define BOOST_SPIRIT_UNICODE #include...
152 просмотров
schedule 23.09.2021

Boost Spirit получить все совпадение в виде струны
Я пытаюсь определить свою собственную грамматику, используя структуру духа ускорения, и я определяю такое правило сопоставления: value = ( char_('"') >> (*qi::lexeme[ char_('\\') >> char_('\\') |...
2277 просмотров
schedule 21.02.2022

Как передать итератор функции в духе ци
template <typename Iterator> struct parse_grammar : qi::grammar<Iterator, std::string()> { parse_grammar() : parse_grammar::base_type(start_p, "start_p"){ a_p = ',' > qi::double_; b_p = *a_p;...
1630 просмотров
schedule 28.02.2022

Ошибки компиляции шаблона с Boost::Spirit::Qi для простой грамматики
Я пытаюсь разобрать грамматику: @ ( ) используя Boost::Spirit::Qi. Я получил синтаксический анализ, работающий с phrase_parse , и теперь я создаю класс грамматики (шаг за шагом). Вот мои сообщения об ошибках из Visual Studio 2010 (в...
725 просмотров
schedule 02.03.2022

Лексер Boost Spirit констатирует перекрестное опыление
Я пытаюсь использовать состояния лексера для контекстно-зависимого синтаксического анализа, но кажется, что разные состояния лексера перекрестно опыляются. Вот очень простой пример #include <boost/config/warning_disable.hpp> #include...
296 просмотров

Как назначить результат объекта функции локальному объекту в семантическом действии boost :: spirit
Я не совсем уверен, почему следующий код дает мне следующую ошибку в GCC 4.6.3 нет совпадения для 'operator =' in 'boost :: spirit :: _ a = boost :: phoenix :: function :: operator () (const A0 &) const [с A0 = boost :: phoenix :: worker>, F =...
490 просмотров
schedule 11.03.2022

Boost Spirit: семантические действия - зло?
Чтение и просмотр этой презентации: http://boost-spirit.com/home/2011/06/12/ast-construction-with-the-universal-tree/ Я обнаружил это утверждение - в основном нам предлагается не использовать смысловые действия. Должен признать, что я уже...
5389 просмотров
schedule 18.03.2022

Обработка исключения в семантических действиях
Рассмотрим следующий парсер: 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> {...
199 просмотров
schedule 20.03.2022

строка цитаты синтаксического анализа boost не работает
Это мой граммер 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 = '\"' >>...
128 просмотров
schedule 21.03.2022

Сбой компиляции при добавлении qi::lexeme к правилу в духе qi
Я пишу грамматику на С++, используя Spirit Qi из библиотеки Boost. Мне, как новичку в этом языке, было сложно привыкнуть к синтаксису и особенностям библиотеки, но теперь я вроде как понимаю, как она работает. У меня возникает ошибка при...
228 просмотров
schedule 24.03.2022

Определение функции в правиле духа дает предупреждение
Функция qi :: repeat (1,2) в правиле предупреждает меня, и я не хочу игнорировать это предупреждение, поэтому я хочу оптимизировать этот код, например, отделяя правило от метод парсинга. qi :: фразе_parse делает то же самое, что и в правиле...
71 просмотров
schedule 28.03.2022

Захват строки до конца строки с помощью Boost.Spirit.Qi
Я пытаюсь написать пользовательскую структуру для захвата строки до EOL или EOS как часть более крупной грамматики, но я не смог ее скомпилировать. Я следовал коду руководства , но Я не мог понять ошибки в приведенном ниже фрагменте. #include...
43 просмотров

Разбор списка токенов с разделителями с использованием Boost Spirit Qi
Используя boost::spirit::qi, я пытаюсь разобрать строки, состоящие из метки, за которой следует переменное количество токенов с разделителями. Я вызываю грамматику с помощью phrase_parse и использую предоставленный синтаксический анализатор blank...
1216 просмотров
schedule 11.04.2022