Octave 如何为IF条件语句创建语法
下面三个例子是语言八度音阶中条件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 在
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是否会接受它,但如果它拒绝它,它会在运行时拒绝它。