このチャプターの目次

4 構文

Chapelの構文には、Fortranの影響が見られる。の区切りには、;を記す。基本的に、先頭の文から順番に実行される。
複数の文を括弧で閉じた複文は、静的なスコープを形成し、内側で宣言された変数や関数は、外側に対して秘匿される。

{
  var foo = 12;
  writeln(foo);
}
var foo = 13;
writeln(foo);

4.1 条件分岐

if文は、条件分岐を行う。条件式はbool型である。then節が復文の場合は、thenを省略できる。else節も省略できる。

const age = 18;
if age < 18 then {
  writeln("Adults Only");
} else {
  writeln("Yeah, Right");
}

select文は、多分岐を行う。条件式が合致したwhen節かotherwise節が実行される。両者とも固有のスコープを持つ。

select "cat" {
  when "cat" do writeln("meow");
  when "dog" do writeln("bowwow");
  otherwise writeln("gobblegobble");
}

4.2 反復処理

while do文は、do節を繰り返す。まず、条件式を評価して、trueの場合はdo節を実行し、再び条件式の評価に戻る。
do while文も、do節を繰り返す。まず、do節を実行して、条件式を評価する。trueの場合は、再びdo節を実行する。

var i = 1;
while i < 1024 do i *= 2;
do i >>= 1; while i >= 1;
writeln(i); // 0

for文は、イテレータが値を返す限りdo節を繰り返す。while do文やfor文のdo節が復文の場合は、doを省略できる。

for i in 1..100 do writeln(i);

反復処理を離脱する場合は、C言語と同様に、break文やcontinue文を使う。ラベルを指定すれば、大域脱出もできる。

while true do break;
for 1..100 do continue;
label outside for i in 1..10 do for j in 1..10 do break outside;