标签,drracket 中的 goto 命令

sin*_*ash 2 label goto racket

drracket 中是否有用于 label、goto、jump 命令的包?

控制程序包提供了以下错误:

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

转到:未定义;

不能引用未定义的标识符

需要模拟标签、转到/跳转以在 LLVM IR 中运行代码,因此使用循环重写不是一种选择。

Joh*_*nts 5

首先:很明显,soegaard 的 Control 包无法正常工作,我猜这是因为过去几年对语法系统进行了更新。

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

很抱歉说得太简短了。如果您需要更多详细信息,请告诉我。