CASLⅡのプログラムをTeXの表として出力するプログラムです。





CASLⅡで作ったプログラムをレポートにまとめる際に、

手作業で "&" とか"\\"を入れるのは、非常にめんどくさいものです。

という訳で、作ってみました。






総製作時間およそ1時間弱。かかりすぎだってw


ヒアドキュメントで書かなかった部分は、見やすさと"{","}"のためです。

が、、、もっとうまく書けないものかとorz






またgoogle docsにあげたので、ご自由に使ってよいです。

使いやすいように改変してもかまいませんが、再配布はご遠慮願います。



ただし、使用したことによって何か不具合など起きても責任は負いません。

と一応言っておく。

さらに、実行例は適当(というか、課題にプログラムからテキトーに数行削ったもの)なので、注意してください。







セミコロンがあれば";"で一行を一度分割し、分割された前方を

セミコロンが無ければ行全体を、


一文字以上のスペースで分割するという構造になっています。






なにか改善した方が良いところがあったら、よろしくお願いします。



ソース(google docsの短縮URL)

http://goo.gl/yUMh





SSC用のニモニック表現のテキストファイルを読み込み、

機械語に変換してテキストファイルに出力する超簡易コンパイラを

Perlで作成してみました。コンソールプログラムです。





ニモニックから手作業での変換とかめんどくさすぎますっ。

今後の作業量の軽減と他の方も使えるように。と思ったけど、



残念っ!!



まぁ、使いたい人がいれば使ってもらって構わないですよ、

来年の後輩とかに回してもらっても構わないしっ。

あっ、でも改組したら実験の内容も変わるのかな






短時間で作ったものにしてはよくできてると思います。

基本的には使い捨てツールとして作成しましたが、

おかしなところや改善点があったらコメントとかメッセージ頂けると嬉しいです。








・入力ファイルは、csvカンマ区切りファイルです。

[命令],[アドレス] or [命令],[変数名] or Shift,[移動量]

Stop

[変数名],[値(2進数)] or [変数名],[値(10進数)]





ソースは、直接載せるとタブとかスペースが綺麗に表示でないので、

Google Docにpdf形式で上げてあります。





my Google Doc短縮URL

v1_2_1:入出力ファイル名*をstdinから入力を求める。(入力は*.cvs, 出力は*.txt)

出力の命令とアドレス、命令と移動量の間に半角スペースを挿入した



http://qurl.com/5lszg









追記、

アセンブラといったほうが正しいようですね。

最初の関数order_to_b()のところで、switch文使わなかったのは eq 演算子をつかうため。。。




前回の記事でcsvファイルはカンマ区切りファイルであると書きましたが、


(マイクロソフト)エクセルではタブ区切りのcsvファイル形式というものがあるようです。





csvファイルで保存の際に、「ファイルの種類」のコンボボックスを開くと出てくるようです。





この形式でデータを保存すれば、データの区切りであるセパレーターの文字を設定しなくてもgnuplotに読み込むことができます。





しかし、私が行った2回のうち1回は、タブが認識されずにとんでもない所にプロットされ、


さらに、そのcsvデータファイルもう一度エクセルで読み込んだところ、一行が一つのセルにまとめて詰まっていました。


どうやら、タブ区切りが上手くいかないこともあるようですね。





このように、タブ区切りがうまくいかない場合があることを考えると


やはり、カンマ区切りファイルを用いる方が確実であるように思います。


実験のデータをつけておくのにエクセルを用いている。


なぜならば、あらかじめ式を書いておけば、データを取りながらリアルタイムで、計算がおこなわれるしグラフだって書くことができるからだ。








それ以外にもメリットは、あと2つあげられる。





ひとつは、セルをいくつか選択してコピーしてから、メモ帳のようなソフトで貼り付けを行うと、


セルの区切りがタブで表わされることだ。


それのどこが良いかというと、置換機能を用いることでタブを別のものに置き換えることが出来るという点である。


TeXに表として取り込む際に便利である。しかし、これについては詳しくは書かない。





もうひとつは、csv(カンマ区切り)ファイルで保存することが可能ということだ。


私は、エクセルのグラフ機能では不満というとき、gnuplotを用いる。





gnuplotには、外部ファイルのデータをプロットすることができる。


gnuplotは外部ファイルのデータを読み込む際、デフォルトでデータをタブを区切りとして認識している。


しかし、次の一文を加えるだけで、カンマをデータの区切りとして認識させることができるのだ。





set datafile separator ",";





このコマンドは、","を別の文字に置き換えれば、カンマ以外の区切りにすることもできる。





gnuplotとcsvファイルを結びつけることにより、無駄なデータの打ち直しや移す際のミスによるものがなくなり、


時間短縮にもつながるので、興味のある方はぜひ一度使ってみることをお勧めする。





なお、windows版のgnuplotはフリー利用することが可能である。


googleで検索もしくは、以下の参考サイトからどうぞ。


http://auemath.aichi-edu.ac.jp/~khotta/ghost/gnuplot.html








注意:リンク先での不具合や、導入により起きた不具合等の責任は一切とりません。自分で何とかしてください。


質問等あれば、直接聞いてください。わかる範囲で答えます。


Perl勉強中。





インプレスジャパンの「基礎Perl」という本のサンプルを使って勉強しているのですが、





その中でSTDIN, STDERR, DATAを使おうとすると、どうしてもエラーになってしまうのです。





構文的なエラーはないと思うのですが。





なぜでしょう。








ちなみに、Active Perlのv5.10.1を使ってます。









■その1。


print "入力された言葉をオウム返しします(終了する場合は「;;」)。\n"


   # キーボードから入力された文字列を変数$strにセット

while(my $str = <STDIN>) {

    # 文字列末から改行文字を除去

   chomp $str;

    # 文字列が「;;」である場合にループを抜ける。

   last if ($str eq ';;');

    # 入力された文字列を表示

   print $str, "ですね。\n";

}





■その2。


print STDERR "標準エラー出力です。\n"





■その3。


# __DATA__以降の内容を読み込み

while (my $row = <DATA>){

  chomp $row;

my @data = split /\t/, $row;

print "$data[1] ($data[2] $data[3]) \n";

}





__DATA__


1 A B C








なぜでしょう。