$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r54714 - trunk/libs/spirit/test/lex
From: hartmut.kaiser_at_[hidden]
Date: 2009-07-06 11:19:53
Author: hkaiser
Date: 2009-07-06 11:19:52 EDT (Mon, 06 Jul 2009)
New Revision: 54714
URL: http://svn.boost.org/trac/boost/changeset/54714
Log:
Spirit: more work on new test/lex/set_token_value_phoenix.cpp
Text files modified: 
   trunk/libs/spirit/test/lex/set_token_value_phoenix.cpp |    42 +++++++++++++++++++++------------------ 
   1 files changed, 23 insertions(+), 19 deletions(-)
Modified: trunk/libs/spirit/test/lex/set_token_value_phoenix.cpp
==============================================================================
--- trunk/libs/spirit/test/lex/set_token_value_phoenix.cpp	(original)
+++ trunk/libs/spirit/test/lex/set_token_value_phoenix.cpp	2009-07-06 11:19:52 EDT (Mon, 06 Jul 2009)
@@ -1,10 +1,12 @@
 //  Copyright (c) 2009 Carl Barron
-//  Copyright (c) 2001-2009 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 <iostream>
+#include <sstream>
+
+#include <boost/detail/lightweight_test.hpp>
 #include <boost/spirit/include/lex.hpp>
 #include <boost/spirit/include/lex_lexertl.hpp>
 #include <boost/spirit/include/phoenix.hpp>
@@ -12,8 +14,9 @@
 namespace lex = boost::spirit::lex;
 namespace phoenix = boost::phoenix;
 
-template <class Lexer>
-struct multi_tokens:lex::lexer<Lexer>
+///////////////////////////////////////////////////////////////////////////////
+template <typename Lexer>
+struct multi_tokens : lex::lexer<Lexer>
 {
     int level;
 
@@ -55,34 +58,35 @@
 struct dumper
 {
     typedef bool result_type;
-    
-    template <class Token>
+
+    dumper(std::stringstream& strm) : strm(strm) {}
+
+    template <typename Token>
     bool operator () (Token const &t)
     {
-        char x = (char)(t.id() - lex::min_token_id + 'a');
-        std::cout << x;
+        strm << (char)(t.id() - lex::min_token_id + 'a');
         return true;
     }
+
+    std::stringstream& strm;
 };
 
+///////////////////////////////////////////////////////////////////////////////
 int main()
 {
-    std::string in("AAABBC");
-    
-    typedef lex::lexertl::token<std::string::iterator,boost::mpl::vector0<> > token_type;
+    typedef lex::lexertl::token<std::string::iterator> token_type;
     typedef lex::lexertl::actor_lexer<token_type> base_lexer_type;
     typedef multi_tokens<base_lexer_type> lexer_type;
     typedef lexer_type::iterator_type iterator;
 
-    lexer_type the_lexer;
+    std::string in("AAABBC");
     std::string::iterator first(in.begin());
-    if(lex::tokenize(first, in.end(), the_lexer, dumper()))
-    {
-        std::cout << "\nlex worked\n";
-    }
-    else
-    {
-        std::cout << "lex failed\n";
-    }
+    std::stringstream strm;
+
+    lexer_type the_lexer;
+    BOOST_TEST(lex::tokenize(first, in.end(), the_lexer, dumper(strm)));
+    BOOST_TEST(strm.str() == "aaabbddd");
+
+    return boost::report_errors();
 }