トランスパイラを自作してみる試み
トランスパイラとはなんぞや
とある言語から別の言語に変換するものっぽい。
コンパイラの一種。コンパイラの中のトランスパイラ、的な立ち位置。
トランスパイル後の言語実装は既存のトランスパイラに任せて(委託して)おけるので結構楽。
エンジニアの縮図みたい
使ったもの
C(だいぶ必要)
Vim(それ以外ありえない)
やる気(ほぼやる気で構成されてる)
実際
C++を使うのは何となく癪に触るので意地でも使わない。使うのはCだけ。
その考えがいつでも私の頭に不法滞在していて否が応でもCを使うしかなかったので労力を相当消費した。
ただその分知識はついた、と思いたい。てか思わせて欲しい。ぜひ。やってらんねえぜ、だんなぁ、、。
最初の予定ではインタプリタにする予定であったが何を血迷ったか途中で速度を求め出したため、
「さては私、それを言い訳にして言語開発から逃げ出すおつもりだな」とのよそうが脳内を通過した。
これはまずい。非常にまずい。
気づけば私は新しくフォルダを作り早くもトランスパイラ開発に着手していた。
ここで目標とやる気を見失っては春休みに何も生産せずただただ時間を消費するだけのブラックホールになりかねない。
宇宙学者としてはおそらく人類初の人工ブラックホール開発の大きな一歩になるところだが、しかし私としてはそれだけは避けたい。
大きな一歩どころか1nanoも踏み出さずやがては自分自身を吸い込んで圧倒的虚無と化してしまう。
かくして生み出されたトランスパイラだが、如何せん名前に悩む。
ここは格好良く英語で名付けてみたい気もしなくはないが、どうせ私の英語力には限界がある。
名前が英語なのに解説は全部日本語とか悲しすぎるやろ。
それならば、お気に入りのロシア語あたりで名付けたいところだが、ご時世を考えてみればおそらく偉い人からお叱りが飛んでくるだろう。
柔道の授業で受け身すらろくに取れない私としては、そんなものが飛んできてはたまったものではない。
さてどうしたものか。いっそのこと日本語にしてやるか。うん、それがいい。アニメ文化は世界共通というだろう。
なら「Myon」などはどうだろう。 、、、、!いいじゃん!かわいいじゃん!
なら言語仕様はどうしよう。
関数定義にはこだわりがある。fnを使うのだ。Rust?なんすかRustって。
トランスパイル先はCを使うから、静的型付けの方が都合がええなあ。とりあえず楽だし肩は明示的に示すようにしよか。
こんな感じか?
fn main(void) <- int {}
Rust?知らない子ですねぇ。
変数定義はどうしよか。関数定義と基本おんなじ感じの方が統一感があっていいよね。
let hoge:int <- "dangomushi";
既視感だなぁ、、、どこで見たんだろう、、理想の文法を定義してるはずなんだけどなぁ、、、
if文とかwhile文とか、制御系どうしたもんかな、、
一応文だしさいごにセミコロンあったほうが、、なんというか、、いいかんじじゃん?すっきりしない?
そう、するんですよ。
while (comp) { hoge };
if ( comp ) { hoge };
おkおk。なかなかええやん!
とりあえずここまででいいかな。え?たりない?ナンノコトダカチョットヨクワカンナイ
しょうがないじゃん!だって休みだもん!フツーに考えて集中できんよ!シテ,,ユルシテ,,