diff --git a/include/tao/pegtl/contrib/rep_one_min_max.hpp b/include/tao/pegtl/contrib/rep_one_min_max.hpp index 9173ad4a..2c9c25e6 100644 --- a/include/tao/pegtl/contrib/rep_one_min_max.hpp +++ b/include/tao/pegtl/contrib/rep_one_min_max.hpp @@ -45,6 +45,27 @@ namespace tao } }; + template< unsigned Max, char C > + struct rep_one_min_max< 0, Max, C > + { + using analyze_t = analysis::counted< analysis::rule_type::any, 0 >; + + template< typename Input > + static bool match( Input& in ) + { + const auto size = in.size( Max + 1 ); + std::size_t i = 0; + while( ( i < size ) && ( in.peek_char( i ) == C ) ) { + ++i; + } + if( i <= Max ) { + bump_help< result_on_found::success, Input, char, C >( in, i ); + return true; + } + return false; + } + }; + template< unsigned Min, unsigned Max, char C > struct skip_control< rep_one_min_max< Min, Max, C > > : std::true_type {