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

Таблицы символов Boost Spirit (X3), приводящие к строкам UTF8
Я пытаюсь разобрать escape-коды LaTeX (например, \alpha ) в символы Unicode (математические) (например, U+1D6FC ). Прямо сейчас это означает, что я использую этот symbols парсер (правило): struct greek_lower_case_letters_ :...
868 просмотров

Как мне заставить это рекурсивное правило работать?
Я хочу разобрать (в первую очередь, только распознать, сохранив символы) математику LaTeX. Прямо сейчас у меня проблемы с надстрочными и нижними индексами в сочетании с фигурными скобками (например, a^{bc} и их комбинациями, у меня базовый a^b...
423 просмотров

Boost Spirit X3 Пропустить реализацию парсера?
Для текущей грамматики, которую я анализирую с помощью X3, пробелы и комментарии в стиле Perl игнорируются. Мне кажется, что парсер пропуска в X3 - это просто обычный парсер, и любой ввод, который он потребляет, считается «пропущенным». Я придумал...
2060 просмотров
schedule 25.02.2023

парсинг идентификаторов, кроме ключевых слов
Я изо всех сил пытаюсь написать синтаксический анализатор идентификаторов, который анализирует буквенную строку, которая не является ключевым словом. ключевые слова все в таблице: struct keywords_t : x3::symbols<x3::unused_type> {...
654 просмотров

Получу ли я более быстрый синтаксический анализатор с помощью Spirit X3, когда я использую оператор ожидания?
В духе X3 я могу построить парсер следующим образом: const auto p = ("Number:" >> x3::_int) | ("String:" >> +x3::alpha); Если я знаю, что после строки Number идет целое число, а после String все время идет строка,...
89 просмотров

boost spirit x3 двойной парсер с ограничениями
В настоящее время я разбираю дубликаты с помощью boost spirit x3 с помощью этого парсера: boost::spirit::x3::real_parser<double, x3::strict_real_policies<double> > const strict_double = {}; но он также анализирует двойники, такие...
213 просмотров
schedule 03.01.2023

Как переписать парсеры qi с унаследованными атрибутами в x3?
Если унаследованные атрибуты используются в семантических действиях, мы можем использовать директиву x3::with . Что, если мы хотим использовать атрибуты как часть парсера? Например, простой синтаксический анализатор сопоставляет 1 или более...
268 просмотров

использование логического атрибута вместо необязательного в духе x3
В грамматике, которую я хочу реализовать, есть некоторые ключевые слова, где значение перечисления имеет значение (хранение идентификатора перечисления конкретного ключевого слова внутри узла ast) или даже только существование одного и того же...
365 просмотров
schedule 02.04.2023

Правило синтаксического анализа X3 не компилируется
Я изучаю Boost Spirit, написав парсер, который анализирует два варианта шестнадцатеричного числа, используемого NAMS: Шестнадцатеричный номер с суффиксом _1 _ / _ 2_ или префиксом _3 _ / _ 4_. Шестнадцатеричный номер с префиксом $ , за которым...
330 просмотров
schedule 10.04.2022

Spirit X3 не бросает ожидание провала
В документации сказано, что когда я использую оператор ожидания, я должен получить expectation_failure, когда оператор не соответствует. Я хочу поймать исключение, чтобы указать пользователю, где находится ошибочный ввод. Но, похоже, вместо этого я...
124 просмотров
schedule 11.07.2022

Разбирать SQL-подобный запрос с помощью Boost Spirit x3
Я пытаюсь разобрать простой SQL-запрос, используя boost spirit x3. Был похожий пост для предыдущей версии дух. Но с Spirit x3 нам не нужна грамматика. Итак, вот моя попытка: // SELECT chr, pos FROM table // Select chr, pos FROM table WHERE...
187 просмотров
schedule 15.05.2022

Spirit.X3 с лямбдой, возвращающей разные типы парсеров
Здесь я пытаюсь преобразовать строковый литерал в число, где базовый спецификатор является динамическим: #include <string> #include <boost/spirit/home/x3.hpp> namespace ast { struct literal { enum base_specifier { bin,...
250 просмотров
schedule 29.04.2023

Разбор Boost Spirit x3 в структуру с одним полем
Я продолжаю следить за примерами духов буста и столкнулся со следующей проблемой. (я думаю, что это было где-то описано как ошибка в коде, но я могу ошибаться) Проще говоря: Parser не собирался при попытке синтаксического анализа в структуру с...
195 просмотров
schedule 03.03.2024

Правило X3 для разбора `int_`, а затем повторяющихся удвоений, равных этому `int_`
Немного сложное название, но я хочу разобрать что-то вроде этого: int_ >> repeat(N)[double_] Но я бы хотел, чтобы N было равно тому, что int_ анализирует до Как это сделать с помощью Boost.Spirit.X3?
84 просмотров
schedule 02.05.2023

Spirit X3, два правила не компилируются после объединения в одно
В настоящее время я изучаю, как использовать x3. Как говорится в заголовке, мне удалось создать грамматику с несколькими простыми правилами, но при объединении двух из этих правил в одно код больше не компилируется. Вот код для части AST:...
122 просмотров
schedule 31.10.2022

Улучшения в директиве повтора с переменным коэффициентом для X3
Мне нужно проанализировать последовательность элементов, где есть первое число, указывающее, сколько элементов должно быть проанализировано следующим. В качестве упрощения того, что мне нужно: [3 10 20 30] следует анализировать, как показано ниже:...
124 просмотров
schedule 17.10.2022

Член кортежа Boost Spirit x3 в адаптированной для слияния структуре
Следующий тестовый пример - это сокращение более крупного многофайлового парсера, отсюда несколько странный порядок объявлений и определений. Он не компилируется, и я понимаю, что std::tuple его запускает. Из документации мне кажется, что в...
79 просмотров
schedule 04.06.2023

Синтаксический анализатор условных (тернарных) операторов Boost Spirit x3
Мне нужно построить абстрактное синтаксическое дерево из математического выражения, которое позже мне понадобится, чтобы связать объекты, зависящие от предметной области, вместе в виде дерева вычислений. Я нашел библиотеку синтаксического анализатора...
180 просмотров
schedule 23.04.2023

Рекомендации по производительности Boost Spirit (анализ даты)
Я реорганизовал (пока изучал) некоторые существующие процедуры синтаксического анализа даты с ручным массажем с помощью Boost Spirit. Моя основная цель состояла в том, чтобы попытаться создать единый и унифицированный интерфейс, чтобы иметь...
126 просмотров
schedule 25.02.2023