Описание тега boost-spirit-x3
Структура парсера LL представляет парсеры непосредственно как грамматики EBNF во встроенном C++14.
1
ответ
Парсеры Spirit-X3, хранящиеся в переменных шаблонах, не работают на Clang
У меня есть работающий синтаксический анализатор Spirit-X3, который может анализировать две тесно связанные грамматики для настройки положений черновиков и шашек. Я определяю две переменные специализации шаблонов как парсеры для двух диалектов грамм…
03 сен '16 в 13:23
2
ответа
Связывание ошибок при отдельном парсере с использованием boost spirit x3
Я пытаюсь разделить мой анализатор Boost Spirit x3 на разные файлы _def и.cpp, используя BOOST_SPIRIT_DEFINE/DECLARE/INSTANTIATE, но я продолжаю получать ошибку связывания. ЗДЕСЬ мой парсер, который отделен. Ошибка компоновщика читает <artificial…
08 ноя '16 в 21:03
1
ответ
Boost.spirit (x3, boost 1.64): как правильно реализовать это рекурсивное правило, возможно ли это?
Вопрос легко сформулировать. У меня есть рекурсивное правило, я не знаю синтезированный тип атрибута для правила, но у меня также есть еще несколько вопросов о внутренней работе. Мне кажется, что возвращаемый тип variant<tuple<return_type_of_a…
14 сен '17 в 03:20
1
ответ
Разбор списка строк с последующим списком строк с Spirit x3
Я пытаюсь разобрать строку в структуре с помощью Boost Spirit X3: struct identifier { std::vector<std::string> namespaces; std::vector<std::string> classes; std::string identifier; }; Теперь у меня есть правило синтаксического анализатор…
22 июл '16 в 14:41
1
ответ
boost.spirit x3 move_to и список участников
У BNF, который я реализую, есть забавное правило, где, в зависимости от оператора, термины могут быть объединены в цепочку или событие не входит в это производственное правило. Следовательно, я использую ту же структуру данных AST, поскольку изменяе…
17 апр '17 в 18:16
1
ответ
Boost Spirit x3 разобрать в структуру с пропуском члена, если он пуст
Я пытаюсь выяснить способ разбора следующих текстов function() {body ...} function(args_) {body...} Должен ли я использовать одну и ту же структуру для обоих вариантов, или это можно сделать только с одной структурой struct function { std::string na…
11 окт '18 в 01:03
1
ответ
Разбор пары строк не удается. Плохой дух x3 грамматика
Я хотел бы проанализировать пары ключ-значение, отображая строки в строки. Так как я хочу поддерживать блоки { ... } для правой части я придумал простую грамматику, чтобы начать с #include <boost/spirit/home/x3.hpp> #include <boost/fusion/i…
29 сен '16 в 21:54
1
ответ
Boost Spirit X3 AST не работает с семантическими действиями при использовании отдельного определения и создания экземпляра правила
Я пытаюсь использовать Boost Spirit X3 с семантическими действиями при анализе структуры в AST. Если я использую правило без отдельного определения и создания экземпляра, оно работает просто отлично, например: #include <vector> #include <st…
26 ноя '15 в 02:54
0
ответов
Положение аннотации для последовательностей в Spirit X3
Что считается хорошей формой для добавления аннотаций позиций для правил, которые возвращают последовательности? Предполагая, что у меня есть правило в моей грамматике вида: const auto array_def = '[' >> *int_ >> ']'; который синтезирует…
02 янв '19 в 21:14
2
ответа
Boost Spirit - проект строится с -O1, но не с -O2
У меня есть небольшой проект (похожий на их пример - https://github.com/cierelabs/x3_fun/), использующий Boost Spirit X3, и он построен на отладке, но не на выпуске. Рекомендация о структуре программы X3 + другой пример: https://www.boost.org/doc/li…
07 янв '19 в 18:47
1
ответ
Boost spirit x3, вставляя пустые строки во время прямого анализа
Я пытаюсь проанализировать некоторые текстовые файлы с помощью анализатора Boost X3, и я обнаружил некоторые различия при использовании лямбда-функции или при использовании "прямых" правил синтаксического анализа. Мой пример кода следующий: #include…
22 янв '19 в 01:12
1
ответ
Анализатор Boost Spirit x3 не работает с несколькими атрибутами
Функция парсера Spirit X3 работает хорошо, используя 1 атрибут. Когда я пытаюсь скомпилировать код из документации с несколькими атрибутами, это не работает. #include <boost/spirit/home/x3.hpp> #include <iostream> using namespace std; us…
29 дек '17 в 17:16
1
ответ
Расположение AST во время аннотации и после
Помеченные узлы AST можно посетить во время синтаксического анализа в X3 с помощью annotation_base::on_success, Могу ли я получить их адреса (и сохранить, а также другую информацию, например, соответствующую пару итераторов входного диапазона) и рас…
23 янв '16 в 11:39
1
ответ
Spirit X3: парсер с внутренним состоянием
Я хочу эффективно анализировать большие CSV-подобные файлы, порядок столбцов которых я получаю во время выполнения. С помощью Spirit Qi я бы проанализировал каждое поле lazy вспомогательный синтаксический анализатор, который во время выполнения выби…
12 июн '18 в 16:31
1
ответ
Где буст-спирит 3? Это заброшено?
Я не могу найти никакой загрузки для Boost Spirit 3. Похоже, официальный сайт перестал говорить об этом в конце декабря? Куда это делось?
15 мар '17 в 01:53
2
ответа
Разбор идентификаторов, кроме ключевых слов
Я изо всех сил пишу анализатор идентификатора, который анализирует строку алфавита, который не является ключевым словом. все ключевые слова находятся в таблице: struct keywords_t : x3::symbols<x3::unused_type> { keywords_t() { add("for", x3::u…
26 июн '16 в 13:59
1
ответ
Разобрать в вектор<boost:: string_view> используя boost::spirit::x3
Это дополнительный вопрос к моему предыдущему boost::spirit::x3 а также boost::string_view, Пока я могу разобрать в std::vector<std::string> ( живой пример), разбирая в std::vector<boost::string_view> завершается со следующими ошибками к…
30 авг '16 в 14:25
0
ответов
Сцепление семантических действий
У меня проблемы с цепочкой семантических действий. Хочу разобрать процент (X% с X действительное число) и вернуть его значение в виде числа с плавающей точкой от 0 до 1. Я также хочу потерпеть неудачу, если процент выше, чем 100%. В настоящее время …
06 дек '18 в 19:12
1
ответ
Как семантические действия (с использованием _val и _attr) влияют на определение правил с помощью%= и x3::rule's force_attribute=true?
Данный семантический актер template<typename ValueType> class divide { public: divide(ValueType value) : divisor{value} {} template<typename ContextType> void operator()(ContextType& context) const { _val(context) /= divisor; } priva…
29 дек '18 в 12:18
1
ответ
Передача парсера правилу во время выполнения в X3
В spirit::qi можно передать парсер правилу как унаследованный атрибут, а затем использовать его напрямую: ... >> lazy(_r1) >> ... Есть ли обходной путь для этого в X3? Я могу "внедрить" парсер в нужный контекст правила, используя with<…
06 фев '17 в 20:44