|
Boost-Commit : |
From: hartmut.kaiser_at_[hidden]
Date: 2008-04-30 16:33:24
Author: hkaiser
Date: 2008-04-30 16:33:23 EDT (Wed, 30 Apr 2008)
New Revision: 44950
URL: http://svn.boost.org/trac/boost/changeset/44950
Log:
Spirit.Karma: Fixed rule tests (pattern.cpp)
Text files modified:
trunk/boost/spirit/home/karma/nonterminal/nonterminal.hpp | 2 +-
trunk/boost/spirit/home/karma/nonterminal/nonterminal_director.hpp | 6 +++---
trunk/libs/spirit/test/karma/pattern.cpp | 38 +++++++++++++++++++++-----------------
3 files changed, 25 insertions(+), 21 deletions(-)
Modified: trunk/boost/spirit/home/karma/nonterminal/nonterminal.hpp
==============================================================================
--- trunk/boost/spirit/home/karma/nonterminal/nonterminal.hpp (original)
+++ trunk/boost/spirit/home/karma/nonterminal/nonterminal.hpp 2008-04-30 16:33:23 EDT (Wed, 30 Apr 2008)
@@ -82,7 +82,7 @@
fusion::result_of::as_vector<Locals>::type
locals_type;
- // The overall context_type consist of a tuple with:
+ // The overall context_type consists of a tuple with:
// 1) a tuple of the return value and parameters
// 2) the locals
typedef fusion::vector<retval_param_types, locals_type> context_type;
Modified: trunk/boost/spirit/home/karma/nonterminal/nonterminal_director.hpp
==============================================================================
--- trunk/boost/spirit/home/karma/nonterminal/nonterminal_director.hpp (original)
+++ trunk/boost/spirit/home/karma/nonterminal/nonterminal_director.hpp 2008-04-30 16:33:23 EDT (Wed, 30 Apr 2008)
@@ -53,7 +53,7 @@
Parameter const& param)
{
typedef typename Nonterminal::locals_type locals_type;
- fusion::single_view<Parameter const&> front(param);
+ fusion::vector<Parameter const&> front(param);
NonterminalContext context(front, locals_type());
return x.obj.generate(sink, context, delim);
}
@@ -69,7 +69,7 @@
Parameter const& param)
{
typedef typename Nonterminal::locals_type locals_type;
- fusion::single_view<Parameter const&> front(param);
+ fusion::vector<Parameter const&> front(param);
NonterminalContext context(front, locals_type());
return ptr->generate(sink, context, delim);
}
@@ -85,7 +85,7 @@
Parameter const& param)
{
typedef typename Nonterminal::locals_type locals_type;
- fusion::single_view<Parameter const&> front(param);
+ fusion::vector<Parameter const&> front(param);
NonterminalContext context(
fusion::join(
front,
Modified: trunk/libs/spirit/test/karma/pattern.cpp
==============================================================================
--- trunk/libs/spirit/test/karma/pattern.cpp (original)
+++ trunk/libs/spirit/test/karma/pattern.cpp 2008-04-30 16:33:23 EDT (Wed, 30 Apr 2008)
@@ -19,6 +19,7 @@
#include <boost/spirit/include/phoenix_core.hpp>
#include <boost/spirit/include/phoenix_operator.hpp>
#include <boost/spirit/include/phoenix_statement.hpp>
+#include <boost/spirit/include/phoenix_fusion.hpp>
#include "test.hpp"
@@ -57,29 +58,27 @@
// basic tests involving a direct parameter
{
typedef variant<char, int, double> var_type;
- fusion::vector<unused_type, var_type> v (unused, 'a');
+ var_type v ('a');
- rule<outiter_type, void(var_type)> start;
+ rule<outiter_type, var_type()> start;
- start = (char_ | int_ | double_)[_1 = _r1];
+ start = (char_ | int_ | double_)[_1 = _r0];
BOOST_TEST(test("a", start, v));
- v = fusion::vector<unused_type, var_type>(unused, 10);
+ v = 10;
BOOST_TEST(test("10", start, v));
- v = fusion::vector<unused_type, var_type>(unused, 12.4);
+ v = 12.4;
BOOST_TEST(test("12.4", start, v));
}
{
rule<outiter_type, void(char, int, double)> start;
- fusion::vector<unused_type, char, int, double> vec(unused, 'a', 10, 12.4);
+ fusion::vector<char, int, double> vec('a', 10, 12.4);
start = char_[_1 = _r1] << int_[_1 = _r2] << double_[_1 = _r3];
- BOOST_TEST(test("a1012.4", start, vec));
BOOST_TEST(test("a1012.4", start('a', 10, 12.4)));
start = (char_ << int_ << double_)[_1 = _r1, _2 = _r2, _3 = _r3];
- BOOST_TEST(test("a1012.4", start, vec));
BOOST_TEST(test("a1012.4", start('a', 10, 12.4)));
rule<outiter_type, void(char)> a;
@@ -90,29 +89,34 @@
b = int_[_1 = _r1];
c = double_[_1 = _r1];
start = a(_r1) << b(_r2) << c(_r3);
- BOOST_TEST(test("a1012.4", start, vec));
BOOST_TEST(test("a1012.4", start('a', 10, 12.4)));
}
// test rule parameter propagation
{
- rule<outiter_type, void(char, int, double)> start;
- fusion::vector<unused_type, char, int, double> vec(unused, 'a', 10, 12.4);
+ using boost::phoenix::at_c;
+
+ rule<outiter_type, fusion::vector<char, int, double>()> start;
+ fusion::vector<char, int, double> vec('a', 10, 12.4);
start %= char_ << int_ << double_;
BOOST_TEST(test("a1012.4", start, vec));
- BOOST_TEST(test("a1012.4", start('a', 10, 12.4)));
- rule<outiter_type, void(char)> a;
- rule<outiter_type, void(int)> b;
- rule<outiter_type, void(double)> c;
+ rule<outiter_type, char()> a;
+ rule<outiter_type, int()> b;
+ rule<outiter_type, double()> c;
a %= char_ << eps;
b %= int_;
c %= double_;
- start = a(_r1) << b(_r2) << c(_r3);
+ start = a[_1 = at_c<0>(_r0)] << b[_1 = at_c<1>(_r0)] << c[_1 = at_c<2>(_r0)];
+ BOOST_TEST(test("a1012.4", start, vec));
+
+ start = (a << b << c)[_1 = at_c<0>(_r0), _2 = at_c<1>(_r0), _3 = at_c<2>(_r0)];
+ BOOST_TEST(test("a1012.4", start, vec));
+
+ start %= a << b << c;
BOOST_TEST(test("a1012.4", start, vec));
- BOOST_TEST(test("a1012.4", start('a', 10, 12.4)));
}
// basic tests with delimiter
Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk