相关疑难解决方法(0)

重写修改的goto语义的算法

我用一种旧的自我构思的脚本语言得到了大量遗留代码,我们将其编译/转换为javascript.

该语言有条件跳转,跳转到标签.与常见的goto语句的区别在于,不能进行向后跳转.该语言中没有嵌套的if语句和循环.

由于goto中不存在goto,我正在寻找一种转换goto mylabelmylabel:进入语义等效结构的算法.

我想使用ifs但发现它不是微不足道的,因为goto标签的任意嵌套.

例:

if cond1 goto a
do something1
if cond2 goto b
do something2
a:
do something3
if cond3 goto c
do something4
c:
do something5
b:
Run Code Online (Sandbox Code Playgroud)

可以改写为:

lbl_b=false;
lbl_c=false;

lbl_a = cond1;
if (!cond1) {
  do something1;
  lbl_b = cond2;
  if (!lbl_b) {
    do something2;
  }
}
if (!lbl_b) {
  do something3;
  lbl_c = cond3;
  if (!lbl_c) {
    do something4;
  }
  do something5;
}
Run Code Online (Sandbox Code Playgroud)

但是,我无法从中推导出一般算法.

algorithm programming-languages goto

5
推荐指数
1
解决办法
336
查看次数

标签 统计

algorithm ×1

goto ×1

programming-languages ×1