| // Copyright (c) 2001-2010 Hartmut Kaiser |
| // |
| // Distributed under the Boost Software License, Version 1.0. (See accompanying |
| // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) |
| |
| #include <boost/config/warning_disable.hpp> |
| #include <boost/detail/lightweight_test.hpp> |
| |
| #include <boost/spirit/include/karma_operator.hpp> |
| #include <boost/spirit/include/karma_char.hpp> |
| #include <boost/spirit/include/karma_string.hpp> |
| #include <boost/spirit/include/karma_numeric.hpp> |
| #include <boost/spirit/include/karma_nonterminal.hpp> |
| #include <boost/spirit/include/karma_action.hpp> |
| #include <boost/spirit/include/phoenix_core.hpp> |
| #include <boost/spirit/include/phoenix_operator.hpp> |
| |
| #include <string> |
| #include <iostream> |
| |
| #include "test.hpp" |
| |
| using namespace spirit_test; |
| using namespace boost::spirit; |
| using namespace boost::spirit::ascii; |
| |
| typedef spirit_test::output_iterator<char>::type outiter_type; |
| |
| struct num_list : karma::grammar<outiter_type, space_type> |
| { |
| num_list() : num_list::base_type(start) |
| { |
| using boost::spirit::int_; |
| num1 = int_(123); |
| num2 = int_(456); |
| num3 = int_(789); |
| start = num1 << ',' << num2 << ',' << num3; |
| } |
| |
| karma::rule<outiter_type, space_type> start, num1, num2, num3; |
| }; |
| |
| int |
| main() |
| { |
| { // simple grammar test |
| num_list nlist; |
| BOOST_TEST(test_delimited("123 , 456 , 789 ", nlist, space)); |
| } |
| |
| { // direct access to the rules |
| num_list def; |
| BOOST_TEST(test_delimited("123 ", def.num1, space)); |
| BOOST_TEST(test_delimited("123 , 456 , 789 ", def.start, space)); |
| } |
| |
| return boost::report_errors(); |
| } |
| |