@@ -84,42 +84,41 @@ struct uri_grammar
8484 ipvfuture %=
8585qi::lit (' v' ) >> +qi::xdigit >>' .' >> +(unreserved | sub_delims |' :' );
8686
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] >>" ::" ];
87+ qi::rule<const_iterator,string_type ()> a;
88+ qi::rule<const_iterator,string_type ()> b;
89+ qi::rule<const_iterator,string_type ()> c;
90+ qi::rule<const_iterator,string_type ()> d;
91+
92+ a %=qi::repeat (6 )[h16 >>' :' ] >> ls32 |
93+ " ::" >>qi::repeat (5 )[h16 >>' :' ] >> ls32 |
94+ -qi::raw[h16] >>" ::" >>qi::repeat (4 )[h16 >>' :' ] >> ls32 |
95+ -qi::raw[h16] >>" ::" >>qi::repeat (3 )[h16 >>' :' ] >> ls32 |
96+ -qi::raw[h16] >>" ::" >>qi::repeat (2 )[h16 >>' :' ] >> ls32 |
97+ -qi::raw[h16] >>" ::" >> h16 >>' :' >> ls32 |
98+ -qi::raw[h16] >>" ::" >> ls32 | -qi::raw[h16] >>" ::" >> h16 |
99+ -qi::raw[h16] >>" ::" |
100+ -qi::raw[qi::repeat (1 )[(h16 >>' :' )] >> h16] >>" ::" >>qi::repeat (3 )[h16 >>' :' ] >> ls32 |
101+ -qi::raw[qi::repeat (1 )[(h16 >>' :' )] >> h16] >>" ::" >>qi::repeat (2 )[h16 >>' :' ] >> ls32 |
102+ -qi::raw[qi::repeat (1 )[(h16 >>' :' )] >> h16] >>" ::" >> h16 >>' :' >> ls32;
103+ b %= -qi::raw[qi::repeat (1 )[(h16 >>' :' )] >> h16] >>" ::" >> ls32 |
104+ -qi::raw[qi::repeat (1 )[(h16 >>' :' )] >> h16] >>" ::" >> h16 |
105+ -qi::raw[qi::repeat (1 )[(h16 >>' :' )] >> h16] >>" ::" |
106+ -qi::raw[qi::repeat (2 )[(h16 >>' :' )] >> h16] >>" ::" >>qi::repeat (2 )[h16 >>' :' ] >> ls32 |
107+ -qi::raw[qi::repeat (2 )[(h16 >>' :' )] >> h16] >>" ::" >> h16 >>' :' >> ls32;
108+ c %= -qi::raw[qi::repeat (2 )[(h16 >>' :' )] >> h16] >>" ::" >> ls32 |
109+ -qi::raw[qi::repeat (2 )[(h16 >>' :' )] >> h16] >>" ::" >> h16 |
110+ -qi::raw[qi::repeat (2 )[(h16 >>' :' )] >> h16] >>" ::" |
111+ -qi::raw[qi::repeat (3 )[(h16 >>' :' )] >> h16] >>" ::" >> h16 >>' :' >> ls32;
112+ d %= -qi::raw[qi::repeat (3 )[(h16 >>' :' )] >> h16] >>" ::" >> ls32 |
113+ -qi::raw[qi::repeat (3 )[(h16 >>' :' )] >> h16] >>" ::" >> h16 |
114+ -qi::raw[qi::repeat (3 )[(h16 >>' :' )] >> h16] >>" ::" |
115+ -qi::raw[qi::repeat (4 )[(h16 >>' :' )] >> h16] >>" ::" >> ls32 |
116+ -qi::raw[qi::repeat (4 )[(h16 >>' :' )] >> h16] >>" ::" >> h16 |
117+ -qi::raw[qi::repeat (4 )[(h16 >>' :' )] >> h16] >>" ::" |
118+ -qi::raw[qi::repeat (5 )[(h16 >>' :' )] >> h16] >>" ::" >> h16 |
119+ -qi::raw[qi::repeat (5 )[(h16 >>' :' )] >> h16] >>" ::" |
120+ -qi::raw[qi::repeat (6 )[(h16 >>' :' )] >> h16] >>" ::" ;
121+ ipv6address %= qi::raw[a | b | c | d];
123122
124123// ls32 = ( h16 ":" h16 ) / IPv4address
125124 ls32 %= (h16 >>' :' >> h16) | ipv4address;