parsing with boost.spirit

89
Parsing with Boost.Spirit Rob Stewart [email protected]

Upload: shino

Post on 24-Feb-2016

46 views

Category:

Documents


0 download

DESCRIPTION

Parsing with Boost.Spirit. Rob Stewart [email protected]. Overview. Introduction to Boost.Spirit Parsing with Qi Parsing ping command output Problems using Qi. Introduction to Boost.Spirit. Introduction to Boost.Spirit. Three sub-libraries Lex : Lexical analysis Qi: Parsing - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Parsing with  Boost.Spirit

Parsing with Boost.Spirit

Rob [email protected]

Page 2: Parsing with  Boost.Spirit

Overview• Introduction to Boost.Spirit• Parsing with Qi• Parsing ping command output• Problems using Qi

2

Page 3: Parsing with  Boost.Spirit

Introduction to Boost.Spirit

3

Page 4: Parsing with  Boost.Spirit

Introduction to Boost.Spirit• Three sub-libraries

• Lex: Lexical analysis• Qi: Parsing• Karma: Generating output

• DSELs• Clear, readable because targeted to domain• Use within your C++ code• No external tools required

4

Page 5: Parsing with  Boost.Spirit

Boost.Spirit.Lex• Tokenizes input

• Parses character sequence• Produces tokens

• Applies your grammar• Separates tokenization from analysis• Reduces complexity of parser• Not covered in this presentation

5

Page 6: Parsing with  Boost.Spirit

Boost.Spirit.Qi• Converts sequence of tokens or characters• Implements a recursive descent parser• Parsing Expression Grammar (PEG) based

• Similar to Extended Backus-Naur Form (EBNF)• Not ambiguous• Well-suited to computer languages• Ill-suited to natural languages

• Replaces uses of scanf(), regular expressions, and tokenizers

• Much more powerful and flexible than common tools

6

Page 7: Parsing with  Boost.Spirit

Boost.Spirit.Karma• Produces character sequence from data• Can replace uses of printf(), std::ostream,

boost::format(), etc.• Much more powerful and flexible than common

output tools• Inverse of Qi• Not covered in this presentation

7

Page 8: Parsing with  Boost.Spirit

Parsing with Qi

8

Page 9: Parsing with  Boost.Spirit

Parsing Basics• Iterate input sequence• Optionally tokenize• Apply grammar• Indicate a match• Produce side effects

• Save text• Convert text to another type• Call a function

9

Page 10: Parsing with  Boost.Spirit

Parsers like Function Objects• Arguments: Inherited Attributes• Return value: Synthesized Attribute• State

10

Page 11: Parsing with  Boost.Spirit

Parser Conceptboolparse(FwdIt, FwdIt, Context, Skipper, Attribute);infowhat(Context);

11

Page 12: Parsing with  Boost.Spirit

Kinds of Parsers• Primitive

• char_, float_, int_, lit, etc.• Rule

• Placeholder for one or more parsers• Reusable• Support recursion• Have a name (empty by default)

• Grammar:• Encapsulates a set of rules, parsers, and nested grammars• High level abstraction• Offers modularization and composition

12

Page 13: Parsing with  Boost.Spirit

Parsers for doubles• To parse one double:

boost::spirit::qi::double_

• To parse two whitespace-delimited doubles:double_ >> double_

• Parsing zero or more doubles:*double_

• Parsing a comma-delimited list of doubles:double_ >> *(lit(',') >> double_)

13

Page 14: Parsing with  Boost.Spirit

Parsing a Comma-delimited List of doublesdouble_ >> *(lit(',') >> double_)

14

Page 15: Parsing with  Boost.Spirit

Parsing a Comma-delimited List of doublesdouble_ >> *(lit(',') >> double_)

15

Matches sign, mantissa, and exponent

Page 16: Parsing with  Boost.Spirit

Parsing a Comma-delimited List of doublesdouble_ >> *(lit(',') >> double_)

16

Left side might be followed by right side

Page 17: Parsing with  Boost.Spirit

Parsing a Comma-delimited List of doublesdouble_ >> *(lit(',') >> double_)

17

Kleene star: zero or more

Page 18: Parsing with  Boost.Spirit

Parsing a Comma-delimited List of doublesdouble_ >> *(lit(',') >> double_)

18

Matches a comma which won’t be added to the synthesized attribute

Page 19: Parsing with  Boost.Spirit

Parsing a Comma-delimited List of doublesdouble_ >> *(lit(',') >> double_)

19

Page 20: Parsing with  Boost.Spirit

Parsing a Comma-delimited List of doublesdouble_ >> *(lit(',') >> double_)

20

Page 21: Parsing with  Boost.Spirit

Parsing a Comma-delimited List of doublesdouble_ >> *(lit(',') >> double_)double_ % ','

21

Qi extends PEG operators for convenience

Page 22: Parsing with  Boost.Spirit

Parsing Functions• boost::spirit::qi::parse()

• Parses exactly what’s described by the supplied parser• Provides complete control over where whitespace may

occur• Appropriate when parsing token sequences from Lex

• boost::spirit::qi::phrase_parse()• Applies a skip parser between parsers comprising the main

parser• Simplifies delimiter handling• Can disable for specific parts of the main parser

22

Page 23: Parsing with  Boost.Spirit

Using parse()template <class It>boolmatches(It _first, It _last){ return parse(_first, _last, double_ % ',');}

23

Page 24: Parsing with  Boost.Spirit

Using phrase_parse()template <class It>boolmatches(It _first, It _last){ return phrase_parse(_first, _last, double_ % ',', space);}

24

Page 25: Parsing with  Boost.Spirit

Reality Isn’t Quite So Pretty#include <boost/spirit/include/qi.hpp>

template <class It>boolmatches(It _first, It _last){ using boost::spirit::qi::double_; using boost::spirit::qi::lit; using boost::spirit::qi::phrase_parse; using boost::spirit::ascii::space; return phrase_parse(_first, _last, double_ % ',', space);}

25

Page 26: Parsing with  Boost.Spirit

Reality Isn’t Quite So Pretty#include <boost/spirit/include/qi.hpp>

namespace qi = boost::spirit::qi;

template <class It>boolmatches(It _first, It _last){ using boost::spirit::ascii::space; return qi::phrase_parse(_first, _last, qi::double_ % ',', space);}

26

Page 27: Parsing with  Boost.Spirit

Deconstructing phrase_parse() Callstemplate <class It>boolmatches(It _first, It _last){ return phrase_parse( _first, _last, double_ % ',', space) && _first == _last;}

27

Page 28: Parsing with  Boost.Spirit

Deconstructing phrase_parse() Callstemplate <class It>boolmatches(It _first, It _last){ return phrase_parse( _first, _last, double_ % ',', space) && _first == _last;}

28

Half open input range of characters

Page 29: Parsing with  Boost.Spirit

Deconstructing phrase_parse() Callstemplate <class It>boolmatches(It _first, It _last){ return phrase_parse( _first, _last, double_ % ',', space) && _first == _last;}

29

The parser to apply

Page 30: Parsing with  Boost.Spirit

Deconstructing phrase_parse() Callstemplate <class It>boolmatches(It _first, It _last){ return phrase_parse( _first, _last, double_ % ',', space) && _first == _last;}

30

The skip parser

Page 31: Parsing with  Boost.Spirit

Deconstructing phrase_parse() Callstemplate <class It>boolmatches(It _first, It _last){ return phrase_parse( _first, _last, double_ % ',', space) && _first == _last;}

31

Check that the entire input range was consumed

Page 32: Parsing with  Boost.Spirit

Example: Parsing ping Command Output

32

Page 33: Parsing with  Boost.Spirit

ping Command OutputPING www.google.com (74.125.131.147) 56(84) bytes of data.64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_seq=1 ttl=39 time=24.6 ms64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_seq=2 ttl=39 time=20.5 ms64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_seq=3 ttl=39 time=18.9 ms

--- www.google.com ping statistics ---3 packets transmitted, 3 received, 0% packet loss, time 2003msrtt min/avg/max/mdev = 18.984/21.411/24.697/2.410 ms

33

Page 34: Parsing with  Boost.Spirit

