フリーのコンパイラだと、gccとかbccとかありますが、gccはwindowsだと使いずらそうだし、bccはダウンロード時に登録が必要なのがあまり好きじゃない。
コマンドプロンプトだと標準入力で手軽にツールを作成できるのもいいところです。だいたいプログラムを勉強すると始めにやるのは"Hello! world!!"だと思うのですが、普通にプログラムしてる人ってprintf(標準出力)なんてほとんど使わないのでは?
最終的には migemoが利用できるプロンプトを自作したいな、なんて考えているのですが、地道にちまちまやっていこうと思っています。とりあえず第一歩として、プロンプトの骨格を以下にメモメモ。
import std.stdio;
import std.process;
import std.c.stdio;
void main(){
char c;
string com;
bool loop = true;
writef(">");
while(loop){
c = getc(stdin);
switch(c){
case 0x0a: // ret
if(com == "exit"){
// loop exit
loop = false;
} else {
// cmd execute
system(com);
}
com.length = 0;
writef(">");
break;
default:
com ~= c;
}
}
}
D言語だとデフォルトがutf8で、Shift-JISが使えないので、標準ライブラリの readln とかが使えません。んで色々試行錯誤した結果上記な感じになりました。getcの仕組みとか、あんまりよく調べてはないけど、 たぶんそんなに的外れでもないと思ってます。switch文の中をいじれば、Ctrl+P,Nで履歴表示や、TABでのキーワード補完とかも作れそう。
(でもホントは GNU readline が使いたい~。けどwindowsでの使い方がわからない~)
0 件のコメント:
コメントを投稿