hamigaki.png

前のページ 上に戻る ホーム 次のページ

制御フロー

条件式
パターン
if
for
while
switch

条件式

BBv2で使用される条件式には以下のようなものがある。

条件式 評価値
a aに空でない文字列が含まれていれば真
a = b aとbの要素がすべて同じ場合に真
a != b aとbの要素に同じでないものが含まれる場合に真
a < b 辞書順でaがbより小さい場合に真
a <= b 辞書順でaがb以下の場合に真
a > b 辞書順でaがbより大きい場合に真
a >= b 辞書順でaがb以上の場合に真
a in b aの要素が全てbに含まれる場合に真
! cond condが偽の場合に真
a && b aが真かつbが真の場合に真
a || b aが真またはbが真の場合に真
( cond ) condが真の場合に真

ここで、abは文字列のリスト、変数、ルールの戻り値のいずれかであり、condは条件式である。

なお、「=」、「!=」、「<」、「<=」、「>」、「>=」の6つの比較演算において、一方のリストのサイズが他方よりも短い場合、短いリストの後方に空文字列の要素が続いているかのように振舞う。

演算子の優先順位は以下のようになっている。上の方ほど優先順位は高い。

  • in, ( )
  • !
  • <, <=, >, >=
  • =, !=
  • &&
  • ||

パターン

switch文や組み込みルールGLOBなどで行われるパターンマッチングには次に示すパターンの組み合わせが使われる。

パターン 意味
? 任意の1文字
* サイズ0以上の任意の文字列
[文字クラス] 文字クラスにマッチする1文字
[^文字クラス] 文字クラスにマッチしない1文字
\c 文字c

ここで文字クラスは以下の組み合わせである。

パターン 意味
c 文字c
a-b 文字aから文字bまでの範囲

if

if $(X)
{
    # Xが真のときの処理
}
else
{
    # Xが偽のときの処理
}

for

for a in $(X)
{
    # Xの各要素が変数aに代入されて、順に実行される
}

while

while [ func_a ]
{
    # func_aの結果が真の間、実行される
}

switch

switch $(X)
{
    case a* :
        # $(X)がaで始まる場合、ここが実行される
    case [b-d]* :
        # $(X)がb,c,dで始まる場合、ここが実行される
}

前のページ 上に戻る ホーム 次のページ