🍒 Cherry Syn チュートリアル 第5章

Cherry Syn で使える演算子

お久しぶりです!これまで説明してこなかったけれど、ここで Cherry Syn で使える演算子について整理しておきましょう。

🧮 二項演算子

Cherry C 記述演算説明結果のビット幅
+加算左右の項の和左右の項の大きい方
-減算左項 − 右項左右の項の大きい方
*乗算左右の項の積左右のビット幅の合計
>>右シフト左項を右項ビット分右にシフト左項のビット幅
<<左シフト左項を右項ビット分左にシフト左項のビット幅
==イコール左右の項が等価1
<小なり左項が右項より小さい1
<=小なりイコール左項が右項と同じか、より小さい1
&&論理積両方がゼロでなければ1、そうでなければ01
||論理和どちらかがゼロでなければ1、そうでなければ01
&ビットANDビットごとの論理積左右の項の大きい方
|ビットORビットごとの論理和左右の項の大きい方
^ビットXORビットごとの排他的論理和左右の項の大きい方
@ビット連結左右のビット列を連結左右のビット幅の合計

🔹 単項演算子

Cherry C 記述演算説明結果のビット幅
!論理否定0と等しいかどうか1
~ビットNOTビットごとの論理否定変わらない

🔸 三項演算子

Cherry C 記述演算説明結果のビット幅
A ? B : C条件演算子Aが0でなければB、そうでなければCBとCの大きい方

✂️ビットスライス

変数の一部のビット列を切り出して使いたい場合は、以下のように書きます:

b = a#(4..2);

この例では、変数 a のビット2〜4を切り出して b に代入しています(3ビット幅)。

1ビットだけを切り出す場合は:

b = a#(0);

トップレベル記述では、左辺の一部ビットに右辺を接続することもできます:

b#(4..2) = a;

この例では、b のビット2〜4に a を接続しています。


💡補足:演算結果の型推論について

Cherry Synでは、演算子の意味に応じて、演算結果の型(ビット幅)が自動的に推論されます。型を明示しなくても、以下のように自然な型が導かれます:


  uint#8 x, y;
  # z = x + y;   // z は uint#8 と推論されます(加算)
  # v = x @ y;   // v は uint#16 と推論されます(連結)
  

この型推論により、記述が簡潔になり、演算子の意味がそのまま型に反映されます。設計者の意図が、型宣言に邪魔されずに流れるように表現されるのです。

それでは皆さん、またお会いしましょう!