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

Повышение::Дух::Ци. Как превратить встроенные выражения парсера в автономные грамматики и как распаковать сгенерированные ими кортежи?
Я использую QI и Phoenix и хочу написать небольшую грамматику, которая возвращает 4 логических значения, которые должны использоваться в качестве аргументов для вызова функции внутри семантического действия. У меня есть несколько функций, которым...
3915 просмотров

Есть ли способ составить отдельно скомпилированные грамматики boost::spirit::qi?
Грамматики парсера Boost Spirit Qi замечательны, и я все время использую их для мелких вещей. Однако бывают случаи, когда я хотел бы иметь возможность составлять отдельные грамматики. Это легко сделать все-в-одном в одном компиляторе, #включив...
232 просмотров

Как использовать класс только с одним атрибутом в AST с Boost Spirit?
Я хочу преобразовать файл в AST с помощью Boost Spirit. Корень моего AST — это класс только с одним атрибутом: typedef boost::variant<FunctionDeclaration, GlobalVariableDeclaration> FirstLevelBlock; struct Program {...
163 просмотров
schedule 15.06.2023

Есть ли способ сопоставить содержимое токена строки spirit::lex как литерал в грамматике spirit::qi
Я пишу DSL и использую лексер Boost Spirit для токенизации моего ввода. В моей грамматике мне нужно правило, подобное этому (где tok — лексер): header_block = tok.name >> ':' >> tok.stringval > ';' >>...
561 просмотров

Как использовать синтаксический анализатор qi :: symbols для сопоставления токенов из лексера духа с помощью no_case?
У меня есть лексер, основанный на spirit::lexertl , который производит токены, определенные с помощью lex::token_def<std::string> . Я хотел бы использовать qi::symbols<> таблицу для сопоставления токенов в этой таблице, используя...
471 просмотров

Совместимость атрибутов правила
Я пытаюсь написать синтаксический анализатор, который считывает текстовый файл с объявлениями переменных и экземплярами и создает таблицу переменных, содержащую все объявленные переменные со связанными с ними значениями. Файл выглядит следующим...
68 просмотров
schedule 24.04.2022

Не удается найти причину отсутствия проанализированных атрибутов в парсере Qi JSON
Проблема : Не удается найти причину отсутствия проанализированных атрибутов в синтаксическом анализаторе Qi JSON. Парсер успешно анализирует входную строку, но структура выходных данных, json_object, содержит только первый атрибут...
576 просмотров
schedule 08.02.2023

Boost::spirit::qi, определяющий калькулятор нулевых значений
Я пытаюсь написать синтаксический анализатор математических выражений, в которых именованные переменные являются нулевыми в boost::spirit (версия 1_51_0), в которой я совершенно новичок. Я определяю typedef boost::function<double()> Value ,...
419 просмотров

Усовершенствуйте правило грамматики духа, чтобы извлекать только буквенно-цифровые токены
У меня есть лексема, как показано ниже, для слов, состоящих из букв и цифр. атрибуты = лексема [+ (boost :: spirit :: qi :: alpha | boost :: spirit :: qi :: digit)]; Я хочу иметь правило грамматики, которое пропускает любые другие символы,...
1355 просмотров
schedule 06.04.2023

Boost.Spirit: настройка под грамматики во время синтаксического анализа
Чтобы справиться с большим временем компиляции и повторным использованием грамматик, я разбил свою грамматику на несколько суб-грамматик, которые вызываются последовательно. Одна из них (назовем ее: грамматика SETUP) предлагает некоторую конфигурацию...
483 просмотров
schedule 17.09.2022

идентификатор синтаксического анализа форсированного духа
Я хотел бы создать синтаксический анализатор, который будет анализировать идентификаторы, начинающиеся с альфа или _, и он может иметь альфа, число или _ в теле Это то, что у меня есть до сих пор: #include...
876 просмотров
schedule 31.05.2024

когда я должен выбрать усиление духа attr_cast вместо семантического действия
Это название говорит само за себя. В контексте повышения духа qi я не понимаю, когда attr_cast будет предпочтительнее семантического действия, которое преобразует значение, например: [_val = convert(_1)]
251 просмотров
schedule 13.03.2024

повышение духа on_error не срабатывает
^ Нет, это не так. Это было частью проблемы, но если просмотреть код как есть прямо сейчас, он уже делает то, что показывает указанный вопрос/ответ... и ошибки все еще не запускаются. У меня есть этот синтаксический анализатор для строкового...
554 просмотров
schedule 29.10.2022

Boost.Spirit.Qi аварийно завершает работу при назначении правила последовательности, включающей себя
У меня есть следующий MWE: #include <string> #include <boost/spirit/include/qi.hpp> #include <boost/spirit/include/phoenix.hpp> #include <boost/spirit/include/support_istream_iterator.hpp> namespace spirit =...
470 просмотров
schedule 24.03.2023

Предварительно обработайте пользовательский текстовый файл для удаления комментариев с помощью Boost Spirit
У меня есть текст, содержащий "уравнения" , например: -- This is comment ABC:= 121-XY1/7 > 45 OR SS >= 3 ZY2 AND -- This is another comment (JKL * PQR) < 75; JKL:= PP1 OR PP2/2 XOR PP3; ZZ_1:=A-B > 0 XOR (B2 % GH == 6...
361 просмотров
schedule 09.01.2023

Семантические действия духа после устранения левой рекурсии
Следуя образцу в классическом FAQ по устранению левой рекурсии, я не могу определить правильные заполнители для семантических действий Phoenix. Моя нерабочая грамматика показана ниже: template <typename It, typename Skipper =...
178 просмотров
schedule 23.05.2023

boost::spirit::qi соответствует [] проблемам
У меня проблема с разбором моего проекта. По крайней мере, я нашел минимальный пример кода, на котором появляется проблема. Итак, сейчас пытается разобрать строку "логическая функция1; константная логическая функция2;" Вот минимальный...
277 просмотров

Типы атрибутов Boost::spirit не рушатся
Описание проблемы У меня есть тривиальная структура, адаптированная для boost::fusion : struct Node { std::string text; }; BOOST_FUSION_ADAPT_STRUCT(Node, (std::string, text)) У меня есть грамматика с набором правил:...
386 просмотров
schedule 14.07.2023

Ключевые слова и идентификаторы boost::spirit::qi
Я видел несколько сообщений, связанных с нюансами использования ключевых слов/идентификаторов в грамматиках qi, но я не могу понять, как должен работать подход, продемонстрированный в примерах повышения... Декларация ключевых слов:...
670 просмотров
schedule 07.08.2022

128-битная строка в массив с использованием boost :: spirit :: *
В настоящее время я начинаю с boost :: spirit :: *. Я пытаюсь разобрать 128-битную строку в простой массив c с соответствующим размером. Я создал короткий тест, который выполняет свою работу: boost::spirit::qi::int_parser< boost::uint8_t,...
379 просмотров
schedule 17.08.2022