/*============================================================================= Copyright (c) 2001-2011 Joel de Guzman 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 #include #include #include #include #include #include #include #include #include #include #include #include "test.hpp" int main() { using spirit_test::test; using spirit_test::test_attr; namespace qi = boost::spirit::qi; using boost::spirit::qi::_1; using boost::spirit::qi::_val; using boost::spirit::qi::int_; using boost::spirit::qi::rule; using boost::spirit::ascii::char_; using boost::phoenix::val; using boost::phoenix::ref; { BOOST_TEST(test("123", val(int_))); } { int result; BOOST_TEST(test("123", qi::lazy(val(int_))[ref(result) = _1])); BOOST_TEST((result == 123)); } { rule r; r = char_[_val = _1] >> *qi::lazy(_val); BOOST_TEST(test("aaaaaaaaaaaa", r)); BOOST_TEST(!test("abbbbbbbbbb", r)); BOOST_TEST(test("bbbbbbbbbbb", r)); } { rule r; r = '<' >> *(char_ - '>')[_val += _1] >> '>' >> "> qi::lazy(_val) >> '>' ; BOOST_TEST(test("", r)); BOOST_TEST(!test("", r)); } return boost::report_errors(); }