Joel de Guzman wrote:

Kai-Mikael Jää-Aro <[EMAIL PROTECTED]> 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.




_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Reply via email to