Вопросы по теме 'boost-spirit-qi'
Правило Boost Spirit с анализом настраиваемых атрибутов
Я пишу грамматику Boost Spirit для разбора текста на вектор этих структур:
struct Pair
{
double a;
double b;
};
BOOST_FUSION_ADAPT_STRUCT(
Pair,
(double, a)
(double, a)
)
В этой грамматике есть такое правило:...
1746 просмотров
schedule
26.03.2022
Семантические действия и параметры Ци Духа для функций, не связанных с парсером
Как мне объявить семантическое действие, которое вызывает свободную функцию, которая не использует атрибут, возвращенный правилом/парсером?
Допустим, у нас есть синтаксический анализатор, который возвращает строку, но я хочу вызвать несвязанную...
486 просмотров
schedule
21.10.2022
Динамическое объединение правил Boost.Spirit.Qi во время выполнения (произвольное количество альтернатив)
Мне было интересно, есть ли способ в Boost.Spirit.Qi динамически комбинировать произвольное количество правил во время выполнения. Внутренняя работа Boost.Spirit до сих пор остается для меня загадкой, но, поскольку правила реализованы в виде...
1337 просмотров
schedule
14.08.2022
Ошибка сегментации с тривиальной грамматикой 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 просмотров
schedule
06.07.2023
Парсер символов 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 просмотров
schedule
11.11.2022
Как использовать boost::spirit для анализа последовательности слов в вектор?
Я пытаюсь научиться boost::spirit . Например, я пытаюсь разобрать последовательность слов на vector<string> . Я пробовал это:
#include <boost/spirit/include/qi.hpp>
#include <boost/foreach.hpp>
namespace qi =...
3754 просмотров
schedule
16.01.2023
Ошибка при использовании boost::spirit::qi::phrase_parse() с qi::grammar
Я делаю анализатор сообщений IRC с помощью Boost.Spirit , но получаю (очень длинную) ошибку, когда пытаюсь проанализировать ввод. Я следил за " римские цифры ". Кроме того, я использую g++4.7 с -std=c++11 . Ошибка возникает только тогда, когда...
1058 просмотров
schedule
05.02.2023
Устранение синтаксического сахара с помощью Spirit.Qi
Я пытаюсь разобрать язык, похожий на шепелявость, в котором есть синтаксический сахар для общих функций. Например, функция plus может быть записана как (+ 1 2) или как 1 + 2. Я думаю, что устранение синтаксического сахара перед попыткой интерпретации...
116 просмотров
schedule
03.07.2023
Разбор строки в кавычках работает только в некоторых случаях
Я столкнулся с чем-то странным при попытке разобрать простые строки в кавычках. Итак, я написал этот простой синтаксический анализатор, который успешно анализирует строки в кавычках, такие как "string" или "" .
#include <iostream>...
224 просмотров
schedule
22.02.2024
повысить дух qi on_error передать структуру error_handler по ссылке
У меня есть еще одна проблема с блокировщиком Spirit Qi.
Я реализовал обработку ошибок в структуре функтора под названием error_handler. Это передается конструктору грамматики по ссылке (см. пример MiniC для Qi).
Затем у меня есть...
2089 просмотров
schedule
28.09.2022
Используйте Boost Phoenix в Qi для ссылки на предыдущее совпадение в грамматике
Я новичок в Boost Spirit. В идеале я бы хотел, чтобы в моей грамматике было два значения одновременно, используя Phoenix. Урезанная версия того, что я пытаюсь заставить работать, будет кортежем, в котором оба целых числа равны.
Мне бы хотелось,...
724 просмотров
schedule
04.11.2022
Boost Spirit, как получить доступ к дочерним узлам (листьям) из родительских узлов
Я хотел бы оценить логическое выражение, такое как a = b & s ‹9 или просто a = b, только с оператором сравнения (без логического оператора, такого как |, & и!). У нас может быть следующий AST:
=
/ \
/ \...
211 просмотров
schedule
23.10.2022
Как правильно разобрать зарезервированные слова в Boost Spirit
Я пытаюсь разобрать последовательность синтаксиса: ‹ направление > ‹ тип > ‹ имя >. Например:
in float foo
где направление может быть внутрь , наружу или внутрь_наружу . Мне удалось проанализировать правильный текст, используя класс...
773 просмотров
schedule
03.06.2023
Проблема анализа Spirit Qi с простым структурированным вводом в стиле C
Я пытаюсь настроить базовый синтаксический анализатор для некоторых игровых данных, который использует знакомый и очень простой формат «C-style». В основном, называя фигурные скобки «структуры», затем помещая параметры и вложенные «структуры» внутрь....
114 просмотров
schedule
31.03.2022
Разобрать строку, содержащую литерал, с помощью 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