--- a/c2iec.y +++ b/c2iec.y @@ -700,6 +700,7 @@ : WHILE '(' expression ')' statement { sprintf($<str>$, "WHILE %s DO\n%s\nEND_WHILE\n",$<str>3, $<str>5); } | DO statement WHILE '(' expression ')' ';' + { sprintf($<str>$, "IF %s\n%s\nEND_IF\nWHILE %s DO\n%s\nEND_WHILE\n",$<str>5, $<str>2, $<str>5, $<str>2); } | FOR '(' expression_statement expression_statement ')' statement | FOR '(' expression_statement expression_statement expression ')' statement { sprintf($<str>$, "%s\nWHILE %s DO\n%s\n%s;\nEND_WHILE\n",$<str>3, $<str>4, $<str>7, $<str>5); }