如何为IF条件创建语法

时间:2014-11-02 21:11:33

标签: octave grammar

我接下来的三个语言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创建规则,任何想法???

2 个答案:

答案 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