OPAL (Object Oriented Parallel Accelerator Library)  2.2.0
OPAL
skipper.hpp
Go to the documentation of this file.
1 //
2 // Copyright & License: See Copyright.readme in src directory
3 //
4 
9 #ifndef SKIPPER_HPP_
10 #define SKIPPER_HPP_
11 
12 #include <boost/spirit/include/qi.hpp>
13 
14 namespace SDDS { namespace parser
15 {
16  namespace qi = boost::spirit::qi;
17  namespace ascii = boost::spirit::ascii;
18 
20  // The skipper grammar
22  template <typename Iterator>
23  struct skipper : qi::grammar<Iterator>
24  {
25  skipper() : skipper::base_type(start)
26  {
27  qi::eol_type eol;
28  qi::eoi_type eoi;
29  qi::char_type char_;
30  ascii::space_type space;
31 
32  start =
33  space
34  | "!" >> *(char_ - eol) >> (eol|eoi) // comments
35  ;
36  }
37 
38  qi::rule<Iterator> start;
39  };
40 
41  template <typename Iterator>
42  struct listskipper : qi::grammar<Iterator>
43  {
44  listskipper() : listskipper::base_type(start)
45  {
46  qi::char_type char_;
47  ascii::space_type space;
48 
49  start =
50  space
51  | char_(',')
52  ;
53  }
54 
55  qi::rule<Iterator> start;
56  };
57 
58 }}
59 
60 #endif
61 
62 
qi::rule< Iterator > start
Definition: skipper.hpp:38
qi::rule< Iterator > start
Definition: skipper.hpp:55