"Fossies" - the Fresh Open Source Software Archive

Member "arangodb-3.4.7/3rdParty/boost/1.62.0/libs/metaparse/example/getting_started/11.hpp" (24 Jun 2019, 1446 Bytes) of package /linux/misc/arangodb-3.4.7.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file.

    1 #ifndef BOOST_METAPARSE_GETTING_STARTED_11_HPP
    2 #define BOOST_METAPARSE_GETTING_STARTED_11_HPP
    3 
    4 // Automatically generated header file
    5 
    6 // Definitions before section 10
    7 #include "10.hpp"
    8 
    9 // Definitions of section 10
   10 using lparen_token = token<lit_c<'('>>;
   11 
   12 using rparen_token = token<lit_c<')'>>;
   13 
   14 using plus_exp1 = 
   15  foldl_start_with_parser< 
   16    sequence<one_of<plus_token, minus_token>, mult_exp4>, 
   17    mult_exp4, 
   18    boost::mpl::quote2<binary_op> 
   19  >;
   20 
   21 using paren_exp1 = sequence<lparen_token, plus_exp1, rparen_token>;
   22 
   23 #include <boost/metaparse/middle_of.hpp>
   24 
   25 using paren_exp2 = middle_of<lparen_token, plus_exp1, rparen_token>;
   26 
   27 using primary_exp1 = one_of<int_token, paren_exp2>;
   28 
   29 struct plus_exp2;
   30 
   31 using paren_exp3 = middle_of<lparen_token, plus_exp2, rparen_token>;
   32 
   33 using primary_exp2 = one_of<int_token, paren_exp2>;
   34 
   35 using unary_exp2 = 
   36  foldr_start_with_parser< 
   37    minus_token, 
   38    primary_exp2, 
   39    boost::mpl::lambda<boost::mpl::negate<boost::mpl::_1>>::type 
   40  >;
   41 
   42 using mult_exp5 = 
   43  foldl_start_with_parser< 
   44    sequence<one_of<times_token, divides_token>, unary_exp2>, 
   45    unary_exp2, 
   46    boost::mpl::quote2<binary_op> 
   47  >;
   48 
   49 struct plus_exp2 : 
   50  foldl_start_with_parser< 
   51    sequence<one_of<plus_token, minus_token>, mult_exp5>, 
   52    mult_exp5, 
   53    boost::mpl::quote2<binary_op> 
   54  > {};
   55 
   56 using exp_parser19 = build_parser<plus_exp2>;
   57 
   58 // query:
   59 //    exp_parser19::apply<BOOST_METAPARSE_STRING("(1 + 2) * 3")>::type
   60 
   61 #endif
   62