Take the 2-minute tour ×  I am trying to parse a C-function like
tree expressions like the following (using the Spirit Parser
Framework):  F( A() , B( GREAT( SOME , NOT ) ) , C( YES ) )  For
this I am trying to use the three rules on the following
grammar:  template< typename Iterator , typename ExpressionAST >
struct InputGrammar : qi::grammar<Iterator, ExpressionAST(),
space_type> {      InputGrammar() : InputGrammar::base_type( ) {
tag = ( qi::char_("a-zA-Z_")  >> *qi::char_("a-zA-Z_0-9") )[
push_back( at_c<0>(qi::_val) , qi::_1 ) ];        command =  tag
[ at_c<0>(qi::_val) = at_c<0>(qi::_1) ] >> "(" >> (*instruction
>> ",")                                         [ push_back(
at_c<1>(qi::_val) , qi::_1 ) ]  >> ")";        instruction = (
command | tag ) [qi::_val = qi::_1];     qi::rule< Iterator ,
ExpressionAST() , space_type > tag;     qi::rule< Iterator ,
ExpressionAST() , space_type > command;     qi::rule< Iterator ,
ExpressionAST() , space_type > instruction;  Notice that my tag
rule just tr