Creating the ping Parsertemplate <class It, class Skipper>class ping::parser : public qi::grammar<It,Skipper>{public: parser() { // grammar here }private: // rules here};

34

Page 35: Parsing with  Boost.Spirit

Creating the ping Parsertemplate <class It, class Skipper>class ping::parser : public qi::grammar<It,Skipper>{public: parser() { // grammar here }private: // rules here};

35

Page 36: Parsing with  Boost.Spirit

Creating the ping Parsertemplate <class It, class Skipper>class ping::parser : public qi::grammar<It,Skipper>{public: parser() { // grammar here }private: // rules here};

36

Page 37: Parsing with  Boost.Spirit

Creating the ping Parsertemplate <class It, class Skipper>class ping::parser : public qi::grammar<It,Skipper>{public: parser() { // grammar here }private: // rules here};

37

Page 38: Parsing with  Boost.Spirit

Creating the ping Parserpublic: parser() : parser::base_type(start, "ping parser") { }private: qi::rule<It,Skipper> start;

38

Page 39: Parsing with  Boost.Spirit

Creating the ping Parserpublic: parser() : parser::base_type(start, "ping parser") { }private: qi::rule<It,Skipper> start;

39

Page 40: Parsing with  Boost.Spirit

Creating the ping Parserpublic: parser() : parser::base_type(start, "ping parser") { }private: qi::rule<It,Skipper> start;

40

Page 41: Parsing with  Boost.Spirit

start RulePING www.google.com (74.125.131.147) 56(84) bytes of data.

start = lit("PING") …

41

Page 42: Parsing with  Boost.Spirit

start RulePING www.google.com (74.125.131.147) 56(84) bytes of data.

start = lit("PING") > host …

42

Page 43: Parsing with  Boost.Spirit

start RulePING www.google.com (74.125.131.147) 56(84) bytes of data.

start = lit("PING") > host > ip_address …

43

Page 44: Parsing with  Boost.Spirit

start RulePING www.google.com (74.125.131.147) 56(84) bytes of data.

start = lit("PING") > host > ip_address > +(char_ - '.') > '.' …

44

Page 45: Parsing with  Boost.Spirit

start RulePING www.google.com (74.125.131.147) 56(84) bytes of data.

start = lit("PING") > host > ip_address > +(omit[char_] - '.') > '.' …

45

Page 46: Parsing with  Boost.Spirit

start RulePING www.google.com (74.125.131.147) 56(84) bytes of data.

start = lit("PING") > host > ip_address > +(omit[char_] - '.') > '.' > eol …

46

Page 47: Parsing with  Boost.Spirit

start RulePING www.google.com (74.125.131.147) 56(84) bytes of data.

start = lit("PING") > host > ip_address > +(omit[char_] - '.') > '.' > eol …

47

Page 48: Parsing with  Boost.Spirit

start RulePING www.google.com (74.125.131.147) 56(84) bytes of data.64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_seq=1 ttl=39 time=24.6 ms64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_seq=2 ttl=39 time=20.5 ms64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_seq=3 ttl=39 time=18.9 ms

start = lit("PING") > host > ip_address > +(omit[char_] - '.') > '.' > eol >> *(reply > eol) …

48

Page 49: Parsing with  Boost.Spirit

start RulePING www.google.com (74.125.131.147) 56(84) bytes of data.64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_seq=1 ttl=39 time=24.6 ms64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_seq=2 ttl=39 time=20.5 ms64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_seq=3 ttl=39 time=18.9 ms

--- www.google.com ping statistics ---

start = lit("PING") … >> *(reply > eol) > eol > +(omit[char_("A-Za-z0-9.-")]) > eol …

49

Page 50: Parsing with  Boost.Spirit

start RulePING www.google.com (74.125.131.147) 56(84) bytes of data.64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_seq=1 ttl=39 time=24.6 ms64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_seq=2 ttl=39 time=20.5 ms64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_seq=3 ttl=39 time=18.9 ms

--- www.google.com ping statistics ---

start = lit("PING") … >> *(reply > eol) > eol > +(omit[char_] - eol) > eol …

50

Page 51: Parsing with  Boost.Spirit

start RulePING www.google.com (74.125.131.147) 56(84) bytes of data.…--- www.google.com ping statistics ---3 packets transmitted, 3 received, 0% packet loss, time 2003msrtt min/avg/max/mdev = 18.984/21.411/24.697/2.410 ms

start = lit("PING") … > eol > summary > eol > computed > eol …

51

Page 52: Parsing with  Boost.Spirit

start Rulestart = lit("PING") … > eol > summary > eol > computed > eol > eoi ;

52

Page 53: Parsing with  Boost.Spirit

Checking for End of Inputtemplate <class It>boolmatches(It _first, It _last){ return phrase_parse( _first, _last, double_ % ',', space) && _first == _last;}

53

Check that the entire input range was consumed

Page 54: Parsing with  Boost.Spirit

host and ip_address RulesPING www.google.com (74.125.131.147) 56(84) bytes of data.

host = +(char_ - '(');ip_address = lexeme['(' > +(char_ - ')') > ')'];

54

Page 55: Parsing with  Boost.Spirit

reply Rule64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_seq=1 ttl=39 time=24.6 ms64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_seq=2 ttl=39 time=20.5 ms64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_seq=3 ttl=39 time=18.9 ms

reply = uint_ … ;

55

Page 56: Parsing with  Boost.Spirit

reply Rule64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_seq=1 ttl=39 time=24.6 ms64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_seq=2 ttl=39 time=20.5 ms64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_seq=3 ttl=39 time=18.9 ms

reply = uint_ > repeat(2)[+(omit[char_] – '=') > '='] … ;

56

Page 57: Parsing with  Boost.Spirit

reply Rule64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_seq=1 ttl=39 time=24.6 ms64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_seq=2 ttl=39 time=20.5 ms64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_seq=3 ttl=39 time=18.9 ms

reply = uint_ > repeat(2)[+(omit[char_] – '=') > '='] > uint_ … ;

57

Page 58: Parsing with  Boost.Spirit

reply Rule64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_seq=1 ttl=39 time=24.6 ms64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_seq=2 ttl=39 time=20.5 ms64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_seq=3 ttl=39 time=18.9 ms

reply = uint_ > repeat(2)[+(omit[char_] – '=') > '='] > uint_ > +(omit[char_] – '=') > '=' … ;

58

Page 59: Parsing with  Boost.Spirit

reply Rule64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_seq=1 ttl=39 time=24.6 ms64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_seq=2 ttl=39 time=20.5 ms64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_seq=3 ttl=39 time=18.9 ms

reply = uint_ > repeat(2)[+(omit[char_] – '=') > '='] > uint_ > +(omit[char_] – '=') > '=' > float_ … ;

59

Page 60: Parsing with  Boost.Spirit

reply Rule64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_seq=1 ttl=39 time=24.6 ms64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_seq=2 ttl=39 time=20.5 ms64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_seq=3 ttl=39 time=18.9 ms

reply = uint_ > repeat(2)[+(omit[char_] – '=') > '='] > uint_ > +(omit[char_] – '=') > '=' > float_ > "ms" ;

60

Page 61: Parsing with  Boost.Spirit

reply Rule64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_seq=1 ttl=39 time=24.6 ms64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_seq=2 ttl=39 time=20.5 ms64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_seq=3 ttl=39 time=18.9 ms

reply = uint_ > repeat(2)[+(omit[char_] – '=') > '='] > uint_ > +(omit[char_] – '=') > '=' > float_ > "ms" ;

61

Page 62: Parsing with  Boost.Spirit

skip_to Rulepublic: parser() { … skip_to = +(omit[char_] – char_(_r1)) > char_(_r1)] ; }

private: rule<It,Skipper,void(char)> skip_to;

62

Page 63: Parsing with  Boost.Spirit

skip_to Rulepublic: parser() { … skip_to = +(omit[char_] – char_(_r1)) > char_(_r1)] ; }

private: rule<It,Skipper,void(char)> skip_to;

63

Page 64: Parsing with  Boost.Spirit

reply Rule64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_seq=1 ttl=39 time=24.6 ms64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_seq=2 ttl=39 time=20.5 ms64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_seq=3 ttl=39 time=18.9 ms

reply = uint_ > repeat(2)[skip_to('=')] > uint_ > skip_to('=') > float_ > "ms" ;

64

Page 65: Parsing with  Boost.Spirit

start RulePING www.google.com (74.125.131.147) 56(84) bytes of data.64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_seq=1 ttl=39 time=24.6 ms64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_seq=2 ttl=39 time=20.5 ms64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_seq=3 ttl=39 time=18.9 ms

start = lit("PING") > host > ip_address > +(omit[char_] - '.') > '.' > eol >> *(reply > eol) …

65

Page 66: Parsing with  Boost.Spirit

summary Rule3 packets transmitted, 3 received, 0% packet loss, time 2003ms

summary = uint_ … ;

66

Page 67: Parsing with  Boost.Spirit

summary Rule3 packets transmitted, 3 received, 0% packet loss, time 2003ms

summary = uint_ > skip_to(',') … ;

67

Page 68: Parsing with  Boost.Spirit

summary Rule3 packets transmitted, 3 received, 0% packet loss, time 2003ms

summary = uint_ > skip_to(',') > uint_ … ;

68

Page 69: Parsing with  Boost.Spirit

summary Rule3 packets transmitted, 3 received, 0% packet loss, time 2003ms

summary = uint_ > skip_to(',') > uint_ > skip_to(',') … ;

69

Page 70: Parsing with  Boost.Spirit

summary Rule3 packets transmitted, 3 received, 0% packet loss, time 2003ms

summary = uint_ > skip_to(',') > uint_ > skip_to(',') > float_ … ;

70

Page 71: Parsing with  Boost.Spirit

summary Rule3 packets transmitted, 3 received, 0% packet loss, time 2003ms

summary = uint_ > skip_to(',') > uint_ > skip_to(',') > float_ > +(omit[char_] - eol) ;

71

Page 72: Parsing with  Boost.Spirit

computed Rulertt min/avg/max/mdev = 18.984/21.411/24.697/2.410 ms

computed = skip_to('=') … ;

72

Page 73: Parsing with  Boost.Spirit

computed Rulertt min/avg/max/mdev = 18.984/21.411/24.697/2.410 ms

computed = +(omit[char_ - '=') > '=' > float_ % '/' … ;

73

Page 74: Parsing with  Boost.Spirit

computed Rulertt min/avg/max/mdev = 18.984/21.411/24.697/2.410 ms

computed = +(omit[char_ - '=') > '=' > lexeme[float_ % '/'] … ;

74

Page 75: Parsing with  Boost.Spirit

computed Rulertt min/avg/max/mdev = 18.984/21.411/24.697/2.410 ms

computed = +(omit[char_ - '=') > '=' > lexeme[float_ % '/'] > "ms" ;

75

Page 76: Parsing with  Boost.Spirit

Rule Declarationsprivate: rule<It,Skipper> computed; rule<It,Skipper> host; rule<It,Skipper> ip_address; rule<It,Skipper> reply; rule<It,Skipper,void(char)> skip_to; rule<It,Skipper> start; rule<It,Skipper> summary;};

76

Page 77: Parsing with  Boost.Spirit

Rule Declarationsprivate: rule<It,Skipper> computed; rule<It,Skipper> host; rule<It,Skipper> ip_address; rule<It,Skipper> reply; rule<It,Skipper,void(char)> skip_to; rule<It,Skipper> start; rule<It,Skipper> summary;};

77

Page 78: Parsing with  Boost.Spirit

Problems Using Qi

78

Page 79: Parsing with  Boost.Spirit

Problems• Slow compiles• High compiler memory demands• Gigantic error backtraces• Confusing errors• Debugging

79

Page 80: Parsing with  Boost.Spirit

Problems: Error Backtraces/siglinux/tc/sles11sp1_gcc-4.3.4_x86-64/sig1/boost-1.49.0/include/boost/spirit/home/phoenix/operator/self.hpp: At global scope:/siglinux/tc/sles11sp1_gcc-4.3.4_x86-64/sig1/boost-1.49.0/include/boost/spirit/home/phoenix/operator/self.hpp: In instantiation of 'const int boost::phoenix::result_of_assign<std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::vector<char, std::allocator<char> >&>::size':/siglinux/tc/sles11sp1_gcc-4.3.4_x86-64/sig1/boost-1.49.0/include/boost/spirit/home/phoenix/operator/self.hpp:27: instantiated from 'const int boost::phoenix::result_of_assign<std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::vector<char, std::allocator<char> >&>::index'/siglinux/tc/sles11sp1_gcc-4.3.4_x86-64/sig1/boost-1.49.0/include/boost/spirit/home/phoenix/operator/self.hpp:27: instantiated from 'boost::phoenix::result_of_assign<std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::vector<char, std::allocator<char> >&>'/siglinux/tc/sles11sp1_gcc-4.3.4_x86-64/sig1/boost-1.49.0/include/boost/mpl/eval_if.hpp:38: instantiated from 'boost::mpl::eval_if<boost::mpl::or_<boost::phoenix::is_actor<std::basic_string<char, std::char_traits<char>, std::allocator<char> >&>, boost::phoenix::is_actor<std::vector<char, std::allocator<char> >&>, mpl_::bool_<false>, mpl_::bool_<false>, mpl_::bool_<false> >, boost::phoenix::re_curry<boost::phoenix::assign_eval, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::vector<char, std::allocator<char> >&, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_>, boost::phoenix::result_of_assign<std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::vector<char, std::allocator<char> >&> >'/siglinux/tc/sles11sp1_gcc-4.3.4_x86-64/sig1/boost-1.49.0/include/boost/spirit/home/phoenix/operator/self.hpp:69: instantiated from 'boost::phoenix::assign_eval::result<boost::phoenix::basic_environment<boost::fusion::vector1<std::vector<char, std::allocator<char> >&>, boost::spirit::context<boost::fusion::cons<boost::spirit::unused_type&, boost::fusion::nil>, boost::fusion::vector0<void> >, bool, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_>, boost::phoenix::reference<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::spirit::argument<0> >'/siglinux/tc/sles11sp1_gcc-4.3.4_x86-64/sig1/boost-1.49.0/include/boost/spirit/home/phoenix/core/detail/composite_eval.hpp:89: instantiated from 'boost::phoenix::detail::composite_eval<2>::result<boost::phoenix::composite<boost::phoenix::assign_eval, boost::fusion::vector<boost::phoenix::reference<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::spirit::argument<0>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> >, boost::phoenix::basic_environment<boost::fusion::vector1<std::vector<char, std::allocator<char> >&>, boost::spirit::context<boost::fusion::cons<boost::spirit::unused_type&, boost::fusion::nil>, boost::fusion::vector0<void> >, bool, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> >'/siglinux/tc/sles11sp1_gcc-4.3.4_x86-64/sig1/boost-1.49.0/include/boost/spirit/home/phoenix/core/composite.hpp:61: instantiated from 'boost::phoenix::composite<boost::phoenix::assign_eval, boost::fusion::vector<boost::phoenix::reference<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::spirit::argument<0>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> >::result<boost::phoenix::basic_environment<boost::fusion::vector1<std::vector<char, std::allocator<char> >&>, boost::spirit::context<boost::fusion::cons<boost::spirit::unused_type&, boost::fusion::nil>, boost::fusion::vector0<void> >, bool, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> >'/siglinux/tc/sles11sp1_gcc-4.3.4_x86-64/sig1/boost-1.49.0/include/boost/spirit/home/phoenix/core/actor.hpp:56: instantiated from 'boost::phoenix::eval_result<boost::phoenix::composite<boost::phoenix::assign_eval, boost::fusion::vector<boost::phoenix::reference<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::spirit::argument<0>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> >, boost::phoenix::basic_environment<boost::fusion::vector1<std::vector<char, std::allocator<char> >&>, boost::spirit::context<boost::fusion::cons<boost::spirit::unused_type&, boost::fusion::nil>, boost::fusion::vector0<void> >, bool, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> >'/siglinux/tc/sles11sp1_gcc-4.3.4_x86-64/sig1/boost-1.49.0/include/boost/spirit/home/phoenix/core/actor.hpp:70: instantiated from 'boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval, boost::fusion::vector<boost::phoenix::reference<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::spirit::argument<0>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > >::result<boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval, boost::fusion::vector<boost::phoenix::reference<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::spirit::argument<0>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > > ()(boost::fusion::vector1<std::vector<char, std::allocator<char> >&>&, boost::spirit::context<boost::fusion::cons<boost::spirit::unused_type&, boost::fusion::nil>, boost::fusion::vector0<void> >&, bool&)>‘/siglinux/tc/sles11sp1_gcc-4.3.4_x86-64/sig1/boost-1.49.0/include/boost/spirit/home/support/action_dispatch.hpp:178: instantiated from 'bool boost::spirit::traits::action_dispatch<Component>::operator()(const boost::phoenix::actor<Eval>&, Attribute&, Context&) [with Eval = boost::phoenix::composite<boost::phoenix::assign_eval, boost::fusion::vector<boost::phoenix::reference<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::spirit::argument<0>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> >, Attribute = std::vector<char, std::allocator<char> >, Context = boost::spirit::context<boost::fusion::cons<boost::spirit::unused_type&, boost::fusion::nil>, boost::fusion::vector0<void> >, Component = boost::spirit::qi::lexeme_directive<boost::spirit::qi::sequence<boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::cons<boost::spirit::qi::plus<boost::spirit::qi::difference<boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::char_, boost::spirit::char_encoding::standard> >, boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false> > >, boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::nil> > > > >]'/siglinux/tc/sles11sp1_gcc-4.3.4_x86-64/sig1/boost-1.49.0/include/boost/spirit/home/qi/action/action.hpp:69: instantiated from 'bool boost::spirit::qi::action<Subject, Action>::parse(Iterator&, const Iterator&, Context&, const Skipper&, Attribute&) const [with Iterator = __gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, Context = boost::spirit::context<boost::fusion::cons<boost::spirit::unused_type&, boost::fusion::nil>, boost::fusion::vector0<void> >, Skipper = boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::blank, boost::spirit::char_encoding::ascii> >, Attribute = const boost::spirit::unused_type, Subject = boost::spirit::qi::lexeme_directive<boost::spirit::qi::sequence<boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::cons<boost::spirit::qi::plus<boost::spirit::qi::difference<boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::char_, boost::spirit::char_encoding::standard> >, boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false> > >, boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::nil> > > > >, Action = boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval, boost::fusion::vector<boost::phoenix::reference<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::spirit::argument<0>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > >]'/siglinux/tc/sles11sp1_gcc-4.3.4_x86-64/sig1/boost-1.49.0/include/boost/spirit/home/qi/detail/expect_function.hpp:77: instantiated from 'bool boost::spirit::qi::detail::expect_function<Iterator, Context, Skipper, Exception>::operator()(const Component&) const [with Component = boost::spirit::qi::action<boost::spirit::qi::lexeme_directive<boost::spirit::qi::sequence<boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::cons<boost::spirit::qi::plus<boost::spirit::qi::difference<boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::char_, boost::spirit::char_encoding::standard> >, boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false> > >, boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::nil> > > > >, boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval, boost::fusion::vector<boost::phoenix::reference<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::spirit::argument<0>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > > >, Iterator = __gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, Context = boost::spirit::context<boost::fusion::cons<boost::spirit::unused_type&, boost::fusion::nil>, boost::fusion::vector0<void> >, Skipper = boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::blank, boost::spirit::char_encoding::ascii> >, Exception = boost::spirit::qi::expectation_failure<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >]'/siglinux/tc/sles11sp1_gcc-4.3.4_x86-64/sig1/boost-1.49.0/include/boost/fusion/algorithm/query/detail/any.hpp:42: instantiated from 'bool boost::fusion::detail::linear_any(const First&, const Last&, F&, mpl_::false_) [with First = boost::fusion::cons_iterator<const boost::fusion::cons<boost::spirit::qi::action<boost::spirit::qi::lexeme_directive<boost::spirit::qi::sequence<boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::cons<boost::spirit::qi::plus<boost::spirit::qi::difference<boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::char_, boost::spirit::char_encoding::standard> >, boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false> > >, boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::nil> > > > >, boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval, boost::fusion::vector<boost::phoenix::reference<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::spirit::argument<0>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > > >, boost::fusion::cons<boost::spirit::qi::lexeme_directive<boost::spirit::qi::expect<boost::fusion::cons<boost::spirit::qi::plus<boost::spirit::qi::difference<boost::spirit::qi::omit_directive<boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::char_, boost::spirit::char_encoding::standard> > >, boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false> > >, boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::nil> > > >, boost::fusion::cons<boost::spirit::qi::sequence<boost::fusion::cons<boost::spirit::qi::eol_parser, boost::fusion::cons<boost::spirit::qi::kleene<boost::spirit::qi::action<boost::spirit::qi::reference<const boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::blank, boost::spirit::char_encoding::ascii> >, 0l>, ping::data::reply ()(), boost::spirit::unused_type, boost::spirit::unused_type> >, boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::detail::function_eval<2>, boost::fusion::vector<boost::phoenix::value<boost::phoenix::stl::push_back>, boost::phoenix::reference<std::vector<ping::data::reply, std::allocator<ping::data::reply> > >, boost::spirit::argument<0>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > > > >, boost::fusion::nil> > >, boost::fusion::cons<boost::spirit::qi::eol_parser, boost::fusion::cons<boost::spirit::qi::reference<const boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::blank, boost::spirit::char_encoding::ascii> >, 0l>, boost::spirit::unused_type, boost::spirit::unused_type, boost::spirit::unused_type> >, boost::fusion::cons<boost::spirit::qi::eoi_parser, boost::fusion::nil> > > > > > >, Last = boost::fusion::cons_iterator<const boost::fusion::nil>, F = boost::spirit::qi::detail::expect_function<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::spirit::context<boost::fusion::cons<boost::spirit::unused_type&, boost::fusion::nil>, boost::fusion::vector0<void> >, boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::blank, boost::spirit::char_encoding::ascii> >, boost::spirit::qi::expectation_failure<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >]'/siglinux/tc/sles11sp1_gcc-4.3.4_x86-64/sig1/boost-1.49.0/include/boost/fusion/algorithm/query/detail/any.hpp:42: instantiated from 'bool boost::fusion::detail::linear_any(const First&, const Last&, F&, mpl_::false_) [with First = boost::fusion::cons_iterator<const boost::fusion::cons<boost::spirit::qi::plus<boost::spirit::qi::action<boost::spirit::qi::difference<boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::char_, boost::spirit::char_encoding::standard> >, boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false> >, boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval, boost::fusion::vector<boost::phoenix::reference<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::spirit::argument<0>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > > > >, boost::fusion::cons<boost::spirit::qi::action<boost::spirit::qi::lexeme_directive<boost::spirit::qi::sequence<boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::cons<boost::spirit::qi::plus<boost::spirit::qi::difference<boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::char_, boost::spirit::char_encoding::standard> >, boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false> > >, boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::nil> > > > >, boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval, boost::fusion::vector<boost::phoenix::reference<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::spirit::argument<0>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > > >, boost::fusion::cons<boost::spirit::qi::lexeme_directive<boost::spirit::qi::expect<boost::fusion::cons<boost::spirit::qi::plus<boost::spirit::qi::difference<boost::spirit::qi::omit_directive<boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::char_, boost::spirit::char_encoding::standard> > >, boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false> > >, boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::nil> > > >, boost::fusion::cons<boost::spirit::qi::sequence<boost::fusion::cons<boost::spirit::qi::eol_parser, boost::fusion::cons<boost::spirit::qi::kleene<boost::spirit::qi::action<boost::spirit::qi::reference<const boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::blank, boost::spirit::char_encoding::ascii> >, 0l>, ping::data::reply ()(), boost::spirit::unused_type, boost::spirit::unused_type> >, boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::detail::function_eval<2>, boost::fusion::vector<boost::phoenix::value<boost::phoenix::stl::push_back>, boost::phoenix::reference<std::vector<ping::data::reply, std::allocator<ping::data::reply> > >, boost::spirit::argument<0>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > > > >, boost::fusion::nil> > >, boost::fusion::cons<boost::spirit::qi::eol_parser, boost::fusion::cons<boost::spirit::qi::reference<const boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::blank, boost::spirit::char_encoding::ascii> >, 0l>, boost::spirit::unused_type, boost::spirit::unused_type, boost::spirit::unused_type> >, boost::fusion::cons<boost::spirit::qi::eoi_parser, boost::fusion::nil> > > > > > > >, Last = boost::fusion::cons_iterator<const boost::fusion::nil>, F = boost::spirit::qi::detail::expect_function<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::spirit::context<boost::fusion::cons<boost::spirit::unused_type&, boost::fusion::nil>, boost::fusion::vector0<void> >, boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::blank, boost::spirit::char_encoding::ascii> >, boost::spirit::qi::expectation_failure<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >]'/siglinux/tc/sles11sp1_gcc-4.3.4_x86-64/sig1/boost-1.49.0/include/boost/fusion/algorithm/query/detail/any.hpp:42: instantiated from 'bool boost::fusion::detail::linear_any(const First&, const Last&, F&, mpl_::false_) [with First = boost::fusion::cons_iterator<const boost::fusion::cons<boost::spirit::qi::literal_string<const char (&)[5], true>, boost::fusion::cons<boost::spirit::qi::plus<boost::spirit::qi::action<boost::spirit::qi::difference<boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::char_, boost::spirit::char_encoding::standard> >, boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false> >, boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval, boost::fusion::vector<boost::phoenix::reference<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::spirit::argument<0>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > > > >, boost::fusion::cons<boost::spirit::qi::action<boost::spirit::qi::lexeme_directive<boost::spirit::qi::sequence<boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::cons<boost::spirit::qi::plus<boost::spirit::qi::difference<boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::char_, boost::spirit::char_encoding::standard> >, boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false> > >, boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::nil> > > > >, boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval, boost::fusion::vector<boost::phoenix::reference<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::spirit::argument<0>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > > >, boost::fusion::cons<boost::spirit::qi::lexeme_directive<boost::spirit::qi::expect<boost::fusion::cons<boost::spirit::qi::plus<boost::spirit::qi::difference<boost::spirit::qi::omit_directive<boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::char_, boost::spirit::char_encoding::standard> > >, boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false> > >, boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::nil> > > >, boost::fusion::cons<boost::spirit::qi::sequence<boost::fusion::cons<boost::spirit::qi::eol_parser, boost::fusion::cons<boost::spirit::qi::kleene<boost::spirit::qi::action<boost::spirit::qi::reference<const boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::blank, boost::spirit::char_encoding::ascii> >, 0l>, ping::data::reply ()(), boost::spirit::unused_type, boost::spirit::unused_type> >, boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::detail::function_eval<2>, boost::fusion::vector<boost::phoenix::value<boost::phoenix::stl::push_back>, boost::phoenix::reference<std::vector<ping::data::reply, std::allocator<ping::data::reply> > >, boost::spirit::argument<0>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > > > >, boost::fusion::nil> > >, boost::fusion::cons<boost::spirit::qi::eol_parser, boost::fusion::cons<boost::spirit::qi::reference<const boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::blank, boost::spirit::char_encoding::ascii> >, 0l>, boost::spirit::unused_type, boost::spirit::unused_type, boost::spirit::unused_type> >, boost::fusion::cons<boost::spirit::qi::eoi_parser, boost::fusion::nil> > > > > > > > >, Last = boost::fusion::cons_iterator<const boost::fusion::nil>, F = boost::spirit::qi::detail::expect_function<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::spirit::context<boost::fusion::cons<boost::spirit::unused_type&, boost::fusion::nil>, boost::fusion::vector0<void> >, boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::blank, boost::spirit::char_encoding::ascii> >, boost::spirit::qi::expectation_failure<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >]'/siglinux/tc/sles11sp1_gcc-4.3.4_x86-64/sig1/boost-1.49.0/include/boost/fusion/algorithm/query/detail/any.hpp:55: instantiated from 'bool boost::fusion::detail::any(const Sequence&, F, Tag) [with Sequence = boost::fusion::cons<boost::spirit::qi::literal_string<const char (&)[5], true>, boost::fusion::cons<boost::spirit::qi::plus<boost::spirit::qi::action<boost::spirit::qi::difference<boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::char_, boost::spirit::char_encoding::standard> >, boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false> >, boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval, boost::fusion::vector<boost::phoenix::reference<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::spirit::argument<0>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > > > >, boost::fusion::cons<boost::spirit::qi::action<boost::spirit::qi::lexeme_directive<boost::spirit::qi::sequence<boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::cons<boost::spirit::qi::plus<boost::spirit::qi::difference<boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::char_, boost::spirit::char_encoding::standard> >, boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false> > >, boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::nil> > > > >, boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval, boost::fusion::vector<boost::phoenix::reference<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::spirit::argument<0>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > > >, boost::fusion::cons<boost::spirit::qi::lexeme_directive<boost::spirit::qi::expect<boost::fusion::cons<boost::spirit::qi::plus<boost::spirit::qi::difference<boost::spirit::qi::omit_directive<boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::char_, boost::spirit::char_encoding::standard> > >, boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false> > >, boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::nil> > > >, boost::fusion::cons<boost::spirit::qi::sequence<boost::fusion::cons<boost::spirit::qi::eol_parser, boost::fusion::cons<boost::spirit::qi::kleene<boost::spirit::qi::action<boost::spirit::qi::reference<const boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::blank, boost::spirit::char_encoding::ascii> >, 0l>, ping::data::reply ()(), boost::spirit::unused_type, boost::spirit::unused_type> >, boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::detail::function_eval<2>, boost::fusion::vector<boost::phoenix::value<boost::phoenix::stl::push_back>, boost::phoenix::reference<std::vector<ping::data::reply, std::allocator<ping::data::reply> > >, boost::spirit::argument<0>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > > > >, boost::fusion::nil> > >, boost::fusion::cons<boost::spirit::qi::eol_parser, boost::fusion::cons<boost::spirit::qi::reference<const boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::blank, boost::spirit::char_encoding::ascii> >, 0l>, boost::spirit::unused_type, boost::spirit::unused_type, boost::spirit::unused_type> >, boost::fusion::cons<boost::spirit::qi::eoi_parser, boost::fusion::nil> > > > > > > >, F = boost::spirit::qi::detail::expect_function<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::spirit::context<boost::fusion::cons<boost::spirit::unused_type&, boost::fusion::nil>, boost::fusion::vector0<void> >, boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::blank, boost::spirit::char_encoding::ascii> >, boost::spirit::qi::expectation_failure<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, Tag = boost::fusion::forward_traversal_tag]'/siglinux/tc/sles11sp1_gcc-4.3.4_x86-64/sig1/boost-1.49.0/include/boost/fusion/algorithm/query/any.hpp:30: instantiated from 'bool boost::fusion::any(const Sequence&, F) [with Sequence = boost::fusion::cons<boost::spirit::qi::literal_string<const char (&)[5], true>, boost::fusion::cons<boost::spirit::qi::plus<boost::spirit::qi::action<boost::spirit::qi::difference<boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::char_, boost::spirit::char_encoding::standard> >, boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false> >, boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval, boost::fusion::vector<boost::phoenix::reference<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::spirit::argument<0>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > > > >, boost::fusion::cons<boost::spirit::qi::action<boost::spirit::qi::lexeme_directive<boost::spirit::qi::sequence<boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::cons<boost::spirit::qi::plus<boost::spirit::qi::difference<boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::char_, boost::spirit::char_encoding::standard> >, boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false> > >, boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::nil> > > > >, boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval, boost::fusion::vector<boost::phoenix::reference<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::spirit::argument<0>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > > >, boost::fusion::cons<boost::spirit::qi::lexeme_directive<boost::spirit::qi::expect<boost::fusion::cons<boost::spirit::qi::plus<boost::spirit::qi::difference<boost::spirit::qi::omit_directive<boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::char_, boost::spirit::char_encoding::standard> > >, boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false> > >, boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::nil> > > >, boost::fusion::cons<boost::spirit::qi::sequence<boost::fusion::cons<boost::spirit::qi::eol_parser, boost::fusion::cons<boost::spirit::qi::kleene<boost::spirit::qi::action<boost::spirit::qi::reference<const boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::blank, boost::spirit::char_encoding::ascii> >, 0l>, ping::data::reply ()(), boost::spirit::unused_type, boost::spirit::unused_type> >, boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::detail::function_eval<2>, boost::fusion::vector<boost::phoenix::value<boost::phoenix::stl::push_back>, boost::phoenix::reference<std::vector<ping::data::reply, std::allocator<ping::data::reply> > >, boost::spirit::argument<0>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > > > >, boost::fusion::nil> > >, boost::fusion::cons<boost::spirit::qi::eol_parser, boost::fusion::cons<boost::spirit::qi::reference<const boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::blank, boost::spirit::char_encoding::ascii> >, 0l>, boost::spirit::unused_type, boost::spirit::unused_type, boost::spirit::unused_type> >, boost::fusion::cons<boost::spirit::qi::eoi_parser, boost::fusion::nil> > > > > > > >, F = boost::spirit::qi::detail::expect_function<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::spirit::context<boost::fusion::cons<boost::spirit::unused_type&, boost::fusion::nil>, boost::fusion::vector0<void> >, boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::blank, boost::spirit::char_encoding::ascii> >, boost::spirit::qi::expectation_failure<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >]'/siglinux/tc/sles11sp1_gcc-4.3.4_x86-64/sig1/boost-1.49.0/include/boost/spirit/home/support/algorithm/any_if.hpp:214: instantiated from 'bool boost::spirit::any_if(const Sequence&, boost::spirit::unused_type, F, Pred) [with Pred = boost::spirit::traits::attribute_not_unused<boost::spirit::context<boost::fusion::cons<boost::spirit::unused_type&, boost::fusion::nil>, boost::fusion::vector0<void> >, __gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, Sequence = boost::fusion::cons<boost::spirit::qi::literal_string<const char (&)[5], true>, boost::fusion::cons<boost::spirit::qi::plus<boost::spirit::qi::action<boost::spirit::qi::difference<boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::char_, boost::spirit::char_encoding::standard> >, boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false> >, boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval, boost::fusion::vector<boost::phoenix::reference<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::spirit::argument<0>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > > > >, boost::fusion::cons<boost::spirit::qi::action<boost::spirit::qi::lexeme_directive<boost::spirit::qi::sequence<boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::cons<boost::spirit::qi::plus<boost::spirit::qi::difference<boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::char_, boost::spirit::char_encoding::standard> >, boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false> > >, boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::nil> > > > >, boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval, boost::fusion::vector<boost::phoenix::reference<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::spirit::argument<0>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > > >, boost::fusion::cons<boost::spirit::qi::lexeme_directive<boost::spirit::qi::expect<boost::fusion::cons<boost::spirit::qi::plus<boost::spirit::qi::difference<boost::spirit::qi::omit_directive<boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::char_, boost::spirit::char_encoding::standard> > >, boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false> > >, boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::nil> > > >, boost::fusion::cons<boost::spirit::qi::sequence<boost::fusion::cons<boost::spirit::qi::eol_parser, boost::fusion::cons<boost::spirit::qi::kleene<boost::spirit::qi::action<boost::spirit::qi::reference<const boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::blank, boost::spirit::char_encoding::ascii> >, 0l>, ping::data::reply ()(), boost::spirit::unused_type, boost::spirit::unused_type> >, boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::detail::function_eval<2>, boost::fusion::vector<boost::phoenix::value<boost::phoenix::stl::push_back>, boost::phoenix::reference<std::vector<ping::data::reply, std::allocator<ping::data::reply> > >, boost::spirit::argument<0>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > > > >, boost::fusion::nil> > >, boost::fusion::cons<boost::spirit::qi::eol_parser, boost::fusion::cons<boost::spirit::qi::reference<const boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::blank, boost::spirit::char_encoding::ascii> >, 0l>, boost::spirit::unused_type, boost::spirit::unused_type, boost::spirit::unused_type> >, boost::fusion::cons<boost::spirit::qi::eoi_parser, boost::fusion::nil> > > > > > > >, F = boost::spirit::qi::detail::expect_function<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::spirit::context<boost::fusion::cons<boost::spirit::unused_type&, boost::fusion::nil>, boost::fusion::vector0<void> >, boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::blank, boost::spirit::char_encoding::ascii> >, boost::spirit::qi::expectation_failure<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >]'/siglinux/tc/sles11sp1_gcc-4.3.4_x86-64/sig1/boost-1.49.0/include/boost/spirit/home/qi/operator/sequence_base.hpp:87: instantiated from 'bool boost::spirit::qi::sequence_base<Derived, Elements>::parse_impl(Iterator&, const Iterator&, Context&, const Skipper&, Attribute&, mpl_::false_) const [with Iterator = __gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, Context = boost::spirit::context<boost::fusion::cons<boost::spirit::unused_type&, boost::fusion::nil>, boost::fusion::vector0<void> >, Skipper = boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::blank, boost::spirit::char_encoding::ascii> >, Attribute = const boost::spirit::unused_type, Derived = boost::spirit::qi::expect<boost::fusion::cons<boost::spirit::qi::literal_string<const char (&)[5], true>, boost::fusion::cons<boost::spirit::qi::plus<boost::spirit::qi::action<boost::spirit::qi::difference<boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::char_, boost::spirit::char_encoding::standard> >, boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false> >, boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval, boost::fusion::vector<boost::phoenix::reference<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::spirit::argument<0>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > > > >, boost::fusion::cons<boost::spirit::qi::action<boost::spirit::qi::lexeme_directive<boost::spirit::qi::sequence<boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::cons<boost::spirit::qi::plus<boost::spirit::qi::difference<boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::char_, boost::spirit::char_encoding::standard> >, boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false> > >, boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::nil> > > > >, boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval, boost::fusion::vector<boost::phoenix::reference<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::spirit::argument<0>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > > >, boost::fusion::cons<boost::spirit::qi::lexeme_directive<boost::spirit::qi::expect<boost::fusion::cons<boost::spirit::qi::plus<boost::spirit::qi::difference<boost::spirit::qi::omit_directive<boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::char_, boost::spirit::char_encoding::standard> > >, boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false> > >, boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::nil> > > >, boost::fusion::cons<boost::spirit::qi::sequence<boost::fusion::cons<boost::spirit::qi::eol_parser, boost::fusion::cons<boost::spirit::qi::kleene<boost::spirit::qi::action<boost::spirit::qi::reference<const boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::blank, boost::spirit::char_encoding::ascii> >, 0l>, ping::data::reply ()(), boost::spirit::unused_type, boost::spirit::unused_type> >, boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::detail::function_eval<2>, boost::fusion::vector<boost::phoenix::value<boost::phoenix::stl::push_back>, boost::phoenix::reference<std::vector<ping::data::reply, std::allocator<ping::data::reply> > >, boost::spirit::argument<0>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > > > >, boost::fusion::nil> > >, boost::fusion::cons<boost::spirit::qi::eol_parser, boost::fusion::cons<boost::spirit::qi::reference<const boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::blank, boost::spirit::char_encoding::ascii> >, 0l>, boost::spirit::unused_type, boost::spirit::unused_type, boost::spirit::unused_type> >, boost::fusion::cons<boost::spirit::qi::eoi_parser, boost::fusion::nil> > > > > > > > >, Elements = boost::fusion::cons<boost::spirit::qi::literal_string<const char (&)[5], true>, boost::fusion::cons<boost::spirit::qi::plus<boost::spirit::qi::action<boost::spirit::qi::difference<boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::char_, boost::spirit::char_encoding::standard> >, boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false> >, boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval, boost::fusion::vector<boost::phoenix::reference<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::spirit::argument<0>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > > > >, boost::fusion::cons<boost::spirit::qi::action<boost::spirit::qi::lexeme_directive<boost::spirit::qi::sequence<boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::cons<boost::spirit::qi::plus<boost::spirit::qi::difference<boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::char_, boost::spirit::char_encoding::standard> >, boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false> > >, boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::nil> > > > >, boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval, boost::fusion::vector<boost::phoenix::reference<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::spirit::argument<0>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > > >, boost::fusion::cons<boost::spirit::qi::lexeme_directive<boost::spirit::qi::expect<boost::fusion::cons<boost::spirit::qi::plus<boost::spirit::qi::difference<boost::spirit::qi::omit_directive<boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::char_, boost::spirit::char_encoding::standard> > >, boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false> > >, boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::nil> > > >, boost::fusion::cons<boost::spirit::qi::sequence<boost::fusion::cons<boost::spirit::qi::eol_parser, boost::fusion::cons<boost::spirit::qi::kleene<boost::spirit::qi::action<boost::spirit::qi::reference<const boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::blank, boost::spirit::char_encoding::ascii> >, 0l>, ping::data::reply ()(), boost::spirit::unused_type, boost::spirit::unused_type> >, boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::detail::function_eval<2>, boost::fusion::vector<boost::phoenix::value<boost::phoenix::stl::push_back>, boost::phoenix::reference<std::vector<ping::data::reply, std::allocator<ping::data::reply> > >, boost::spirit::argument<0>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > > > >, boost::fusion::nil> > >, boost::fusion::cons<boost::spirit::qi::eol_parser, boost::fusion::cons<boost::spirit::qi::reference<const boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::blank, boost::spirit::char_encoding::ascii> >, 0l>, boost::spirit::unused_type, boost::spirit::unused_type, boost::spirit::unused_type> >, boost::fusion::cons<boost::spirit::qi::eoi_parser, boost::fusion::nil> > > > > > > >]'/siglinux/tc/sles11sp1_gcc-4.3.4_x86-64/sig1/boost-1.49.0/include/boost/spirit/home/qi/operator/sequence_base.hpp:124: instantiated from 'bool boost::spirit::qi::sequence_base<Derived, Elements>::parse(Iterator&, const Iterator&, Context&, const Skipper&, Attribute&) const [with Iterator = __gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, Context = boost::spirit::context<boost::fusion::cons<boost::spirit::unused_type&, boost::fusion::nil>, boost::fusion::vector0<void> >, Skipper = boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::blank, boost::spirit::char_encoding::ascii> >, Attribute = const boost::spirit::unused_type, Derived = boost::spirit::qi::expect<boost::fusion::cons<boost::spirit::qi::literal_string<const char (&)[5], true>, boost::fusion::cons<boost::spirit::qi::plus<boost::spirit::qi::action<boost::spirit::qi::difference<boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::char_, boost::spirit::char_encoding::standard> >, boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false> >, boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval, boost::fusion::vector<boost::phoenix::reference<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::spirit::argument<0>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > > > >, boost::fusion::cons<boost::spirit::qi::action<boost::spirit::qi::lexeme_directive<boost::spirit::qi::sequence<boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::cons<boost::spirit::qi::plus<boost::spirit::qi::difference<boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::char_, boost::spirit::char_encoding::standard> >, boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false> > >, boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::nil> > > > >, boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval, boost::fusion::vector<boost::phoenix::reference<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::spirit::argument<0>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > > >, boost::fusion::cons<boost::spirit::qi::lexeme_directive<boost::spirit::qi::expect<boost::fusion::cons<boost::spirit::qi::plus<boost::spirit::qi::difference<boost::spirit::qi::omit_directive<boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::char_, boost::spirit::char_encoding::standard> > >, boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false> > >, boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::nil> > > >, boost::fusion::cons<boost::spirit::qi::sequence<boost::fusion::cons<boost::spirit::qi::eol_parser, boost::fusion::cons<boost::spirit::qi::kleene<boost::spirit::qi::action<boost::spirit::qi::reference<const boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::blank, boost::spirit::char_encoding::ascii> >, 0l>, ping::data::reply ()(), boost::spirit::unused_type, boost::spirit::unused_type> >, boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::detail::function_eval<2>, boost::fusion::vector<boost::phoenix::value<boost::phoenix::stl::push_back>, boost::phoenix::reference<std::vector<ping::data::reply, std::allocator<ping::data::reply> > >, boost::spirit::argument<0>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > > > >, boost::fusion::nil> > >, boost::fusion::cons<boost::spirit::qi::eol_parser, boost::fusion::cons<boost::spirit::qi::reference<const boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::blank, boost::spirit::char_encoding::ascii> >, 0l>, boost::spirit::unused_type, boost::spirit::unused_type, boost::spirit::unused_type> >, boost::fusion::cons<boost::spirit::qi::eoi_parser, boost::fusion::nil> > > > > > > > >, Elements = boost::fusion::cons<boost::spirit::qi::literal_string<const char (&)[5], true>, boost::fusion::cons<boost::spirit::qi::plus<boost::spirit::qi::action<boost::spirit::qi::difference<boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::char_, boost::spirit::char_encoding::standard> >, boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false> >, boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval, boost::fusion::vector<boost::phoenix::reference<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::spirit::argument<0>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > > > >, boost::fusion::cons<boost::spirit::qi::action<boost::spirit::qi::lexeme_directive<boost::spirit::qi::sequence<boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::cons<boost::spirit::qi::plus<boost::spirit::qi::difference<boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::char_, boost::spirit::char_encoding::standard> >, boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false> > >, boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::nil> > > > >, boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval, boost::fusion::vector<boost::phoenix::reference<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::spirit::argument<0>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > > >, boost::fusion::cons<boost::spirit::qi::lexeme_directive<boost::spirit::qi::expect<boost::fusion::cons<boost::spirit::qi::plus<boost::spirit::qi::difference<boost::spirit::qi::omit_directive<boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::char_, boost::spirit::char_encoding::standard> > >, boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false> > >, boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::nil> > > >, boost::fusion::cons<boost::spirit::qi::sequence<boost::fusion::cons<boost::spirit::qi::eol_parser, boost::fusion::cons<boost::spirit::qi::kleene<boost::spirit::qi::action<boost::spirit::qi::reference<const boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::blank, boost::spirit::char_encoding::ascii> >, 0l>, ping::data::reply ()(), boost::spirit::unused_type, boost::spirit::unused_type> >, boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::detail::function_eval<2>, boost::fusion::vector<boost::phoenix::value<boost::phoenix::stl::push_back>, boost::phoenix::reference<std::vector<ping::data::reply, std::allocator<ping::data::reply> > >, boost::spirit::argument<0>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > > > >, boost::fusion::nil> > >, boost::fusion::cons<boost::spirit::qi::eol_parser, boost::fusion::cons<boost::spirit::qi::reference<const boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::blank, boost::spirit::char_encoding::ascii> >, 0l>, boost::spirit::unused_type, boost::spirit::unused_type, boost::spirit::unused_type> >, boost::fusion::cons<boost::spirit::qi::eoi_parser, boost::fusion::nil> > > > > > > >]'/siglinux/tc/sles11sp1_gcc-4.3.4_x86-64/sig1/boost-1.49.0/include/boost/spirit/home/qi/nonterminal/detail/parser_binder.hpp:33: instantiated from 'bool boost::spirit::qi::detail::parser_binder<Parser, Auto>::call(Iterator&, const Iterator&, Context&, const Skipper&, mpl_::true_) const [with Iterator = __gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, Skipper = boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::blank, boost::spirit::char_encoding::ascii> >, Context = boost::spirit::context<boost::fusion::cons<boost::spirit::unused_type&, boost::fusion::nil>, boost::fusion::vector0<void> >, Parser = boost::spirit::qi::expect<boost::fusion::cons<boost::spirit::qi::literal_string<const char (&)[5], true>, boost::fusion::cons<boost::spirit::qi::plus<boost::spirit::qi::action<boost::spirit::qi::difference<boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::char_, boost::spirit::char_encoding::standard> >, boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false> >, boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval, boost::fusion::vector<boost::phoenix::reference<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::spirit::argument<0>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > > > >, boost::fusion::cons<boost::spirit::qi::action<boost::spirit::qi::lexeme_directive<boost::spirit::qi::sequence<boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::cons<boost::spirit::qi::plus<boost::spirit::qi::difference<boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::char_, boost::spirit::char_encoding::standard> >, boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false> > >, boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::nil> > > > >, boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval, boost::fusion::vector<boost::phoenix::reference<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::spirit::argument<0>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > > >, boost::fusion::cons<boost::spirit::qi::lexeme_directive<boost::spirit::qi::expect<boost::fusion::cons<boost::spirit::qi::plus<boost::spirit::qi::difference<boost::spirit::qi::omit_directive<boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::char_, boost::spirit::char_encoding::standard> > >, boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false> > >, boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::nil> > > >, boost::fusion::cons<boost::spirit::qi::sequence<boost::fusion::cons<boost::spirit::qi::eol_parser, boost::fusion::cons<boost::spirit::qi::kleene<boost::spirit::qi::action<boost::spirit::qi::reference<const boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::blank, boost::spirit::char_encoding::ascii> >, 0l>, ping::data::reply ()(), boost::spirit::unused_type, boost::spirit::unused_type> >, boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::detail::function_eval<2>, boost::fusion::vector<boost::phoenix::value<boost::phoenix::stl::push_back>, boost::phoenix::reference<std::vector<ping::data::reply, std::allocator<ping::data::reply> > >, boost::spirit::argument<0>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > > > >, boost::fusion::nil> > >, boost::fusion::cons<boost::spirit::qi::eol_parser, boost::fusion::cons<boost::spirit::qi::reference<const boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::blank, boost::spirit::char_encoding::ascii> >, 0l>, boost::spirit::unused_type, boost::spirit::unused_type, boost::spirit::unused_type> >, boost::fusion::cons<boost::spirit::qi::eoi_parser, boost::fusion::nil> > > > > > > > >, Auto = mpl_::bool_<false>]'/siglinux/tc/sles11sp1_gcc-4.3.4_x86-64/sig1/boost-1.49.0/include/boost/spirit/home/qi/nonterminal/detail/parser_binder.hpp:53: instantiated from 'bool boost::spirit::qi::detail::parser_binder<Parser, Auto>::operator()(Iterator&, const Iterator&, Context&, const Skipper&) const [with Iterator = __gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, Skipper = boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::blank, boost::spirit::char_encoding::ascii> >, Context = boost::spirit::context<boost::fusion::cons<boost::spirit::unused_type&, boost::fusion::nil>, boost::fusion::vector0<void> >, Parser = boost::spirit::qi::expect<boost::fusion::cons<boost::spirit::qi::literal_string<const char (&)[5], true>, boost::fusion::cons<boost::spirit::qi::plus<boost::spirit::qi::action<boost::spirit::qi::difference<boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::char_, boost::spirit::char_encoding::standard> >, boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false> >, boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval, boost::fusion::vector<boost::phoenix::reference<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::spirit::argument<0>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > > > >, boost::fusion::cons<boost::spirit::qi::action<boost::spirit::qi::lexeme_directive<boost::spirit::qi::sequence<boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::cons<boost::spirit::qi::plus<boost::spirit::qi::difference<boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::char_, boost::spirit::char_encoding::standard> >, boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false> > >, boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::nil> > > > >, boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval, boost::fusion::vector<boost::phoenix::reference<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::spirit::argument<0>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > > >, boost::fusion::cons<boost::spirit::qi::lexeme_directive<boost::spirit::qi::expect<boost::fusion::cons<boost::spirit::qi::plus<boost::spirit::qi::difference<boost::spirit::qi::omit_directive<boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::char_, boost::spirit::char_encoding::standard> > >, boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false> > >, boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::nil> > > >, boost::fusion::cons<boost::spirit::qi::sequence<boost::fusion::cons<boost::spirit::qi::eol_parser, boost::fusion::cons<boost::spirit::qi::kleene<boost::spirit::qi::action<boost::spirit::qi::reference<const boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::blank, boost::spirit::char_encoding::ascii> >, 0l>, ping::data::reply ()(), boost::spirit::unused_type, boost::spirit::unused_type> >, boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::detail::function_eval<2>, boost::fusion::vector<boost::phoenix::value<boost::phoenix::stl::push_back>, boost::phoenix::reference<std::vector<ping::data::reply, std::allocator<ping::data::reply> > >, boost::spirit::argument<0>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > > > >, boost::fusion::nil> > >, boost::fusion::cons<boost::spirit::qi::eol_parser, boost::fusion::cons<boost::spirit::qi::reference<const boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::blank, boost::spirit::char_encoding::ascii> >, 0l>, boost::spirit::unused_type, boost::spirit::unused_type, boost::spirit::unused_type> >, boost::fusion::cons<boost::spirit::qi::eoi_parser, boost::fusion::nil> > > > > > > > >, Auto = mpl_::bool_<false>]'/siglinux/tc/sles11sp1_gcc-4.3.4_x86-64/sig1/boost-1.49.0/include/boost/function/function_template.hpp:132: instantiated from 'static R boost::detail::function::function_obj_invoker4<FunctionObj, R, T0, T1, T2, T3>::invoke(boost::detail::function::function_buffer&, T0, T1, T2, T3) [with FunctionObj = boost::spirit::qi::detail::parser_binder<boost::spirit::qi::expect<boost::fusion::cons<boost::spirit::qi::literal_string<const char (&)[5], true>, boost::fusion::cons<boost::spirit::qi::plus<boost::spirit::qi::action<boost::spirit::qi::difference<boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::char_, boost::spirit::char_encoding::standard> >, boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false> >, boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval, boost::fusion::vector<boost::phoenix::reference<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::spirit::argument<0>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > > > >, boost::fusion::cons<boost::spirit::qi::action<boost::spirit::qi::lexeme_directive<boost::spirit::qi::sequence<boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::cons<boost::spirit::qi::plus<boost::spirit::qi::difference<boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::char_, boost::spirit::char_encoding::standard> >, boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false> > >, boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::nil> > > > >, boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval, boost::fusion::vector<boost::phoenix::reference<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::spirit::argument<0>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > > >, boost::fusion::cons<boost::spirit::qi::lexeme_directive<boost::spirit::qi::expect<boost::fusion::cons<boost::spirit::qi::plus<boost::spirit::qi::difference<boost::spirit::qi::omit_directive<boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::char_, boost::spirit::char_encoding::standard> > >, boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false> > >, boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::nil> > > >, boost::fusion::cons<boost::spirit::qi::sequence<boost::fusion::cons<boost::spirit::qi::eol_parser, boost::fusion::cons<boost::spirit::qi::kleene<boost::spirit::qi::action<boost::spirit::qi::reference<const boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::blank, boost::spirit::char_encoding::ascii> >, 0l>, ping::data::reply ()(), boost::spirit::unused_type, boost::spirit::unused_type> >, boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::detail::function_eval<2>, boost::fusion::vector<boost::phoenix::value<boost::phoenix::stl::push_back>, boost::phoenix::reference<std::vector<ping::data::reply, std::allocator<ping::data::reply> > >, boost::spirit::argument<0>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > > > >, boost::fusion::nil> > >, boost::fusion::cons<boost::spirit::qi::eol_parser, boost::fusion::cons<boost::spirit::qi::reference<const boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::blank, boost::spirit::char_encoding::ascii> >, 0l>, boost::spirit::unused_type, boost::spirit::unused_type, boost::spirit::unused_type> >, boost::fusion::cons<boost::spirit::qi::eoi_parser, boost::fusion::nil> > > > > > > > >, mpl_::bool_<false> >, R = bool, T0 = __gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >&, T1 = const __gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >&, T2 = boost::spirit::context<boost::fusion::cons<boost::spirit::unused_type&, boost::fusion::nil>, boost::fusion::vector0<void> >&, T3 = const boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::blank, boost::spirit::char_encoding::ascii> >&]'/siglinux/tc/sles11sp1_gcc-4.3.4_x86-64/sig1/boost-1.49.0/include/boost/function/function_template.hpp:907: instantiated from 'void boost::function4<R, T1, T2, T3, T4>::assign_to(Functor) [with Functor = boost::spirit::qi::detail::parser_binder<boost::spirit::qi::expect<boost::fusion::cons<boost::spirit::qi::literal_string<const char (&)[5], true>, boost::fusion::cons<boost::spirit::qi::plus<boost::spirit::qi::action<boost::spirit::qi::difference<boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::char_, boost::spirit::char_encoding::standard> >, boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false> >, boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval, boost::fusion::vector<boost::phoenix::reference<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::spirit::argument<0>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > > > >, boost::fusion::cons<boost::spirit::qi::action<boost::spirit::qi::lexeme_directive<boost::spirit::qi::sequence<boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::cons<boost::spirit::qi::plus<boost::spirit::qi::difference<boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::char_, boost::spirit::char_encoding::standard> >, boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false> > >, boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::nil> > > > >, boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval, boost::fusion::vector<boost::phoenix::reference<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::spirit::argument<0>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > > >, boost::fusion::cons<boost::spirit::qi::lexeme_directive<boost::spirit::qi::expect<boost::fusion::cons<boost::spirit::qi::plus<boost::spirit::qi::difference<boost::spirit::qi::omit_directive<boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::char_, boost::spirit::char_encoding::standard> > >, boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false> > >, boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::nil> > > >, boost::fusion::cons<boost::spirit::qi::sequence<boost::fusion::cons<boost::spirit::qi::eol_parser, boost::fusion::cons<boost::spirit::qi::kleene<boost::spirit::qi::action<boost::spirit::qi::reference<const boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::blank, boost::spirit::char_encoding::ascii> >, 0l>, ping::data::reply ()(), boost::spirit::unused_type, boost::spirit::unused_type> >, boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::detail::function_eval<2>, boost::fusion::vector<boost::phoenix::value<boost::phoenix::stl::push_back>, boost::phoenix::reference<std::vector<ping::data::reply, std::allocator<ping::data::reply> > >, boost::spirit::argument<0>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > > > >, boost::fusion::nil> > >, boost::fusion::cons<boost::spirit::qi::eol_parser, boost::fusion::cons<boost::spirit::qi::reference<const boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::blank, boost::spirit::char_encoding::ascii> >, 0l>, boost::spirit::unused_type, boost::spirit::unused_type, boost::spirit::unused_type> >, boost::fusion::cons<boost::spirit::qi::eoi_parser, boost::fusion::nil> > > > > > > > >, mpl_::bool_<false> >, R = bool, T0 = __gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >&, T1 = const __gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >&, T2 = boost::spirit::context<boost::fusion::cons<boost::spirit::unused_type&, boost::fusion::nil>, boost::fusion::vector0<void> >&, T3 = const boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::blank, boost::spirit::char_encoding::ascii> >&]'/siglinux/tc/sles11sp1_gcc-4.3.4_x86-64/sig1/boost-1.49.0/include/boost/function/function_template.hpp:722: instantiated from 'boost::function4<R, T1, T2, T3, T4>::function4(Functor, typename boost::enable_if_c<boost::type_traits::ice_not::value, int>::type) [with Functor = boost::spirit::qi::detail::parser_binder<boost::spirit::qi::expect<boost::fusion::cons<boost::spirit::qi::literal_string<const char (&)[5], true>, boost::fusion::cons<boost::spirit::qi::plus<boost::spirit::qi::action<boost::spirit::qi::difference<boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::char_, boost::spirit::char_encoding::standard> >, boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false> >, boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval, boost::fusion::vector<boost::phoenix::reference<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::spirit::argument<0>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > > > >, boost::fusion::cons<boost::spirit::qi::action<boost::spirit::qi::lexeme_directive<boost::spirit::qi::sequence<boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::cons<boost::spirit::qi::plus<boost::spirit::qi::difference<boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::char_, boost::spirit::char_encoding::standard> >, boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false> > >, boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::nil> > > > >, boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval, boost::fusion::vector<boost::phoenix::reference<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::spirit::argument<0>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > > >, boost::fusion::cons<boost::spirit::qi::lexeme_directive<boost::spirit::qi::expect<boost::fusion::cons<boost::spirit::qi::plus<boost::spirit::qi::difference<boost::spirit::qi::omit_directive<boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::char_, boost::spirit::char_encoding::standard> > >, boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false> > >, boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::nil> > > >, boost::fusion::cons<boost::spirit::qi::sequence<boost::fusion::cons<boost::spirit::qi::eol_parser, boost::fusion::cons<boost::spirit::qi::kleene<boost::spirit::qi::action<boost::spirit::qi::reference<const boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::blank, boost::spirit::char_encoding::ascii> >, 0l>, ping::data::reply ()(), boost::spirit::unused_type, boost::spirit::unused_type> >, boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::detail::function_eval<2>, boost::fusion::vector<boost::phoenix::value<boost::phoenix::stl::push_back>, boost::phoenix::reference<std::vector<ping::data::reply, std::allocator<ping::data::reply> > >, boost::spirit::argument<0>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > > > >, boost::fusion::nil> > >, boost::fusion::cons<boost::spirit::qi::eol_parser, boost::fusion::cons<boost::spirit::qi::reference<const boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::blank, boost::spirit::char_encoding::ascii> >, 0l>, boost::spirit::unused_type, boost::spirit::unused_type, boost::spirit::unused_type> >, boost::fusion::cons<boost::spirit::qi::eoi_parser, boost::fusion::nil> > > > > > > > >, mpl_::bool_<false> >, R = bool, T0 = __gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >&, T1 = const __gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >&, T2 = boost::spirit::context<boost::fusion::cons<boost::spirit::unused_type&, boost::fusion::nil>, boost::fusion::vector0<void> >&, T3 = const boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::blank, boost::spirit::char_encoding::ascii> >&]'/siglinux/tc/sles11sp1_gcc-4.3.4_x86-64/sig1/boost-1.49.0/include/boost/function/function_template.hpp:1042: instantiated from 'boost::function<R ()(T0, T1, T2, T3)>::function(Functor, typename boost::enable_if_c<boost::type_traits::ice_not::value, int>::type) [with Functor = boost::spirit::qi::detail::parser_binder<boost::spirit::qi::expect<boost::fusion::cons<boost::spirit::qi::literal_string<const char (&)[5], true>, boost::fusion::cons<boost::spirit::qi::plus<boost::spirit::qi::action<boost::spirit::qi::difference<boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::char_, boost::spirit::char_encoding::standard> >, boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false> >, boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval, boost::fusion::vector<boost::phoenix::reference<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::spirit::argument<0>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > > > >, boost::fusion::cons<boost::spirit::qi::action<boost::spirit::qi::lexeme_directive<boost::spirit::qi::sequence<boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::cons<boost::spirit::qi::plus<boost::spirit::qi::difference<boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::char_, boost::spirit::char_encoding::standard> >, boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false> > >, boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::nil> > > > >, boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval, boost::fusion::vector<boost::phoenix::reference<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::spirit::argument<0>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > > >, boost::fusion::cons<boost::spirit::qi::lexeme_directive<boost::spirit::qi::expect<boost::fusion::cons<boost::spirit::qi::plus<boost::spirit::qi::difference<boost::spirit::qi::omit_directive<boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::char_, boost::spirit::char_encoding::standard> > >, boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false> > >, boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::nil> > > >, boost::fusion::cons<boost::spirit::qi::sequence<boost::fusion::cons<boost::spirit::qi::eol_parser, boost::fusion::cons<boost::spirit::qi::kleene<boost::spirit::qi::action<boost::spirit::qi::reference<const boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::blank, boost::spirit::char_encoding::ascii> >, 0l>, ping::data::reply ()(), boost::spirit::unused_type, boost::spirit::unused_type> >, boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::detail::function_eval<2>, boost::fusion::vector<boost::phoenix::value<boost::phoenix::stl::push_back>, boost::phoenix::reference<std::vector<ping::data::reply, std::allocator<ping::data::reply> > >, boost::spirit::argument<0>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > > > >, boost::fusion::nil> > >, boost::fusion::cons<boost::spirit::qi::eol_parser, boost::fusion::cons<boost::spirit::qi::reference<const boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::blank, boost::spirit::char_encoding::ascii> >, 0l>, boost::spirit::unused_type, boost::spirit::unused_type, boost::spirit::unused_type> >, boost::fusion::cons<boost::spirit::qi::eoi_parser, boost::fusion::nil> > > > > > > > >, mpl_::bool_<false> >, R = bool, T0 = __gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >&, T1 = const __gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >&, T2 = boost::spirit::context<boost::fusion::cons<boost::spirit::unused_type&, boost::fusion::nil>, boost::fusion::vector0<void> >&, T3 = const boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::blank, boost::spirit::char_encoding::ascii> >&]'/siglinux/tc/sles11sp1_gcc-4.3.4_x86-64/sig1/boost-1.49.0/include/boost/function/function_template.hpp:1083: instantiated from 'typename boost::enable_if_c<boost::type_traits::ice_not::value, boost::function<R ()(T0, T1, T2, T3)>&>::type boost::function<R ()(T0, T1, T2, T3)>::operator=(Functor) [with Functor = boost::spirit::qi::detail::parser_binder<boost::spirit::qi::expect<boost::fusion::cons<boost::spirit::qi::literal_string<const char (&)[5], true>, boost::fusion::cons<boost::spirit::qi::plus<boost::spirit::qi::action<boost::spirit::qi::difference<boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::char_, boost::spirit::char_encoding::standard> >, boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false> >, boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval, boost::fusion::vector<boost::phoenix::reference<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::spirit::argument<0>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > > > >, boost::fusion::cons<boost::spirit::qi::action<boost::spirit::qi::lexeme_directive<boost::spirit::qi::sequence<boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::cons<boost::spirit::qi::plus<boost::spirit::qi::difference<boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::char_, boost::spirit::char_encoding::standard> >, boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false> > >, boost::fusion::cons<boost::spirit::qi::literal_char<boost::spirit::char_encoding::standard, true, false>, boost::fusion::nil> > > > >, boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval, boost::fusion::vector<boost::phoenix::reference<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::spirit::argument<0>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > > >,

80

Page 81: Parsing with  Boost.Spirit

Problems: Confusing Errors…/boost-1.49.0/include/boost/spirit/home/support/action_dispatch.hpp:178: error: no match for call to '(const boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval, boost::fusion::vector<boost::phoenix::reference<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::spirit::argument<0>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > >) (boost::fusion::vector1<std::vector<char, std::allocator<char> >&>&, boost::spirit::context<boost::fusion::cons<boost::spirit::unused_type&, boost::fusion::nil>, boost::fusion::vector0<void> >&, bool&)'…/boost-1.49.0/include/boost/spirit/home/phoenix/core/actor.hpp:107: note: candidates are: typename boost::mpl::eval_if<typename Eval::no_nullary, boost::mpl::identity<boost::phoenix::detail::error_expecting_arguments>, boost::phoenix::eval_result<Eval, boost::phoenix::basic_environment<boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > >::type boost::phoenix::actor<Eval>::operator()() const [with Eval = boost::phoenix::composite<boost::phoenix::assign_eval, boost::fusion::vector<boost::phoenix::reference<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::spirit::argument<0>, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> >]

81

Page 82: Parsing with  Boost.Spirit

Debugging Compilation Problems• Divide and conquer

• Add more rules• Comment out parts to isolate the offending portion

• Search back for ***** in error backtrace• Open Boost.Spirit header that generated the static

assertion• Read comment

82

Page 83: Parsing with  Boost.Spirit

Debugging Parsing Failures• Define BOOST_SPIRIT_DEBUG before Boost.Spirit

include directives• Use BOOST_SPIRIT_DEBUG_NODES macro to make rules

display debug output• on_error

83

Page 84: Parsing with  Boost.Spirit

BOOST_SPIRIT_DEBUG_NODESBOOST_SPIRIT_DEBUG_NODES( (computed) (host) (ip_address) (reply) (skip_to) (start) (summary))

84

Page 85: Parsing with  Boost.Spirit

BOOST_SPIRIT_DEBUG_NODES<start> <try>PING www.google.com </try> <host> <try> www.google.com (74.</try> <success> (74.125.131.147) 56</success> <attributes>[[w, w, w, ., g, o, o, g, l, e, ., c, o, m]]</attributes> </host> <ip_address> <try> (74.125.131.147) 56</try> <success> 56(84) bytes of dat</success> <attributes>[[7, 4, ., 1, 2, 5, ., 1, 3, 1, ., 1, 4, 7]]</attributes> </ip_address> <reply> <try>64 bytes from vc-in-</try> <success>30 bytes from vc-in-</success> <attributes>[[64, 63, 4.32]]</attributes> </reply> <reply> <try>30 bytes from vc-in-</try> <success>25 bytes from vc-in-</success> <attributes>[[30, 62, 0.252]]</attributes> </reply>...

85

Page 86: Parsing with  Boost.Spirit

on_error• Member function template of qi::grammar• Parameterized by

• fail: Quit parsing and indicate failure (which may throw)• retry: Retry after return from on_error()• accept: Continue parsing after return from on_error()• rethrow: Rethrow error exception

• Arguments:• first, last: Input range when current parser started• where: Iterator position where the error occurred• what: A string describing the failure

86

Page 87: Parsing with  Boost.Spirit

Collecting Data

87

Page 88: Parsing with  Boost.Spirit

Collecting Data• Types to hold data for each

• Rule• Grammar

• Add synthesized attributes to• Rules• Grammar

• Might use Boost.Phoenix to set some values• Beyond the scope of this presentation

88