文 (プログラミング)
プログラムにおける文(ぶん、statement)とは、コードの記述単位の1つ。一般に文は手続きを表すものである。
文の構文はそれぞれのプログラミング言語によって異なる。初期のFORTRANやCOBOLのように1行に1つの文を書く言語、C言語や多くのスクリプト言語のように文終端記号(セミコロンなど)で区切る言語、Pascalのように文と文との間の区切り記号で区切る言語などがある(終端記号と区切り記号の違いは、並びの最後のあとに記号が入るか入らないかである[1])。
1行1文の言語にあっては、行末または行頭に、言語で指定された記号を付けることで、行が継続しているものとして(継続行)、複数行にわたって文を記述することができるものもある。
類似する言葉として式がある。式は、必ずしも手続きを表さず、文とは異なり値を持つ(多くの手続き型言語では式にも手続きがともない、副作用という。特にC言語は代入が式である。また逆に言語によっては文も値を持つものもある)。
大まかに言えば、一つ以上の式や関数呼び出しで作られる、手続き構造の単位が文である、と考えてほぼ差し支えない。if文のように分岐構造を表すもの、代入文のように変数の更新を表すものなどが代表例である。構造化プログラミング以降の言語では、複数の文からブロック(「複文」とも言う)を構成できるのが一般的である。
if文などにおける構文の流儀には大きく2通りがあり、ひとつはC言語のような、
<if文> = IF <条件式> <文> [ELSE <文>] <文> = <if文>|<while文>|<代入文>|...etc...|<複文> <複文> = { <文> ; <文> ; <文> ; ... }
という規則のもので(厳密にはこの例はC言語と違っているので注意。注1を参照)、dangling else問題(通常は困るものではない。en:Dangling elseも参照)の存在が知られている。
もうひとつの流儀はPerlが採用したもので、
<if文> = IF <条件式> <複文> [ELSE <複文>]
のように、任意の文を直接書くことができないようにしたものである。これはdangling else対策のひとつでもある。
注釈
- ↑ 厳密にはここで論じているのは文ではなく複文の構文である。またC言語のセミコロンは厳密には文の終端ではなく、式にセミコロンを付けたものが「式文」という文になる、というルールになっている