Вопросы по теме 'boost-spirit-qi'
Повышение::Дух::Ци. Как превратить встроенные выражения парсера в автономные грамматики и как распаковать сгенерированные ими кортежи?
Я использую QI и Phoenix и хочу написать небольшую грамматику, которая возвращает 4 логических значения, которые должны использоваться в качестве аргументов для вызова функции внутри семантического действия.
У меня есть несколько функций, которым...
3915 просмотров
schedule
23.06.2022
Есть ли способ составить отдельно скомпилированные грамматики boost::spirit::qi?
Грамматики парсера Boost Spirit Qi замечательны, и я все время использую их для мелких вещей. Однако бывают случаи, когда я хотел бы иметь возможность составлять отдельные грамматики.
Это легко сделать все-в-одном в одном компиляторе, #включив...
232 просмотров
schedule
15.02.2023
Как использовать класс только с одним атрибутом в 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 просмотров
schedule
12.04.2022
Как использовать синтаксический анализатор qi :: symbols для сопоставления токенов из лексера духа с помощью no_case?
У меня есть лексер, основанный на spirit::lexertl , который производит токены, определенные с помощью lex::token_def<std::string> . Я хотел бы использовать qi::symbols<> таблицу для сопоставления токенов в этой таблице, используя...
471 просмотров
schedule
07.07.2022
Совместимость атрибутов правила
Я пытаюсь написать синтаксический анализатор, который считывает текстовый файл с объявлениями переменных и экземплярами и создает таблицу переменных, содержащую все объявленные переменные со связанными с ними значениями.
Файл выглядит следующим...
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 просмотров
schedule
26.06.2023
Усовершенствуйте правило грамматики духа, чтобы извлекать только буквенно-цифровые токены
У меня есть лексема, как показано ниже, для слов, состоящих из букв и цифр.
атрибуты = лексема [+ (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 просмотров
schedule
30.04.2022
Типы атрибутов 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