« 【チラシのうら 4日目】PRINT文で計算結果を表示してみる | トップページ | 【チラシのうら 6日目】マルチステートメントを使えるようにしてみる »

2026年6月20日 (土)

【チラシのうら 5日目】比較・論理演算を使えるようにしてみる

計算だけでは条件判定(IF文とか)が作れないので比較・論理演算もきるように拡張してみました。
<、<=、>、>=、<>、= の比較演算子と
AND、OR、XOR、NOT の論理演算子です。

逆ポーランド記法の評価対象にコレラを含め、評価順序を設定します。
評価結果はINT型で TRUE = 1、FALSE = 0  です。
一般的(?) なBASICの判定と異なる気がしますが、Javaのtrue/falseの定義値を参考にしました。

AND、OR、XOR、NOT は整数型のビット演算としても機能するようにしました。
5 AND 1 = 1
2 OR 4 = 6
になる感じです。
バグの元…な気がしなくなくもないですが…
そこはまぁ、気を付けてもらうって事で… (;^ω^)


------------------------
M5Z-80 BASIC Ver.0.1
------------------------
READY.

---- utf8 でエンコードされたメッセージを送信しました: "PRINT 5<>3" ----
PRINT 5<>3
1
READY.

---- utf8 でエンコードされたメッセージを送信しました: "PRINT 5<>3 AND 7<3" ----
PRINT 5<>3 AND 7<3
0
READY.

---- utf8 でエンコードされたメッセージを送信しました: "PRINT 7 AND 3" ----
PRINT 7 AND 3
3
READY.

---- utf8 でエンコードされたメッセージを送信しました: "PRINT 3 OR 6" ----
PRINT 3 OR 6
7
READY.

---- utf8 でエンコードされたメッセージを送信しました: "PRINT 7 XOR 3" ----
PRINT 7 XOR 3
4
READY.



IF文などでのTRUE/FALSE判定は TRUE≠0 FALSE=0 になります。
論理判定とビット演算を同じ演算子で処理する都合なので仕方ないかと

ここまでの成果

  • 比較演算子が使えるようになった
  • 論理演算、ビット演算ができるようになった

|

« 【チラシのうら 4日目】PRINT文で計算結果を表示してみる | トップページ | 【チラシのうら 6日目】マルチステートメントを使えるようにしてみる »

BASIC」カテゴリの記事

コメント

この記事へのコメントは終了しました。