如何在LEX中将for循环转换为while循环?

问题描述 投票:0回答:1

我被困在必须将“for-loop”/“do-while loop”转换为“while loop”而无需更改程序含义的程序中。循环内可能有循环,依此类推。输入将是C语言程序和输出将是有效的C语言程序。

到目前为止,我得到的解决方案是从文件中读取C程序,如果我检测到for语句,则将初始化程序取出,并将"for"替换为"while"

但是我不知道该怎么做。

compiler-construction flex4 yacc lex lexical-analysis
1个回答
0
投票

作为提示,for循环由初始化程序,条件和更新程序组成

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

您需要类似

initializationStatement;
while( testExpression ) {

    updateStatement;
}
© www.soinside.com 2019 - 2024. All rights reserved.