fluorite12

このドキュメント内では、結合優先度の高い演算子から順に記載されています。

因子

因子は単独で機能するリテラルや括弧類を指します。

因子は演算子の結合において、原子的な性質を持ちます。

後置演算子

後置演算子は基部の後ろに付与する演算子です。

後置演算子は単項のものと二項のものに分かれ、いずれも左優先結合です。

前置単項演算子の後置表現 value.+

すべての前置単項演算子は、 . に続けて書く後置演算子のバリエーションが存在します。

以下の組はすべて同じ働きをします。

 +A  A.+
 -A  A.-
 ?A  A.?
!!A  A.!!
 !A  A.!
 &A  A.&
$#A  A.$#
$&A  A.$&
$*A  A.$*

後置表現を使うと、一部の構文において丸括弧を削減し、可読性を向上できる場合があります。

前置演算子

前置演算子は基部の前に付与する演算子です。

前置演算子は右優先結合です。

長さの取得 $#value

前置 $# 演算子は、値の「長さ」を取得します。

$ flc '$#"123"'
# 3

$ flc '$#[1, 2, 3]'
# 3

$ flc '$#{a: 1; b: 2; c: 3}'
# 3

この演算子は値のタイプによって異なるものを返します。

タイプ  
文字列 UTF16による文字の長さ
配列 要素数
オブジェクト 親オブジェクトを無視した、エントリの数

スロー !!error

fluorite12では、例外のスローを前置 !! 演算子で行います。

スローする値はどのようなタイプの値であっても構いません。

スローした値は、キャッチした際に渡されます。

$ flc '!!"12345" !? (e => "Error ($e)")'
# Error (12345)

JSON文字列への変換 $&value

前置 $& 演算子は、値を JSON 形式の文字列に変換します。

$ flc '$&{a: 1; b: 2}'
# {"a":1,"b":2}

配列やオブジェクトを指定した場合、内部の要素も再帰的に JSON 化されます。

JSON文字列の解析 $*string

前置 $* 演算子は、与えられた文字列を JSON として解析し、その値を返します。

$ flc '$*(%> {"a": 1, "b": 2} <%)'
# {a:1;b:2}