@@ -84,19 +84,42 @@ struct uri_grammar
8484 ipvfuture %=
8585qi::lit (' v' ) >> +qi::xdigit >>' .' >> +(unreserved | sub_delims |' :' );
8686
87- ipv6address %=
88- qi::raw[qi::repeat (6 )[h16 >>' :' ] >> ls32 |
89- " ::" >>qi::repeat (5 )[h16 >>' :' ] >> ls32 |
90- qi::raw[h16] >>" ::" >>qi::repeat (4 )[h16 >>' :' ] >> ls32 |
91- qi::raw[+(*(h16 >>' :' )) >> h16] >>" ::" >>
92- qi::repeat (3 )[h16 >>' :' ] >> ls32 |
93- qi::raw[qi::repeat (2 )[*(h16 >>' :' )] >> h16] >>" ::" >>
94- qi::repeat (2 )[h16 >>' :' ] >> ls32 |
95- qi::raw[qi::repeat (3 )[*(h16 >>' :' )] >> h16] >>" ::" >> h16 >>
96- ' :' >> ls32 |
97- qi::raw[qi::repeat (4 )[*(h16 >>' :' )] >> h16] >>" ::" >> ls32 |
98- qi::raw[qi::repeat (5 )[*(h16 >>' :' )] >> h16] >>" ::" >> h16 |
99- qi::raw[qi::repeat (6 )[*(h16 >>' :' )] >> h16] >>" ::" ];
87+ ipv6address %= qi::raw
88+ [qi::repeat (6 )[h16 >>' :' ] >> ls32 |
89+ " ::" >>qi::repeat (5 )[h16 >>' :' ] >> ls32 |
90+ -qi::raw[h16] >>" ::" >>qi::repeat (4 )[h16 >>' :' ] >> ls32 |
91+ -qi::raw[h16] >>" ::" >>qi::repeat (3 )[h16 >>' :' ] >> ls32 |
92+ -qi::raw[h16] >>" ::" >>qi::repeat (2 )[h16 >>' :' ] >> ls32 |
93+ -qi::raw[h16] >>" ::" >> h16 >>' :' >> ls32 |
94+ -qi::raw[h16] >>" ::" >> ls32 | -qi::raw[h16] >>" ::" >> h16 |
95+ -qi::raw[h16] >>" ::" |
96+ -qi::raw[qi::repeat (1 )[(h16 >>' :' )] >> h16] >>" ::" >>
97+ qi::repeat (3 )[h16 >>' :' ] >> ls32 |
98+ -qi::raw[qi::repeat (1 )[(h16 >>' :' )] >> h16] >>" ::" >>
99+ qi::repeat (2 )[h16 >>' :' ] >> ls32 |
100+ -qi::raw[qi::repeat (1 )[(h16 >>' :' )] >> h16] >>" ::" >> h16 >>
101+ ' :' >> ls32 |
102+ -qi::raw[qi::repeat (1 )[(h16 >>' :' )] >> h16] >>" ::" >> ls32 |
103+ -qi::raw[qi::repeat (1 )[(h16 >>' :' )] >> h16] >>" ::" >> h16 |
104+ -qi::raw[qi::repeat (1 )[(h16 >>' :' )] >> h16] >>" ::" |
105+ -qi::raw[qi::repeat (2 )[(h16 >>' :' )] >> h16] >>" ::" >>
106+ qi::repeat (2 )[h16 >>' :' ] >> ls32 |
107+ -qi::raw[qi::repeat (2 )[(h16 >>' :' )] >> h16] >>" ::" >> h16 >>
108+ ' :' >> ls32 |
109+ -qi::raw[qi::repeat (2 )[(h16 >>' :' )] >> h16] >>" ::" >> ls32 |
110+ -qi::raw[qi::repeat (2 )[(h16 >>' :' )] >> h16] >>" ::" >> h16 |
111+ -qi::raw[qi::repeat (2 )[(h16 >>' :' )] >> h16] >>" ::" |
112+ -qi::raw[qi::repeat (3 )[(h16 >>' :' )] >> h16] >>" ::" >> h16 >>
113+ ' :' >> ls32 |
114+ -qi::raw[qi::repeat (3 )[(h16 >>' :' )] >> h16] >>" ::" >> ls32 |
115+ -qi::raw[qi::repeat (3 )[(h16 >>' :' )] >> h16] >>" ::" >> h16 |
116+ -qi::raw[qi::repeat (3 )[(h16 >>' :' )] >> h16] >>" ::" |
117+ -qi::raw[qi::repeat (4 )[(h16 >>' :' )] >> h16] >>" ::" >> ls32 |
118+ -qi::raw[qi::repeat (4 )[(h16 >>' :' )] >> h16] >>" ::" >> h16 |
119+ -qi::raw[qi::repeat (4 )[(h16 >>' :' )] >> h16] >>" ::" |
120+ -qi::raw[qi::repeat (5 )[(h16 >>' :' )] >> h16] >>" ::" >> h16 |
121+ -qi::raw[qi::repeat (5 )[(h16 >>' :' )] >> h16] >>" ::" |
122+ -qi::raw[qi::repeat (6 )[(h16 >>' :' )] >> h16] >>" ::" ];
100123
101124// ls32 = ( h16 ":" h16 ) / IPv4address
102125 ls32 %= (h16 >>' :' >> h16) | ipv4address;