俺言語

ちょっとコンパイラ周辺の勉強をしたので、自分への課題として『俺言語』の作製に挑戦していたりする。といってもまだプロトタイプ(と呼ぶのも恥ずかしい)程度の状態で『プログラム言語』とは呼べない。で、どうせ作るならなにか意味があった方が良いのかと思うものの、おもしろいアイディアもない。良くあるCのサブセットっていうのは練習には凄く良いのだけど、特長がないんだよね。

余談。。いろいろ考えてたら眠くなってきて、考えがどうでも良い方向に進むんだよね。どうせなら、いかにも『J-Kleinが作りました』的な言語にしようと思い、エントリー関数(Cでいうmain)をjkleinにしようとか思いつく

int
jklein(int argc, char *argv[])
{
    /* ... */
}

もはや突っこみたくもない言語だ…。第一、こんなのコンパイラ作る必要も無い。そうこうしているうちに、パソコンの前で突っ伏して寝てしまった…。



ちょっとだけ面白そうな気がしたのは、やっぱりC言語ライクな文法なんだけど、正規表現をサポートしてるとか、ね。

int
main(int argc, char *argv[])
{
    if (argv[1] =~ /http:?/?/.*/) {
        printf("URLだよ?n");
    }
    else {
        printf(URLじゃないよ。?n);
    }
}

ちょっといいよね。いっそのことmain関数無しで、多くのスクリプト言語みたいにいきなり処理を書けるとかも良いかも。

【追記】思い付いた。

スクリプト言語風(特にPerl風)のCライクな文法ってどうだろう。上記のような組み込みの正規表現や var{key} = valueのような組み込みのハッシュテーブルも使えるようにしたりして…。でも型付けは厳しい、と。例えば次のような感じ。

table int int_hach; // int型を値にもつハッシュテーブル
int_hash{"key-1"} = 3;
int_hash{"key-2"} = 2;

printf("key-1=%d, key-2=%d?n", int_hash{"key-1"}, int_hash{"key-2"});

どうせなら組み込みの文字列型も必要だろうな。そして極めつけ、言語名は『Scriptive-C』。Objective-Cのもじりだね。

と、夢は大きいものの、実現するのは大変。まぁ、勉強ですから。