title=プログラム・文・式


  * [[ref:exp]]
  * [[ref:terminate]]

プログラムは[[ref:exp]]を並べたものです。式と式の間はセミコロ
ン(;)または改行で区切ります。ただし、バックスラッシュに続く改行は文
の区切りにならず、次の行へ継続します。

例:

   print "hello world!\n"


===[a:exp] 式

例:

          true
          (1+2)*3
          foo()
          if test then ok else ng end

Ruby の式には、[[d:spec/variables]]、さまざまな[[d:spec/literal]]、それらの
[[d:spec/operator]]、if や while などの[[d:spec/control]]、[[d:spec/call]]、
[[d:spec/def]]があります。

式は括弧によってグルーピングすることができます。

空の式 () は nil を返します。

Rubyの式には値を返す式と返さない式があります。

: 値を返さない式の例

    while, until, while 修飾式, until 修飾式

また、メソッドの引数に指定できない式と指定できる式があります(このよう
な式を「文」と呼び分ける場合があります)。

: メソッドの引数に指定できない式の例

    and, or, not

    if/unless/rescue 修飾式, ...

メソッドの引数に指定できない式は、括弧によるグルーピングを行うことで普
通の式として使用することができます。

===[a:terminate] プログラムの終り

Rubyインタプリタはプログラムを読みこんでいる際に以下のものに出あうとそこ
で読みこみを終了します。

    * ファイルの終り(文字列をevalしている場合は文字列の終り)

    *  ^D(コントロールD) 、^Z(コントロールZ)

    *  __END__のみの行(前後に空白があると認識されません)
