a/c2iec.y | b/c2iec.y | ||
---|---|---|---|
... |
... |
||
373 | | UNION |
373 | | UNION |
374 | ; |
374 | ; |
375 | 375 | ||
376 | struct_declaration_list |
376 | struct_declaration_list |
377 | : struct_declaration |
377 | : struct_declaration |
378 | { |
||
379 | sprintf($<str>$, "%s",maptype($<str>1)); |
||
380 | } |
||
378 | | struct_declaration_list struct_declaration |
381 | | struct_declaration_list struct_declaration |
379 | { sprintf($<str>$, "%s %s",$<str>1, $<str>2); } |
382 | { sprintf($<str>$, "%s %s",$<str>1, $<str>2); } |
380 | ; |
383 | ; |
381 | 384 | ||
382 | struct_declaration |
385 | struct_declaration |
... |
... |
||
400 | : TYPEDEF type_specifier specifier_qualifier_list |
403 | : TYPEDEF type_specifier specifier_qualifier_list |
401 | { sprintf($<str>$, "lexxer hack - typedef found\n"); } |
404 | { sprintf($<str>$, "lexxer hack - typedef found\n"); } |
402 | 405 | ||
403 | specifier_qualifier_list |
406 | specifier_qualifier_list |
404 | : type_specifier specifier_qualifier_list |
407 | : type_specifier specifier_qualifier_list |
405 | { sprintf($<str>$, "%s %s",$<str>1, $<str>2); } |
408 | { |
409 | sprintf($<str>$, "%s %s", $<str>1, $<str>2); |
||
410 | sprintf($<str>$, "%s",maptype($<str>$)); |
||
411 | } |
||
406 | | type_specifier |
412 | | type_specifier |
407 | { |
413 | { |
408 | strcpy($<str>$, maptype($<str>1)); |
414 | strcpy($<str>$, maptype($<str>1)); |
409 | } |
415 | } |
410 | | type_qualifier specifier_qualifier_list |
416 | | type_qualifier specifier_qualifier_list |
... |
... |
||
470 | } |
476 | } |
471 | ; |
477 | ; |
472 | 478 | ||
473 | direct_declarator |
479 | direct_declarator |
474 | : IDENTIFIER |
480 | : IDENTIFIER |
475 | // { sprintf($<str>$, "%s: %%s;\n",$<str>1); fifo_push($<str>$);} |
481 | | '(' declarator ')' |
476 | | '(' declarator ')' |
482 | { printf ("not supported direct_declerator\n"); } |
477 | | direct_declarator '[' type_qualifier_list assignment_expression ']' |
483 | | direct_declarator '[' type_qualifier_list assignment_expression ']' |
478 | | direct_declarator '[' type_qualifier_list ']' |
484 | { printf ("not supported direct_declerator\n"); } |
485 | | direct_declarator '[' type_qualifier_list ']' |
||
486 | { printf ("not supported direct_declerator\n"); } |
||
479 | | direct_declarator '[' assignment_expression ']' |
487 | | direct_declarator '[' assignment_expression ']' |
480 | { |
488 | { |
481 | if (strlen($<str>1) > 0) |
489 | if (strlen($<str>1) > 0) |
482 | { |
490 | { |
483 | sprintf($<str>$, "%s: ARRAY[0..(%s-1)] OF %%s;\n",$<str>1, $<str>3); |
491 | sprintf($<str>$, "%s: ARRAY[0..(%s-1)] OF %%s;\n",$<str>1, $<str>3); |
... |
... |
||
487 | char *p; |
495 | char *p; |
488 | p = lifo_pop(decl_all); |
496 | p = lifo_pop(decl_all); |
489 | sprintf($<str>1, ",0..(%s-1)] OF %%s;\n",$<str>3); |
497 | sprintf($<str>1, ",0..(%s-1)] OF %%s;\n",$<str>3); |
490 | strcpy($<str>$, p); |
498 | strcpy($<str>$, p); |
491 | strcpy(strchr($<str>$, ']'), $<str>1); |
499 | strcpy(strchr($<str>$, ']'), $<str>1); |
492 | // sprintf($<str>$, p, $<str>1); |
||
493 | } |
500 | } |
494 | fifo_push(decl_all, $<str>$); |
501 | fifo_push(decl_all, $<str>$); |
495 | strcpy($<str>$, ""); |
502 | strcpy($<str>$, ""); |
496 | } |
503 | } |
497 | | direct_declarator '[' STATIC type_qualifier_list assignment_expression ']' |
504 | | direct_declarator '[' STATIC type_qualifier_list assignment_expression ']' |