Problem is, you expect your parser to stop at whitespace or the keyword "end". But your parser basically accepts any character after "start" keyword.
+char_
Above parser means: any character sequence longer than 1 (including whitespace).
Somehow you have to tell your parser to stop at whitespace or "end" keyword. For example below parser will accept characters until "end" keyword
+(char_ - lit("end"))
I suggest you to have a look at the list of parsers in spirit documentation. http://www.boost.org/doc/libs/1_55_0/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers.html