boostorg/spirit_x4

The domain of integral bounds given to `repeat_directive` is underspecified

Aperta

#62 aperta il 5 ott 2025

 (0 commenti) (0 reazioni) (0 assegnatari)C++ (3 fork)auto 404
documentationenhancementgood first issuehelp wanted

Metriche repository

Star
 (37 stelle)
Metriche merge PR
 (Nessuna PR mergiata in 30 g)

Descrizione

Perhaps this should be both rejected in the code and described in the new documentation.

  • The documentation should note that repeat operates on closed bounds.
  • x4::repeat(negative) should be rejected
  • x4::repat(negative, ...) and x4::repat(..., negative) should be rejected
  • x4::repeat(max, min) should be rejected
  • x4::repeat(0) should be rejected
    • This is semantically very vague.
    • As of now, I confirmed that it actually results in always succeeding parser (regardless of the underlying parser p given to repeat(0)[p]), similar to eps

Proposed solution:

  • The basic concept should be changed from std::integral to std::unsigned_integral
  • x4::repeat(max, min) should throw std::domain_error
  • x4::repeat(0) should throw std::domain_error

Guida contributor