Как решить неоднозначное решение?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как решить неоднозначное решение?

Сообщение Anonymous »

Отказ от ответственности: это часть более крупного синтаксического анализатора, уменьшенная до простого объяснения моей проблемы.
У меня возникла ситуация, когда я могу иметь 3 типа значения rhs, начиная с идентификатора: . и : — это всего лишь пример правил, начинающихся с идентификатора, а затем каким-то образом отличающихся — копии структур предназначены только для этого примера.
так что это может быть просто идентификатор, id.id или id:id проблема в том, что правило id идет первым и определяет, что необходимо в этот момент - нужно ли мне объединить мои правила в одно, чтобы получить разные выходные данные? до сих пор я думал, что 3 правила, начинающиеся с id, будут обрабатываться как своего рода совокупность правил, но это не так
В прямом эфире на Coliru

Код: Выделить всё

// #define BOOST_SPIRIT_DEBUG
#include 
#include 
#include 
#include 
namespace qi = boost::spirit::qi;

namespace Ast
{
struct Identifier : std::string
{
};
struct QualifiedId1
{
Identifier a, b;
};
struct QualifiedId2
{
Identifier a, b;
};

using Variants = std::variant;

} // namespace Ast

BOOST_FUSION_ADAPT_STRUCT( Ast::QualifiedId1, a, b )
BOOST_FUSION_ADAPT_STRUCT( Ast::QualifiedId2, a, b )

using It = std::string_view::const_iterator;

template 
void run_tests( qi::rule const& rule_, std::vector const& tests )
{
std::cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/79185011/how-to-solve-ambiguous-ruling[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»