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

Каковы недостатки фреймворка парсера-генератора Spirit от boost.org?
В нескольких вопросах я видел рекомендации для Spirit фреймворк генератора парсеров с сайта boost.org , но потом в комментариях ворчат люди, использующие Spirit, которые не счастливы. Не могли бы эти люди встать и объяснить остальным из нас, в...
9463 просмотров

остановка синтаксического анализатора при обнаружении ошибки в семантическом действии
Я хочу остановить синтаксический анализатор токенов, когда код семантического действия обнаружит проблему. IF x > 10 синтаксически правильно, но если x не существует, синтаксический анализатор должен остановиться Правило грамматики и...
568 просмотров
schedule 07.12.2022

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

Я не могу получить строковое значение токена
Я пытаюсь реализовать Lexer для небольшого языка программирования с помощью Boost Spirit. Мне нужно получить значение токена, и я получаю исключение bad_get: завершение вызывается после создания экземпляра 'boost::bad_get' what():...
1904 просмотров
schedule 03.08.2022

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

Как избежать копирования атрибутов с помощью генераторов кармы
Я использую карму для создания представлений больших структур, но структуры копируются во время генерации. Я думаю , что они должны быть, поэтому мне было интересно, как этого избежать. Быстрый пример ниже печатает «Копировать!», поскольку...
533 просмотров
schedule 20.10.2022

Разбор строки как списка с помощью boost :: spirit
У меня есть ситуация, когда я анализирую ввод в карту векторов boost :: Spirit. Он работает хорошо, но я столкнулся с ситуацией, когда мне нужно предоставить фиксированную строку внутри для определенного случая пользовательского ввода, чтобы...
3667 просмотров
schedule 29.05.2022

Простой парсер и генератор
Мне нужно проанализировать и сгенерировать некоторые тексты из и в объекты С++. Синтаксис: command #param #param #param Существует набор команд, некоторые из них не имеют параметров и т. д. Параметрами в основном являются числа. Вопрос...
383 просмотров
schedule 25.06.2022

Есть ли способ сопоставить содержимое токена строки 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 просмотров

Как обобщить синтаксический анализатор для получения списков в произвольном порядке?
У меня есть простой синтаксический анализатор, который может анализировать списки целых чисел или строк в кавычках. Если я выполню SIMPLE_CASE , где я принимаю входные данные: std::string input1 = "{ INT: 42, 24 STR: \"Smith\", \"John\" }";...
320 просмотров
schedule 14.04.2022

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

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

волна повышения или дух для парсера glsl
Я хочу проанализировать пользовательский тег в коде OpenGL Shading Language (GLSL), который очень похож на C. Общий вариант использования будет выглядеть так: #version 150 @bind ProjectionMatrix uniform mat4 projMatrix; @bind ViewMatrix uniform...
739 просмотров
schedule 13.02.2023

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

не может скомпилировать пример boost-spirit для изменения значения токена с использованием актера Phoenix
Когда я пытаюсь скомпилировать приведенный ниже код (используя пример из boost\spirit\home\lex\argument.hpp: value_setter ), я получаю следующую ошибку компилятора: c:\program files (x86)\boost\boost_1_50\boost\range\iterator.hpp(63) : error...
390 просмотров
schedule 10.09.2022

Как получить доступ к данным вложенных объектов в boost::spirit::karma?
В ItemList , содержащем списки объектов Item , как мне получить доступ к объектам Item в генераторе? Следующий пример кода компилируется в VC9 (с соответствующим образом настроенными каталогами включения и ссылки). Я не знаю, как настроить...
204 просмотров

boost::spirit::qi::double_ и boost::spirit::qi::int_
Как разобрать строку, которая может содержать либо double, либо int, в зависимости от того, установлена ​​ли точка. Например. 6.0 имеет тип double, а 6 — тип int. Правило было бы rule<it,boost::variant<int,double>,skipper> r =...
422 просмотров
schedule 11.10.2022

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

boost :: spirit :: karma вывод строки в кавычках
Я пытаюсь избежать строки в кавычках, используя boost :: spirit :: karma. Это нормально работает, если это просто строка. Однако для строки в boost :: variant в std :: vector это не так. Однако простая печать строки работает, я не совсем понимаю,...
693 просмотров