YU-RIS サポート掲示板

0256 Ver0.167
投稿者:たくみ 2005/08/07(日) 21:54

Ver0.167をリリースしました。
リリースが延びてしまいましてすみませんでした…;

今回、各種演算子に対応させるため、式の展開アルゴリズムを根本から変更しようと
本体とコンパイラともにいろいろ修正していたのですが、
なんだかんだでかなり大がかりになってしまいました(;;
やはり1年以上前に書いたコードは相当汚い…;(今もか;) でも本当に修正した甲斐があって、
本体とコンパイラ合わせてEXEサイズが60KB程度小さくなったうえに、式の演算速度が向上しました(^^
式はコンパイラのほうで解析し、最適化するように設計しましたので、
括弧を多用したり配列変数をネストして使ったり等という複雑な計算においては、かなり高速化しています。
また将来性も備えた設計なので、これからさらに速度を向上させる余地もかなり残っていまして、
正式版リリースの時にでもまた高速化させようと思っています(^^

あぁ…でも、これでようやくIF命令が便利に使えるように…;
こんな調子で早くテキストやセーブロードも便利に使えるように、
今月中には極力いろいろと実装してしまいたいと思います!



■計算式や条件式に論理演算子等が使用できるようになりました

IF[@A==2 && @B==3]
などと記述できるようになりました。
この場合、『Aの値が2で、かつ、Bの値が3なら』という条件式になります。
また、
IF[@A==2 || @B==3] //(←「|」は「SHIFT」キーを押しながら「\」キーを押すと出る記号です)
と記述した場合、『Aの値が2、または、Bの値が3なら』という条件式になります。
これらを利用することで、条件が複数ある場合にその分だけIFを用意せずに済むようになりました。
早速シューティングサンプルのスクリプトを書き換えてみました。

また、計算式中にも論理演算子が記述できるため、
@A=(@B==5)
などと書けるようになりました。この場合どうなるかと言うと、C言語と同様に、
『@Bの値が5なら真として1を返し、@Bの値が5以外なら偽として0を返す』
という評価をします。
@Z=(5>3)
も同様です。この場合、5は3より確かに大きいので、
評価は真となり、変数Zには1が格納されます。

あとついでにビット演算子にも対応しました。
C言語と同様、ANDには「&」、ORには「|」、XORには「^」を使用します。
このあたりは使うことはほとんどないと思いますが、ついでに実装しておきました(^^;
一度に全て説明しきれないので、追ってマニュアルのほうで説明していこうと思います。すみません…;
パソコンのデータの型(ビット等)の知識がちょっとだけ必要になりますが、
ただYU-RISの重要な機能とかではないので、特に知らなくても問題はないです(^^
シフト演算子「<<」「>>」に関してはまだ使用できません。

また文字列変数の条件式での記述ですが、今回の実装でもちょっとまだ出来ませんでした。
これはテキスト系の拡張時に必要な機能になるので、追って出来るようにしたいと思います。



■変数表示方法の仕様が変わりました
いままで変数の中身を表示するのに、@[A] や $[A] と記述していましたが、
これだと変数の値をそのまま表示するだけしかできず、よって、
ただ簡単な計算結果を表示させたいだけなのにいちいち変数を用意しなくてはならなかったり、
また変数に何か最終的な計算、加工などをして表示させたい、等という場合に
対応できませんでした。
それを解決するため、今回のバージョンより仕様を少し改善しました。
新しい仕様では、アンダーバー「_」を使用しまして、
_[@A]
と記述します。
これで、例えば値に5を足して出力したい場合は、
_[@A+5]
とかけますし、ただ単純に数値を出力したい場合、
_[2+3]
と記述できます。
文字列も同様に
_[$A]
_["ABC"]
_["「"$A+"」"]
などと記述できるようになりました。



■文字列変数の文字列一部をカットおよびコピーできるようになりました。
VARACT 命令に CUT キーワード、COPY キーワード、HANTOZEN キーワード、ZENTOHAN キーワードを追加しました。
COPYが「任意の位置から任意の文字だけ取得する」で、
CUTが「任意の位置から任意の文字だけ切り抜き、残ったほうを取得する」という考え方になります。
詳しくはマニュアルの VARACT の項目をご覧下さいませ。



■文字列の記述の仕様が少し変更になりました
文字列の記述の際にダブルクォーテーション「”」の記述が必須になりました。
いままで、
$A=ABC
のように、明らかに文字列とわかる場合は、ダブルクォーテーションの記述が
省略できていました(「+」を使って文字を連結する場合は必須でした)が、
今回の設計変更に伴い、
$A="ABC"
と、必ず「”」で括らなければならなくなりました。
記述が少しだけ面倒になってしまいますが、視認性は良くなるかと思います(^^

ただし、ラベル名の指定に限っては特別に、
いままで通り「”」を付けなくても記述はできます。
ただ検討中でして、今後の仕様変更で記述必須になる可能性はあります。



■対応OSに Windows2003 を追加しました。
MSDN から Windows2003 を入手いたしまして、
動作確認が取れる環境を構築できるようになりまたので、
正式に加えることにしました。
将来的に WindowsVista にも対応予定です。



…と、こんなところでしょうか。
こ、今回は文章が長くなってしまった…。

ここまでお読み頂きありがとうございました…m(_ _;)m


- 関連一覧ツリー (■ をクリックするとツリー全体を一括表示します)