У меня возникла ситуация, когда я могу иметь 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]
Мобильная версия