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

Обработка побегов с помощью Spirit Parser Framework
Я пытаюсь разобрать строку, похожую на следующую, с помощью синтаксического анализатора духа: <junk> -somearg#this is a string with a literal ## in it# <junk> То, что я ищу, - это грамматика, которая может извлекать часть внутри...
155 просмотров
schedule 27.06.2022

Как вы используете переменную, хранящуюся в замыкании духа ускорения, в качестве входных данных для синтаксического анализатора цикла ускорения?
Я хотел бы использовать проанализированное значение в качестве входных данных для синтаксического анализатора цикла. Грамматика определяет заголовок, который определяет (переменный) размер следующей строки. Например, предположим, что следующая...
1959 просмотров
schedule 24.04.2022

Пример простого синтаксического анализатора выражений с использованием Boost::Spirit?
Кто-нибудь знает об онлайн-ресурсе, где я могу узнать, как написать простой анализатор выражений, используя Boost::Spirit?. Мне не обязательно оценивать выражение, но мне нужно проанализировать его и иметь возможность вернуть логическое значение,...
10690 просмотров
schedule 22.12.2022

Ошибка с заполнителем Phoenix _val в Boost.Spirit.Lex :(
Я новичок в Boost.Spirit.Lex. Какая-то странная ошибка возникает каждый раз, когда я пытаюсь использовать lex::_val в действиях семантики в моем простом лексере: #ifndef _TOKENS_H_ #define _TOKENS_H_ #include <iostream> #include...
886 просмотров
schedule 11.04.2023

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

Получение результата от грамматики Boost Spirit (phoenix push_back вызывает ошибку компиляции)
У меня есть следующая грамматика духа. Я пытаюсь создать вектор узла AST в struct myresult , используя стандартный push_back(at_c<0>(qi::_val), qi::_1) , но получаю ошибки компиляции (см. ниже). typedef vector<ZLS::ASTNode*>...
1636 просмотров
schedule 21.01.2023

Boost :: Spirit :: Qi автоправила, предотвращающие повторное копирование структур данных AST
Я использовал Qi и Karma для обработки нескольких небольших языков. Большинство грамматик довольно маленькие (20-40 правил). Я мог использовать автоправила почти исключительно, поэтому мои деревья синтаксического анализа полностью состоят из...
488 просмотров
schedule 01.11.2022

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

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

Вариант Boost: как моделировать JSON?
Я пытаюсь разобрать строку JSON, используя объект JSON хранилища Boost Spirit, в рекурсивные структуры данных: Value <== [null, bool, long, double, std::string, Array, Object]; Array <== [Value, Value, Value, ...]; Object <== ["name1":...
2407 просмотров
schedule 22.08.2022

повысить дух динамического лексера с номерами столбцов?
У меня возникли проблемы с созданием лексера динамического повышения духа, который отслеживает номер столбца. Это возможно? Кто-нибудь может привести простой пример? Спасибо!
270 просмотров
schedule 03.11.2022

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

Как преобразовать значение токена boost::spirit::lex из iterator_range в строку?
Когда я пытаюсь преобразовать значение токена из iterator_range, лексер терпит неудачу при попытке прочитать следующий токен. Вот структура Tokens, которая содержит определения токенов: (Я не думаю, что это актуально, но я включаю на всякий...
1523 просмотров
schedule 19.03.2022

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

Как игнорировать разделитель, когда он прокомментирован или процитирован
Я пишу парсер для поиска выражений конкатенации строк. У меня есть ряд строк, заключенных в круглые скобки, в основном возникших в результате вызова функции. Например, ("one"+"two"+"three") -> ("one"|"two"|"three") — это простой случай, и я...
1337 просмотров
schedule 01.05.2022

Ошибка при использовании 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 просмотров

Парсер строк с рекурсивной оболочкой варианта boost
Приведенный ниже код (адаптированный из примера spirit qi mini_xml) не компилируется. Существует ошибка, связанная с правилом brac , которое имеет атрибут рекурсивного boost::variant . Однако все закомментированные версии brac компилируются....
1403 просмотров
schedule 29.11.2022

Boost::Spirit результат фразы_parse
Привет всем, я новичок в бусте и бусте:: дух, поэтому прошу прощения за нубский вопрос. Когда я использую qi::phrase_parse function, функция возвращает только логическую переменную, которая указывает, был ли синтаксический анализ успешным или нет,...
5627 просмотров
schedule 13.09.2022

Ассоциативный анализ структуры с помощью Boost Spirit и Fusion
Я пытаюсь преобразовать строку значения ключа в структуру. Некоторые пары "ключ-значение" могут отсутствовать или располагаться в другом порядке, поэтому я хотел использовать boost::fusion , чтобы адаптировать структуру, а затем проанализировать ее...
1265 просмотров
schedule 20.09.2022