WIDL: Add missing ignore attribute. Check for inapplicable attributes in typedef. (more better patch)

Mike McCormack mike at codeweavers.com
Wed Mar 15 08:37:17 CST 2006


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




More information about the wine-devel mailing list