如何在BASIC中解析嵌套的if-else循环

时间:2013-11-18 19:49:48

标签: nested 8051 basic

我正在分析这个遗留代码:

If (X) then
    if Cnt < 4 then Cnt = Cnt + 1 ; 4 samples
Else
    if Cnt > 0 then Cnt = Cnt-1   ; keep history
EndIf

哪个Cnt根据X

上下移动

我想知道其他声明是否像他们的缩进一样意味着他们认为它确实存在。

代码可能更像是:

If (X) then
    if Cnt < 4 then 
        Cnt = Cnt + 1 ; 4 samples
    Else
        if Cnt > 0 then 
            Cnt = Cnt-1   ; keep history
EndIf

其中Cnt到达4然后在X为真时切换开/关。

这是使用BCI51编译的基本功能。那是1990年由Systronix开发的8051的基本编译器。

嵌套的if-else对如何在basic中解析?

1 个答案:

答案 0 :(得分:1)

我记得QBasic是如何做到这一点的,我将假设这个编译器正在做同样的事情。这真的是在拉我的记忆,所以我可能错了。

如果IF THEN后面跟着同一行的代码,那么它就完全包含了。因此

if Cnt < 4 then Cnt = Cnt + 1
else
   ...

将是非法的,您必须将Cnt = Cnt + 1放在其自己的行上以创建多行IF语句。因此,ELSE与最顶层IF

配对

由于在原始代码中,Cnt = Cnt + 1Cnt = Cnt - 1IF THEN位于同一行,因此我会将代码解释如下:

If (X) then
    If Cnt < 4 Then
        Cnt = Cnt + 1 ; 4 samples
    EndIf
Else
    If Cnt > 0 Then
        Cnt = Cnt-1   ; keep history
    EndIf
EndIf

所以,是的,我相信代码的操作就像缩进所暗示的那样。

如果您发现任何更改,是否可以修改代码并进行测试?