いしな.net

PCEOYC

そうだ、コンパイラを作ろう

世間は年末年始のお休み。何しようか。
そこで、タイトルの言葉が出た。

さっそくlex/yaccで字句解析&構文解析を作りはじめてはいけない。

そう、今の時代はflex/bison...、とかいう問題じゃねーよ!

まず、どんな言語にするのか、仕様の方針を決めねばならない。

2013/12/31(火)

どうしよう!?

名称

最初に決めるべきは名称である!これが暫定的にでも決まらないと作業フォルダすら作れないのだ!!!

動作環境

そして、それは一体どんなプラットフォームを対象にしているのだ?

実行環境

で、コンパイルしたそれはネイティブで動作するのか?どのCPUの?あるいはVM上で?.net/monoの?Javaの?それとも別な何か?

2013/12/31(火)

ということで。

中間コードにコンパイルする方式で。
中間コードへのコンパイラは、とりあえずWindowsのみ作る。

中間コードの実行環境はMacOSX版も作る。Linux、FreeBSDでも動くようにしたい。

実行環境:PCEOYC

中間コード:YCIX

中間コード記述言語:PCL

言語名:PLOYUM

YLソースコード: .y

YCILソースコード: .yc

オブジェクト: .yo

YLVM実行形式: .xy

YLVM動的ライブラリ: .dy

名称ファイル名種別C/C++での実装動作内容
VM実行(インタープリタ)pceoyc.exe.xyの実行
VM実行(JITコンパイル)pcejit.exe.xyの実行
PCLアセンブラpclasm.exe.ya → .yo
リンカyll.exe.yo → .xy / .yo → .dy
PLOYUMコンパイラyc.exe.y → .yo
yccommon.dllC/C++での実装で使用する共通ライブラリ
まぁ、周辺ツールは他にも作られるでしょう。
2013/12/31(火)

さらに

PLOYUM/PCLソースコードの中身はテキスト形式である。文字エンコーディングはUTF-8のみ。他は認めない。BOMの有無は問わない。

そして、yo形式xy/dy形式は各ページに書いていく。とりあえず未定だ!

さらに、PLOYUMやPCLの仕様も決めていかねばならない