Boost logo

Boost :

From: Kai-Mikael Jää-Aro (kai_at_[hidden])
Date: 2003-07-17 07:00:55


Joel de Guzman wrote:

> Kai-Mikael Jää-Aro <kai_at_[hidden]> wrote:
>
>>I obviously have not understood how spirit rules are supposed to work. The
>>simple program below fails to compile (spewing out 42 lines of error
>>messages). If I replace the application of 'Id' with int_p directly it works
>>OK.
>>What am I supposed to do to get the intended effect?
>>
>>
>>#include <iostream>
>>#include <boost/spirit.hpp>
>>
>>using namespace std;
>>using namespace boost::spirit;
>>
>>int main(int *argc, char *argv[])
>>{
>>
>> int ID;
>>
>> rule<> Id = int_p;
>>
>> if (parse(argv[1],
>> Id [assign(ID)],
>> space_p).full)
>> {
>> cout << "Value = " << ID << endl;
>> }
>> else
>> {
>> cout << "Failed\n";
>> }
>>}
>
>
> Hi,
>
> See the FAQ "The Scanner Business". It's always a good idea
> to scan the FAQ first.

I have read, but not understood. I change the rule<> to rule<phrase_scanner_t>,
but I am still not allowed to perform the assignment. I suspect that I am
supposed to supply further arguments to the rule<> in order to specify its
return type so that the assignment gets properly interpreted, so I have
carefully gone through the manual pages for "The Rule", "Semantic Actions" and
"Predefined Actions", with quick dips into other sections, but I have not found
examples of how to do it.


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk