自作のJavaの四則演算クラスに、配列とインクリメント・デクリメント演算子(前置・後置)とtoString()を追加してみた。
関数は今まで変数名(識別子)と同じ優先順位に置いていたけれど、よく考えてみるとトップは「識別子そのもの(変数や数値)」と「式を丸括弧でくくったもの」が正しいので、その次の優先順位(後置演算子の位置)に変えた。
で、配列も関数と同じ優先順位に置いた。
で、後置演算子のインクリメント・デクリメントもそこに置いた。
これらは全部後置演算子だけど、インクリメント・デクリメントは単項で、配列は二項演算子のように扱えることを発見(添字が二項目)。
(関数は引数の並びが特殊だから、残念ながらそういう分類には入れられなさそう。強いて言えば「引数の並び」が二項目になるけど)
で、前置演算子のインクリメント・デクリメントも追加したんだけど…。
今まで、+と-は符号と加減算の二通りで使っていたけれども、単項・二項の違いで区別していた。しかし++と--はどちらも単項なので、そういう区別は出来ない。
仕方ないので、後置演算子だけ特別ロジックを組んでしまった…美しくないけど(嘆)
配列の演算はかなり大胆に省略して、【たまたま添字が付いている文字列】として扱ってしまった(苦笑)
なので、a[1]とa[1][1]には全く関連が無い。a[1]とb[1]は絶対別物として扱う。
C言語ならポインター演算に当たるので、a[1]とb[1]が同じ場所を指している可能性もあるんだけど。あ、それはJavaも一緒か(汗)
さらにはC言語だとa[1]と1[a]が同じ意味なんだが…そこまで解釈してられないっす(特に二次元以上の配列になると、考えるのも面倒(爆))。
あと、toString()を実装してみた。
これで綺麗に式が表示できる!…はず。だけど、通り一遍しかテストしてないから、変な出方をするかも?(汗)