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

Правило Boost Spirit с анализом настраиваемых атрибутов
Я пишу грамматику Boost Spirit для разбора текста на вектор этих структур: struct Pair { double a; double b; }; BOOST_FUSION_ADAPT_STRUCT( Pair, (double, a) (double, a) ) В этой грамматике есть такое правило:...
1746 просмотров

Семантические действия и параметры Ци Духа для функций, не связанных с парсером
Как мне объявить семантическое действие, которое вызывает свободную функцию, которая не использует атрибут, возвращенный правилом/парсером? Допустим, у нас есть синтаксический анализатор, который возвращает строку, но я хочу вызвать несвязанную...
486 просмотров
schedule 21.10.2022

Динамическое объединение правил Boost.Spirit.Qi во время выполнения (произвольное количество альтернатив)
Мне было интересно, есть ли способ в Boost.Spirit.Qi динамически комбинировать произвольное количество правил во время выполнения. Внутренняя работа Boost.Spirit до сих пор остается для меня загадкой, но, поскольку правила реализованы в виде...
1337 просмотров

Ошибка сегментации с тривиальной грамматикой Spirit Parser
Я сталкиваюсь с частыми segfaults с моим парсером Spirit Qi. Потратив несколько дней на отладку проблемы (я обнаружил, что трассировку стека невозможно найти), я решил сократить ее до минимального примера. Может ли кто-нибудь сказать, что я делаю...
811 просмотров
schedule 15.07.2022

Как добавить qi::symbols в грамматику‹Iterator,double()›?
Я пытаюсь использовать библиотеку Boost.Spirit (V. 2.5) для создания мини-калькулятора. Возможности, которые я хочу реализовать: - базовое исчисление (+,-,/,*), которое работает - некоторые функции (например, min, max), которые тоже работают -...
1621 просмотров
schedule 16.07.2022

Предоставление значений по умолчанию для атрибутов парсера в boost::spirit
Я внедрял boost::spirit в проект, и одной из моих задач является парсинг непосредственно в контейнере типа: map<string, string> Я почти на месте. Проблема, с которой я столкнулся, заключается в автоматическом присвоении значения ключа...
161 просмотров
schedule 27.04.2023

Boost Spirit Auto Parser терпит неудачу для кортежа двойников
В следующем коде я пытаюсь использовать Boost Spirit Auto Parser для последовательности или двух двойников, но не компилируется. Что я здесь делаю неправильно? // file main.cpp #include <boost/tuple/tuple.hpp> #include...
362 просмотров

Парсер символов Boost Spirit
Вот пример кода: // file main.cpp #include <iostream> #include <boost/tuple/tuple.hpp> #include <boost/tuple/tuple_io.hpp> #include <boost/spirit/include/qi.hpp> int main() { std::string s( "1 A" );...
271 просмотров

Как использовать boost::spirit для анализа последовательности слов в вектор?
Я пытаюсь научиться boost::spirit . Например, я пытаюсь разобрать последовательность слов на vector<string> . Я пробовал это: #include <boost/spirit/include/qi.hpp> #include <boost/foreach.hpp> namespace qi =...
3754 просмотров

Ошибка при использовании boost::spirit::qi::phrase_parse() с qi::grammar
Я делаю анализатор сообщений IRC с помощью Boost.Spirit , но получаю (очень длинную) ошибку, когда пытаюсь проанализировать ввод. Я следил за " римские цифры ". Кроме того, я использую g++4.7 с -std=c++11 . Ошибка возникает только тогда, когда...
1058 просмотров

Устранение синтаксического сахара с помощью Spirit.Qi
Я пытаюсь разобрать язык, похожий на шепелявость, в котором есть синтаксический сахар для общих функций. Например, функция plus может быть записана как (+ 1 2) или как 1 + 2. Я думаю, что устранение синтаксического сахара перед попыткой интерпретации...
116 просмотров

Разбор строки в кавычках работает только в некоторых случаях
Я столкнулся с чем-то странным при попытке разобрать простые строки в кавычках. Итак, я написал этот простой синтаксический анализатор, который успешно анализирует строки в кавычках, такие как "string" или "" . #include <iostream>...
224 просмотров
schedule 22.02.2024

повысить дух qi on_error передать структуру error_handler по ссылке
У меня есть еще одна проблема с блокировщиком Spirit Qi. Я реализовал обработку ошибок в структуре функтора под названием error_handler. Это передается конструктору грамматики по ссылке (см. пример MiniC для Qi). Затем у меня есть...
2089 просмотров

Используйте Boost Phoenix в Qi для ссылки на предыдущее совпадение в грамматике
Я новичок в Boost Spirit. В идеале я бы хотел, чтобы в моей грамматике было два значения одновременно, используя Phoenix. Урезанная версия того, что я пытаюсь заставить работать, будет кортежем, в котором оба целых числа равны. Мне бы хотелось,...
724 просмотров

Boost Spirit, как получить доступ к дочерним узлам (листьям) из родительских узлов
Я хотел бы оценить логическое выражение, такое как a = b & s ‹9 или просто a = b, только с оператором сравнения (без логического оператора, такого как |, & и!). У нас может быть следующий AST: = / \ / \...
211 просмотров
schedule 23.10.2022

Как правильно разобрать зарезервированные слова в Boost Spirit
Я пытаюсь разобрать последовательность синтаксиса: ‹ направление > ‹ тип > ‹ имя >. Например: in float foo где направление может быть внутрь , наружу или внутрь_наружу . Мне удалось проанализировать правильный текст, используя класс...
773 просмотров

Проблема анализа Spirit Qi с простым структурированным вводом в стиле C
Я пытаюсь настроить базовый синтаксический анализатор для некоторых игровых данных, который использует знакомый и очень простой формат «C-style». В основном, называя фигурные скобки «структуры», затем помещая параметры и вложенные «структуры» внутрь....
114 просмотров

Разобрать строку, содержащую литерал, с помощью Boost Spirit Qi
Я хотел бы разобрать строку следующим образом: <stuff I don't care> <literal value> <more stuff I don't care> с boost::spirit::qi . Предположим, что <literal value> , например. ABC , то я бы хотел, чтобы парсер...
888 просмотров
schedule 02.08.2023

импульсный дух выбирает непревзойденный результат
У меня есть файл следующего формата metal 1 1.2 2.2 wire 1.1 2.3 metal 2 3.2 12.2 ... Это очень простой формат. "металл" и "проволока" являются ключевыми словами. А за «металлом» следует 1 uint и 2 двойных, а за «wire» — 2 двойных. Я...
80 просмотров
schedule 06.02.2023

Определение шкипера в отдельной единице перевода с помощью Boost.Spirit X3
Как определить грамматику шкипера в отдельной единице перевода? Какой тип выходного атрибута должен быть? Или я могу просто указать boost::spirit::x3::unused_type в качестве параметра шаблона Attribute для класса шаблона boost::spirit::x3::rule...
436 просмотров
schedule 30.03.2023