Sophie

Sophie

distrib > Mandriva > 9.1 > ppc > by-pkgid > b9ba69a436161613d8fb030c8c726a8e > files > 678

spirit-1.5.1-2mdk.noarch.rpm

#include <iostream>
#include <cassert>

using namespace std;

//#define SPIRIT_DEBUG
#include "boost/spirit/core.hpp"
using namespace spirit;

//////////////////////////////////////////////////////////////////////////////
//
//  Grammar tests
//
///////////////////////////////////////////////////////////////////////////////
struct num_list : public grammar<num_list>
{
    template <typename ScannerT>
    struct definition {

        definition(num_list const& self)
        {
            num = int_p;
            r = num >> *(',' >> num);

            SPIRIT_DEBUG_RULE(num);
            SPIRIT_DEBUG_RULE(r);
        }

        rule<ScannerT> r, num;

        rule<ScannerT> const&
        start() const { return r; }
    };
};

void
grammar_tests()
{
    num_list nlist;
    SPIRIT_DEBUG_GRAMMAR(nlist);

    parse_info<char const*> pi;
    pi = parse("123, 456, 789", nlist, space_p);
    assert(pi.hit);
    assert(pi.full);
}

///////////////////////////////////////////////////////////////////////////////
//
//  Main
//
///////////////////////////////////////////////////////////////////////////////
int
main()
{
    grammar_tests();
    cout << "Tests concluded successfully\n";
    return 0;
}