111 namespace phx = boost::phoenix;
123 using boost::spirit::lexeme;
124 using boost::spirit::as_string;
126 root_rule_.name(
"ConfigToIni_root_rule");
128 root_rule_ = eps[_val =
""] >> *line_[_val = _val + _1+
"\n"] >> -last_line_[_val = _val + _1];
131 line_.name(
"line_of_settings_input");
132 line_ = (eps >> colon_ >> yes_eol_)[_val = lazy_to_lower_()(_1) +
"=" + _2];
134 last_line_.name(
"line_of_settings_input_with_no_eol");
135 last_line_ = (eps >> colon_ >> no_eol_)[_val = lazy_to_lower_()(_1) +
"=" + _2];
137 colon_.name(
"Set of characters with no : or eol");
138 colon_ = lexeme[*(char_ -
":") >> omit[
":"] ];
140 yes_eol_.name(
"Set of characters with eol");
141 yes_eol_ = lexeme[*(char_ - eol -
";") >> omit[-(char_(
';') >> *(char_ - eol) )] >> eol];
143 no_eol_.name(
"Set of characters with no eol");
144 no_eol_ = lexeme[*(char_ -
";") >> omit[-(char_(
';') >> *(char_ ) )]];
158 using phx::construct;
159 using namespace qi::labels;
160 qi::on_error<qi::fail>
163 val(
"config/input split parser could not complete parsing. Expecting ")<<
166 construct<std::string>(_3,_2)<<
173 qi::rule<Iterator, ascii::space_type, std::string()> line_, last_line_, colon_, yes_eol_, no_eol_;