#author("2017-03-29T00:35:44+09:00","","") [[簡単言語]] *簡単言語 NO 551 TO 589 [#vbdb0358] 一年くらい前から ホワイトスペース(Whitespace)~ というミニ言語を写経してるんですけど~ 最初はRuby版を写経しててHSPに翻訳しようとした時に~ クラスっぽいデータが変数の中に入ってて~ それをどう翻訳していいかわかんなくて~ それからC版を写経してて~ でも難しくて、動作がギリギリわかるくらいで~ 翻訳難しそうだな。と思った時に~ Ruby版を読んだら~ 変数に入ってるのが命令IDとパラメータくらいだったので~ それならモジュール変数を使えばHSPに移植できるかな?と思い移植中です~ 2進数変換の処理はその過程だったり~ ~ よしやってること書いたようで~ TODO書いてないぞっとw~ NO_552~ ~ 〜~ エディタに関して書きましたが~ software design 総集編の vimとかemacsの記事で~ スクロールしきれない量になると~ 効率がエディタによって異なる~ そういう問題に気付いたら vimとかemacsを始める機会かもしれませんよ~ みたいに書いてて~ そう言えば自分スクロールしきれない量になると~ コーディングの効率ガクッと落ちますね~ ってことでvim始めよーかなー みたいなw~ ~ 簡単エディタから昔書いたTOOL集呼べれるよーにならないかなー。みたいなw~ そーなると テキストとしてUPしにくくなるよなー みたいなw~ NO_554~ ~ HSPのライブラリは呼び出し一発でPON!ですよね~ JAVAなんかだとライブラリ呼び出す時数行かかるような~ どっちがいいかは聖戦になるかも~ (どっちがいいとも言えないw)~ NO_567~ ~ 中間言語作成再開~ ; if my_pc_B==1{my_pc_B++:reg3=reg1+1:goto *com_sw: goto *sw_begin } ; if my_pc_B==2{my_pc_B++:reg2+=2:goto *com_sw: goto *sw_begin } ; if my_pc_B==3{my_pc_B++:cr_com=en_calc:goto *com_sw: goto *sw_begin } // ↑こんなのを↓こうしてみた #define switch_set(%1) switch %1 #define eq(%1) case %1:my_pc_B++: my_pc_B=1 *sw_begin switch_set my_pc_B eq 1:reg3=reg1+1:mes 1:goto *sw_begin eq 2:reg2+=2:mes 2:goto *sw_begin eq 3:cr_com=en_calc:mes 3:goto *sw_begin swend NO_584~ ~ sample その2~ x=0 repeat 3 mes x x++ loop // ↑こんなのを↓こうする x=0 *if_start reg_cond_flag=(x<3) if reg_cond_flag==0:goto *l mes x x++ goto *if_start *l NO_585~ ~ >同じスレッドに投稿してるスクリプトの事だと思うんですけど~ >最近複雑になりすぎてコメント無くてなかなか読めないですね、~ ~ >フラグとかも駆使しててマクロ内にもフラグ隠れてたりで~ フラグを利用してるのは流れの制御です~ コマンド番号とLINEを登録して~ プログラム部分の最初から最後まで~ そういうフラグがONの時に~ ~ ラベルも登録して~ プログラム部分の最初から最後まで~ そういうフラグがONの時に~ ~ それから実行します~ そういうフラグがONの時に~ ~ でも、うざいのでマクロで隠したんでけど~ サブルーチンはマクロじゃなく~ 普通のサブルーチンの方がいいいですか?~ ~ >自分みたいな記憶力の無い人にとっては追いかけるの結構大変な処理ですね。~ >一度本腰入れて頭から解析しながらコメント書き入れて見ていかないと~ 今はまだ理解出~ >来てないです。~ 自分あんまり説明力ないですけど~ 疑問点とかあればどしどし書いちゃってくださいな~ NO_586~ ~ sample方式にリファクタリングしました~ ほっとくと永遠にリファクタしがちな僕w~ 新しい処理も含めながら 攻めの気持ちでリファクタリング出来たならw~ リファクタ前はNO483です~ [[NO_587]]~ ~ 簡単プログラム処理 更新です~ ~ 今回は~ コマンド名をコメントしましたw~ 書いたら自動的に処理してないっぽいですが~ tytyさんが読みにくいかもしれないので書きましたw~ ~ ラベル変数からラベル情報を取得するのと~ gotoとかbuttonとかを一つの処理にまとめました~ ~ 純粋にアセンブラっぽいのではなく~ X+=2とか取得(Xから)、演算、設定(Xへ)~ っぽくってのがコンセプトで~ そうなると~ ラベル情報取得は変数から取得ってことで~ まとめちゃおうかな。と~ で、まとめたんですが~ あんまり見易くなってない 爆~ [[NO_589]]~