Boost logo

Boost :

From: Michael Burbidge (mburbidg_at_[hidden])
Date: 2003-09-05 18:21:33

I have the following very simple grammar:

struct expr_grammar : public grammar<expr_grammar>
        template <typename ScannerT>
        struct definition
                definition(expr_grammar const& self)
                                = lexeme_d[ch_p('$') >> symbol]
                                = range_p('a', 'A')
                rule<ScannerT> variable_ref, symbol;
                rule<ScannerT> const& start() const { return variable_ref; }

and the following very simple function that uses this grammar:

bool parse_expr(char* theExpr)
        expr_grammar g;
        bool result = parse(theExpr, g, space_p).full;

This results in a compiler error because no function or template can be
found for parse. If I remove the lexeme_d directive from the
variable_ref rule then it compiles just fine. How did lexeme_d change
the type of the parameters to parse? How can I fix this so that I can
use lexeme_d to prevent accepting spaces between any of the characters
in variable_ref?


Boost list run by bdawes at, gregod at, cpdaniel at, john at