我接下来的三个语言Octave
条件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创建一个语法。到目前为止,我有下一个规则
<IF> := if <CONDITION> <BODY> <S>
<S> := end | else <BODY> end | <ELSEIF>
<ELSEIF> := elseif <CONDITION> <BODY> <ELSEIF> | else <BODY> end
但我不知道如何为非终端CONDITION创建规则,任何想法???
答案 0 :(得分:1)
<CONDITION>
只是括号内的<EXPRESSION>
。 (表达式需要有一个布尔值,但这不是语法限制;任何表达式在语法上都是有效的。)
为表达式创建语法很繁琐,需要详细了解表达式语法(显然),但它们通常非常相似,所以你应该能够在互联网上找到任意数量的例子。
当然,你可以看一下八度语法本身。它是用bison
编写的,您可以在octave mercurial repository中找到它。
顺便说一句,从你引用的文档中可以看出,以下还是一个有效的Octave if语句:
if ( condition )
body
elseif ( condition )
body-2
end
换句话说,if语句由if
子句,任意数量(包括0)elseif
子句,可选else
子句和end
组成。存在elseif
子句的事实并不意味着需要else
子句。 (所以它就像其他语言一样,if
语句以某种结束标记终止。)
答案 1 :(得分:0)
你可以尝试
if ( the condition )
body
elseif ( the condition )
body second
else
what you need
end