|
a/c2iec.y |
|
b/c2iec.y |
|
... |
|
... |
336 |
strcpy($<str>$, szTypeName); |
336 |
strcpy($<str>$, szTypeName); |
337 |
} |
337 |
} |
338 |
| struct_or_union IDENTIFIER |
338 |
| struct_or_union IDENTIFIER |
339 |
; |
339 |
; |
340 |
|
340 |
|
|
|
341 |
unnamed_struct_or_union_specifier |
|
|
342 |
: struct_or_union '{' struct_declaration_list '}' |
|
|
343 |
{ |
|
|
344 |
strcpy($<str>$, $<str>3); |
|
|
345 |
} |
|
|
346 |
; |
|
|
347 |
|
341 |
struct_or_union |
348 |
struct_or_union |
342 |
: STRUCT |
349 |
: STRUCT |
343 |
| UNION |
350 |
| UNION |
344 |
; |
351 |
; |
345 |
|
352 |
|
|
... |
|
... |
359 |
sprintf(TAIL($<str>$), p, $<str>1); |
366 |
sprintf(TAIL($<str>$), p, $<str>1); |
360 |
// printf(p, $<str>1); |
367 |
// printf(p, $<str>1); |
361 |
// strcpy($<str>$, ""); |
368 |
// strcpy($<str>$, ""); |
362 |
} |
369 |
} |
363 |
} |
370 |
} |
|
|
371 |
| unnamed_struct_or_union_specifier ';' |
364 |
; |
372 |
; |
365 |
|
373 |
|
366 |
specifier_qualifier_list |
374 |
specifier_qualifier_list |
367 |
: type_specifier specifier_qualifier_list |
375 |
: type_specifier specifier_qualifier_list |
368 |
{ sprintf($<str>$, "%s %s",$<str>1, $<str>2); } |
376 |
{ sprintf($<str>$, "%s %s",$<str>1, $<str>2); } |