Как перевести в l oop в l oop в LEX? - PullRequest
0 голосов
/ 21 февраля 2020

Я застрял в программе, где мне нужно преобразовать “for-loop”/“do-while loop” в “while loop”, не меняя смысла программы. Там могут быть петли внутри петель и так далее. На входе будет языковая программа C, а на выходе будет действительная языковая программа C.

Решение, которое я получил до сих пор, состоит в том, чтобы прочитать программу C из файла и, если я обнаружу оператор for, вынимаю инициализатор и заменяю "for" на "while".

Но я не понимаю, как это сделать.

1 Ответ

1 голос
/ 21 февраля 2020

Как подсказка, a для l oop состоит из инициализатора, условия и средства обновления

`for (initializationStatement; testExpression; updateStatement)
    {
        // statements inside the body of loop
    }`

, вам может понадобиться что-то вроде

initializationStatement;
while( testExpression ) {

    updateStatement;
}
...