論理演算子(式)の検討
ADP0.69で定義している論理演算子は、ビット毎のAND/OR/XORを&&/||/^^で定義している。これはC/C++では意味がことなるので再定義した方がよいのではと考えられるので検討する。 ちなみに、&&にした理由は、 リストの要素のセパレーターが|になっている為、セパレーターとORを区別する為にORの方を||とした。 述語名と区別がつかないので先読みの必要があるので難しい面があるが、演算子をBASICと同様にAND・OR・XOR・NOTとしてもよいかと思われる。 「コマンドラインからの文字列の実行」の実装で、コンパイルの読み込み部分で一括読み込みを検討しているので、その後の実装で出来るかもしれない。 ※結論 文法の覚えやすさの観点からビット毎のAND,OR,XORを & , | , ^ とC/C++と同じにする。 リストのセパレーター | との区別は以下のような制約を付けることにする。 論理演算が出現する要件として式の右辺値という制約を設ける。つまり $a | $b の場合、コンパイルエラーとなる。(リストの内の場合は、リストセパレーターとして認識される。 論理演算を使用したい場合は、 $c = $a | $b ($a | $b) = $a | $b という風に式であることを明示する。3番目の=の例は述語を関数形式とみなすときに使うマーカーでもある。 また、 $a + $b のように算術演算子の場合は従来どおり式とみなす。
Details