$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
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.