parsing with boost.spirit
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 PresentationTRANSCRIPT
![Page 2: Parsing with Boost.Spirit](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/2.jpg)
Overview• Introduction to Boost.Spirit• Parsing with Qi• Parsing ping command output• Problems using Qi
2
![Page 3: Parsing with Boost.Spirit](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/3.jpg)
Introduction to Boost.Spirit
3
![Page 4: Parsing with Boost.Spirit](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/4.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/5.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/6.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/7.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/8.jpg)
Parsing with Qi
8
![Page 9: Parsing with Boost.Spirit](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/9.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/10.jpg)
Parsers like Function Objects• Arguments: Inherited Attributes• Return value: Synthesized Attribute• State
10
![Page 11: Parsing with Boost.Spirit](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/11.jpg)
Parser Conceptboolparse(FwdIt, FwdIt, Context, Skipper, Attribute);infowhat(Context);
11
![Page 12: Parsing with Boost.Spirit](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/12.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/13.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/14.jpg)
Parsing a Comma-delimited List of doublesdouble_ >> *(lit(',') >> double_)
14
![Page 15: Parsing with Boost.Spirit](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/15.jpg)
Parsing a Comma-delimited List of doublesdouble_ >> *(lit(',') >> double_)
15
Matches sign, mantissa, and exponent
![Page 16: Parsing with Boost.Spirit](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/16.jpg)
Parsing a Comma-delimited List of doublesdouble_ >> *(lit(',') >> double_)
16
Left side might be followed by right side
![Page 17: Parsing with Boost.Spirit](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/17.jpg)
Parsing a Comma-delimited List of doublesdouble_ >> *(lit(',') >> double_)
17
Kleene star: zero or more
![Page 18: Parsing with Boost.Spirit](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/18.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/19.jpg)
Parsing a Comma-delimited List of doublesdouble_ >> *(lit(',') >> double_)
19
![Page 20: Parsing with Boost.Spirit](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/20.jpg)
Parsing a Comma-delimited List of doublesdouble_ >> *(lit(',') >> double_)
20
![Page 21: Parsing with Boost.Spirit](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/21.jpg)
Parsing a Comma-delimited List of doublesdouble_ >> *(lit(',') >> double_)double_ % ','
21
Qi extends PEG operators for convenience
![Page 22: Parsing with Boost.Spirit](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/22.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/23.jpg)
Using parse()template <class It>boolmatches(It _first, It _last){ return parse(_first, _last, double_ % ',');}
23
![Page 24: Parsing with Boost.Spirit](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/24.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/25.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/26.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/27.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/28.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/29.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/30.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/31.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/32.jpg)
Example: Parsing ping Command Output
32
![Page 33: Parsing with Boost.Spirit](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/33.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/34.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/35.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/36.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/37.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/38.jpg)
Creating the ping Parserpublic: parser() : parser::base_type(start, "ping parser") { }private: qi::rule<It,Skipper> start;
38
![Page 39: Parsing with Boost.Spirit](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/39.jpg)
Creating the ping Parserpublic: parser() : parser::base_type(start, "ping parser") { }private: qi::rule<It,Skipper> start;
39
![Page 40: Parsing with Boost.Spirit](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/40.jpg)
Creating the ping Parserpublic: parser() : parser::base_type(start, "ping parser") { }private: qi::rule<It,Skipper> start;
40
![Page 41: Parsing with Boost.Spirit](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/41.jpg)
start RulePING www.google.com (74.125.131.147) 56(84) bytes of data.
start = lit("PING") …
41
![Page 42: Parsing with Boost.Spirit](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/42.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/43.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/44.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/45.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/46.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/47.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/48.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/49.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/50.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/51.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/52.jpg)
start Rulestart = lit("PING") … > eol > summary > eol > computed > eol > eoi ;
52
![Page 53: Parsing with Boost.Spirit](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/53.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/54.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/55.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/56.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/57.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/58.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/59.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/60.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/61.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/62.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/63.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/64.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/65.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/66.jpg)
summary Rule3 packets transmitted, 3 received, 0% packet loss, time 2003ms
summary = uint_ … ;
66
![Page 67: Parsing with Boost.Spirit](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/67.jpg)
summary Rule3 packets transmitted, 3 received, 0% packet loss, time 2003ms
summary = uint_ > skip_to(',') … ;
67
![Page 68: Parsing with Boost.Spirit](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/68.jpg)
summary Rule3 packets transmitted, 3 received, 0% packet loss, time 2003ms
summary = uint_ > skip_to(',') > uint_ … ;
68
![Page 69: Parsing with Boost.Spirit](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/69.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/70.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/71.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/72.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/73.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/74.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/75.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/76.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/77.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/78.jpg)
Problems Using Qi
78
![Page 79: Parsing with Boost.Spirit](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/79.jpg)
Problems• Slow compiles• High compiler memory demands• Gigantic error backtraces• Confusing errors• Debugging
79
![Page 80: Parsing with Boost.Spirit](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/80.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/81.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/82.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/83.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/84.jpg)
BOOST_SPIRIT_DEBUG_NODESBOOST_SPIRIT_DEBUG_NODES( (computed) (host) (ip_address) (reply) (skip_to) (start) (summary))
84
![Page 85: Parsing with Boost.Spirit](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/85.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/86.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/87.jpg)
Collecting Data
87
![Page 88: Parsing with Boost.Spirit](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/88.jpg)
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
![Page 89: Parsing with Boost.Spirit](https://reader035.vdocuments.mx/reader035/viewer/2022062315/56816624550346895dd97d28/html5/thumbnails/89.jpg)
Resources• http://www.boost.org/libs/spirit• http://boost-spirit.com/home/• http://
en.wikipedia.org/wiki/Parsing_expression_grammar• http://boost-spirit.com/home/2011/02/28/dispatchin
g-on-expectation-point-failures/
89