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