a/c99.y | b/c99.y | ||
---|---|---|---|
... |
... |
||
582 | | SWITCH '(' expression ')' statement |
582 | | SWITCH '(' expression ')' statement |
583 | ; |
583 | ; |
584 | 584 | ||
585 | iteration_statement |
585 | iteration_statement |
586 | : WHILE '(' expression ')' statement |
586 | : WHILE '(' expression ')' statement |
587 | { sprintf($<str>$, "WHILE %s DO\n%s\nEND_WHILE\n",$<str>3, $<str>5); } |
||
587 | | DO statement WHILE '(' expression ')' ';' |
588 | | DO statement WHILE '(' expression ')' ';' |
588 | | FOR '(' expression_statement expression_statement ')' statement |
589 | | FOR '(' expression_statement expression_statement ')' statement |
589 | | FOR '(' expression_statement expression_statement expression ')' statement |
590 | | FOR '(' expression_statement expression_statement expression ')' statement |
590 | | FOR '(' declaration expression_statement ')' statement |
591 | | FOR '(' declaration expression_statement ')' statement |
591 | | FOR '(' declaration expression_statement expression ')' statement |
592 | | FOR '(' declaration expression_statement expression ')' statement |
... |
... |
||
614 | { |
615 | { |
615 | printf("%s %s %s %s", $<str>1, $<str>2, $<str>3, $<str>4); |
616 | printf("%s %s %s %s", $<str>1, $<str>2, $<str>3, $<str>4); |
616 | } |
617 | } |
617 | | declaration_specifiers declarator compound_statement |
618 | | declaration_specifiers declarator compound_statement |
618 | { |
619 | { |
619 | printf("%s %s %s", $<str>1, $<str>2, $<str>3); |
620 | char *p; |
621 | while( (p=fifo_pop(decl_all)) != NULL) |
||
622 | { |
||
623 | printf(p); |
||
624 | printf("%s;\n", $<str>1); |
||
625 | } |
||
626 | printf($<str>3); |
||
627 | strcpy($<str>$, ""); |
||
620 | } |
628 | } |
621 | ; |
629 | ; |
622 | 630 | ||
623 | declaration_list |
631 | declaration_list |
624 | : declaration |
632 | : declaration |
... |
... |
||
687 | fifo_push(type, p); |
695 | fifo_push(type, p); |
688 | } |
696 | } |
689 | 697 | ||
690 | char *maptype(char *ctype) |
698 | char *maptype(char *ctype) |
691 | { |
699 | { |
700 | if (!strcmp(ctype, "void")) |
||
701 | return "BOOL"; |
||
702 | |||
692 | if (!strcmp(ctype, "char")) |
703 | if (!strcmp(ctype, "char")) |
693 | return "BYTE"; |
704 | return "BYTE"; |
694 | if (!strcmp(ctype, "short")) |
705 | if (!strcmp(ctype, "short")) |
695 | return "INT"; |
706 | return "INT"; |
696 | if (!strcmp(ctype, "int")) |
707 | if (!strcmp(ctype, "int")) |