Octave 如何为IF条件语句创建语法

Octave 如何为IF条件语句创建语法,octave,grammar,Octave,Grammar,下面三个例子是语言八度音阶中条件IF的句法 1) if(condition) body end 2) if(condition) body else body-alternative end 3) if(condition) body elseif(condition) body else body-alternative end 在

下面三个例子是语言八度音阶中条件IF的句法

1)
    if(condition)
        body
    end
2)
    if(condition)
       body
    else
       body-alternative
    end
3) 

    if(condition)
       body
    elseif(condition)
       body
    else
       body-alternative
    end
在第三个示例中,可以有任意多个elseif

我必须为这些If创建一个语法。到目前为止,我有下一条规则

<IF> := if <CONDITION> <BODY> <S>
<S>  := end | else <BODY> end | <ELSEIF>
<ELSEIF> := elseif <CONDITION> <BODY> <ELSEIF> | else <BODY> end
:=if
:=结束|否则结束|
:=elseif | else end
但是我不知道如何为非终端条件创建规则,有什么想法吗?

只是括号内的一个
。(表达式需要有布尔值,但这不是语法限制;任何表达式在语法上都是有效的。)

为表达式创建语法是一件乏味的事情,需要对表达式语法有详细的了解(显然),但它们通常非常相似,因此您应该能够在internet上找到任意数量的示例

当然,你可以看看八度语法本身。它是用野牛写的,你可以在

顺便说一句,从您引用的文档中不明显看出以下也是有效的八度if语句:

if ( condition )
  body
elseif ( condition )
  body-2
end
换句话说,if语句由一个
if
子句、任意数字(包括0)的
elseif
子句、一个可选的
else
子句和一个
end
子句组成。存在
elseif
子句并不意味着需要
else
子句。(因此,这就像几乎所有其他语言都有以某种结束标记结尾的
if
语句一样。)

你可以试试

if ( the condition )
  body
elseif ( the condition )
  body second
else
  what you need
end

谢谢@rici,最后一个问题是if have(e-(b%4*3>2))是否是有效的if语句(不仅在八度音阶中,而且在其他语言中)??@user3105533:它在语法上是正确的,但在某些语言中是正确的。br类型错误。我不知道octave是否会接受它,但如果它拒绝它,它会在运行时拒绝它。