Saveliy Tretiakov wrote:
+typedef: tTYPEDEF m_attributes type pident_list {
attr_t *a = $2;int public = 0;while(a){switch(a->type){case ATTR_CONTEXTHANDLE:case ATTR_STRING:case ATTR_HANDLE:case ATTR_SWITCHTYPE:case ATTR_TRANSMITAS:case ATTR_POINTERTYPE:case ATTR_IGNORE:break;case ATTR_PUBLIC:public = 1;break;default:yyerror("Inapplicable attribute\n");
How about changing the grammar to define something like:
attributes: td_attribs | tCONTEXTHANDLE | tSTRING | ... /* other things that can't be a typedef */ ;
td_attribs: tAGGREGATABLE | ... /* other things in the existing attributes rule */ ;
typedef: tTYPEDEF td_attribs type pident_list ....
That way the parser can deal with the problem.
Mike