16 #include <boost/config/warning_disable.hpp>
17 #include <boost/spirit/include/qi.hpp>
18 #include <boost/fusion/include/adapt_struct.hpp>
22 #define BOOST_SPIRIT_NO_PREDEFINED_TERMINALS
23 #define BOOST_SPIRIT_QI_DEBUG
40 template <attributes A>
45 std::string attributeString;
49 attributeString =
"name";
52 attributeString =
"symbol";
55 attributeString =
"units";
58 attributeString =
"description";
61 attributeString =
"format_string";
64 attributeString =
"group_name";
67 attributeString =
"type";
70 attributeString =
"field_length";
73 attributeString =
"dimensions";
76 attributeString =
"array";
81 std::cerr << attributeString <<
" not supported yet" <<
std::endl;
94 namespace SDDS {
namespace parser
96 namespace qi = boost::spirit::qi;
97 namespace ascii = boost::spirit::ascii;
98 namespace phx = boost::phoenix;
100 template <
typename Iterator>
101 struct array_parser: qi::grammar<Iterator, array(), skipper<Iterator> >
105 qi::rule<Iterator, array(), skipper<Iterator> >
start;
106 qi::rule<Iterator, std::string(), skipper<Iterator> >
array_name,
111 qi::rule<Iterator, ast::datatype, skipper<Iterator> >
array_type;
qi::rule< Iterator, ast::nil(), skipper< Iterator > > array_unsupported_pre
qi::rule< Iterator, std::string(), skipper< Iterator > > array_symbol
array_parser(error_handler< Iterator > &_error_handler)
qi::rule< Iterator, array(), skipper< Iterator > > start
qi::rule< Iterator, std::string(), skipper< Iterator > > quoted_string
qi::rule< Iterator, ast::datatype, skipper< Iterator > > array_type
qi::rule< Iterator, long(), skipper< Iterator > > array_dimensions
qi::symbols< char, ast::datatype > arraytype
qi::rule< Iterator, std::string(), skipper< Iterator > > string
qi::rule< Iterator, std::string(), skipper< Iterator > > array_description
qi::rule< Iterator, long(), skipper< Iterator > > array_field
qi::rule< Iterator, std::string(), skipper< Iterator > > array_units
qi::rule< Iterator, std::string(), skipper< Iterator > > array_format
qi::rule< Iterator, std::string(), skipper< Iterator > > array_group
qi::rule< Iterator, ast::nil(), skipper< Iterator > > array_unsupported_post
qi::rule< Iterator, std::string(), skipper< Iterator > > units
qi::rule< Iterator, std::string(), skipper< Iterator > > array_name
std::ostream & operator<<(std::ostream &out, const array &)
Inform & endl(Inform &inf)