• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*=============================================================================
2     Copyright (c) 2001-2015 Joel de Guzman
3 
4     Distributed under the Boost Software License, Version 1.0. (See accompanying
5     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6 =============================================================================*/
7 #include <boost/detail/lightweight_test.hpp>
8 #include <boost/spirit/home/x3.hpp>
9 
10 #include <iostream>
11 #include "test.hpp"
12 
13 int
main()14 main()
15 {
16     using spirit_test::test;
17     using boost::spirit::x3::ascii::space;
18     using boost::spirit::x3::ascii::space_type;
19     using boost::spirit::x3::ascii::digit;
20     using boost::spirit::x3::lexeme;
21     using boost::spirit::x3::rule;
22 
23     BOOST_SPIRIT_ASSERT_CONSTEXPR_CTORS(lexeme['x']);
24 
25     {
26         BOOST_TEST((test(" 1 2 3 4 5", +digit, space)));
27         BOOST_TEST((!test(" 1 2 3 4 5", lexeme[+digit], space)));
28         BOOST_TEST((test(" 12345", lexeme[+digit], space)));
29         BOOST_TEST((test(" 12345  ", lexeme[+digit], space, false)));
30 
31         // lexeme collapsing
32         BOOST_TEST((!test(" 1 2 3 4 5", lexeme[lexeme[+digit]], space)));
33         BOOST_TEST((test(" 12345", lexeme[lexeme[+digit]], space)));
34         BOOST_TEST((test(" 12345  ", lexeme[lexeme[+digit]], space, false)));
35 
36         auto r = +digit;
37         auto rr = lexeme[r];
38 
39         BOOST_TEST((!test(" 1 2 3 4 5", rr, space)));
40         BOOST_TEST((test(" 12345", rr, space)));
41     }
42 
43     return boost::report_errors();
44 }
45