(value)
括弧 (
)
は任意の式を内部に含めることができる、何も行わない因子です。
括弧は計算順序の変更などに使うことができます。
$ flc '(1 + 2) * 10'
# 30
括弧内には、実際には複文を書くことができます。
以下のサンプルコードでは、変数 a
を0で初期化して、括弧内で a
に100を代入し、括弧自体は a + 20
である120を返します。括弧の値は3と和を取られ、結果、プログラムの出力は123になります。
fluorite12では、多くのプログラミング言語とは異なり、複文に {
}
を使うことはできません。
$ flc '
a := 0
(
a = 100
a + 20
) + 3
'
# 123
括弧の内側で宣言された変数は、括弧外に影響を及ぼしません。
$ flc '
a := 10
(
a := 20
OUT << a
a = 30
OUT << a
)
a
'
# 20
# 30
# 10
ルートノードではファイル全体や括弧の直下など、どんな式でも書ける場所のルールを定義します。
runner; ...; getter
複文は、0個以上の文と複文自体の値となる末尾式を ;
で区切って繋いだものです。
以下のサンプルコードにおいて、最後の a
の行のみが式(getter)扱いで、その上の3行は文(runner)扱いです。
以下のサンプルコードでは、変数 a
を宣言しつつ10を代入し、10が格納されている a
の値を出力、次に a
に20を代入し、末尾式として20の格納されている a
を指定しています。
$ flc '
a := 10;
OUT << a;
a = 20;
a
'
# 10
# 20
末尾式は省略することができます。
その場合、文が末尾式でないことを示すために、末尾に ;
が必要となる場合があります。
末尾式が省略された複文の値は常に NULL
となります。
$ flc '1 + 2;'
# NULL
$ flc ''
# NULL
複文内での ;
の記述は、末尾を除いて柔軟です。
項の前や中間に ;
を余計に多く書いても問題ありません。
末尾式の後にはセミコロンを書くことはできません。
また、改行は ;
の代わりになります。
$ flc '
a := 10
OUT << a
; ; ; a = 20; ; ;
a
'
# 10
# 20