drracket中的label,goto命令

时间:2016-12-15 10:16:43

标签: label racket goto

drracket中有标签,转到,跳转命令的包吗?

Control包会出现以下错误:

 (let ([x 1])
    (let/ec return
      (begin/goto
        (label l1)
        (set! x (+ x 1))
        (when (= x 10000000)
          (return x))
        (goto l1)
        2)))
  

goto:undefined;

     

无法引用未定义的标识符

需要在LLVM IR中模拟标签,goto / jump以运行代码,因此不能使用循环重写。

1 个答案:

答案 0 :(得分:3)

首先:很明显,soegaard的控制包无法正常工作,而且我猜测它是因为语法系统的更新已经发生在最近几年。

第二:如果你正在模拟LLVM,你就不需要标签和了。只需将代码分解为基本块,并将每个基本块建模为一个函数。然后每个goto变成一个函数调用。你绝对可以自动化。

很抱歉要简洁。如果您需要更多详细信息,请与我们联系。