我正在用 C++ 编写一个简单的程序解释器。当我构建程序的内部表示并得到一个 break 语句时,我如何确定包含循环的目标位置?
void Imp::whilestmt()
{
Expr *pExpr;
accept(Token::WHILE);
expr(pExpr);
WhileStmt *pwhilestmt = new WhileStmt(pExpr,vm.getLocationCounter);
vm.add(pwhilestmt);
accept(Token::LOOP);
stmtlist();
pwhilestmt->setTarget(vm.getLocationCounter);
accept(Token::END);
accept(Token::LOOP);
vm.add(new EndLoopStmt);
}
我的 break 语句对象将 while 语句的目标作为参数,我该如何确定呢?