Kuina-chan

くいなちゃん2018年12月11日


プログラミング言語Kuin」の言語仕様11、コンパイラとIDEについてです。

1Kuinコンパイラ

Kuinコンパイラには、エディタやデバッガとセットになっている「kuin.exe」と、コマンドライン上でコンパイルできる「kuincl.exe」が用意されています。
「kuincl.exe」は起動するたびにメモリを確保し若干効率が悪いため、一般的な用途では高性能な「kuin.exe」をおすすめします。

2kuincl.exeのコンパイルオプション

kuincl.exeのコンパイルオプションは表2-1の通りです。
表2-1: kuincl.exeのコンパイルオプション
コンパイルオプション 説明 省略時の挙動
-i ファイル コンパイルする.knファイルを指定 使い方を示すヘルプを表示
-o ファイル 出力する.exeファイルを指定 -iで指定した.knファイルと同じディレクトリにout.exeを生成
-s ディレクトリ システムディレクトリを指定 コンパイラが存在するディレクトリ/sys/
-c ファイル アイコンに設定する.icoファイルを指定 デフォルトアイコン
-e 実行環境 実行環境を指定 wnd(ウインドウアプリ)
-r リリースビルドを行う デバッグビルド
-h 使い方を示すヘルプを表示 特になし
-v コンパイラのバージョンを表示 特になし
-q エラーと警告以外の出力を抑制する 特になし
いずれのオプションも省略可能です。 それぞれコンパイルオプションについて、以下で詳しく説明します。

2.1-i



「input」の頭文字です。 main関数が存在する.knファイルを指定します。

2.2-o



「output」の頭文字です。 出力する実行ファイルを指定します。 省略すると「out.exe」という名前で生成されます。

2.3-s



「system」の頭文字です。 システムディレクトリを指定します。 通常は省略して問題ありません。

2.4-c



「icon」の2文字目です。 .icoファイルを指定すると、実行ファイルやウインドウアイコンなどにそのアイコンが使われるようになります。 省略するとKuinが用意するデフォルトアイコンが設定されます。

2.5-e



「environment」の頭文字です。 表2-2で示す実行環境を指定します。
表2-2: 実行環境
コンパイルオプション 実行環境
-e wnd ウインドウアプリ
-e cui コンソールアプリ

2.6-r



「release」の頭文字です。 このオプションを指定するとリリースビルドされ、省略するとデバッグビルドされます。

2.7-h



「help」の頭文字です。 このオプションを指定するとkuincl.exeの使い方が表示されます。

2.8-v



「version」の頭文字です。 このオプションを指定するとコンパイラのバージョンが表示されます。

2.9-q



「quiet」の頭文字です。 このオプションを指定するとエラーと警告以外の出力を抑制します。 処理が成功したときにはログに何も出力したくない場合に指定します。

3コンパイル時の仕様

以下にKuinのコンパイル時の仕様をまとめます。

3.1入力ファイルの特殊な仕様



コンパイルするファイルの特殊な仕様は図3-1の通りです。
  • 指定した.kn内に1文字も存在しなかった場合は「Hello, world!」を出力するプログラムになる。
  • 指定した.kn内に「q」の1文字だけ書かれていた場合は「q」を出力するQuineプログラム(自身のソースコードを出力するプログラム)になる。
  • 指定した.kn内に「f」の1文字だけ書かれていた場合は「Fizz Buzz」プログラムになる。
  • 指定した.kn内に「9」の1文字だけ書かれていた場合は童謡「99 Bottles of Beer」の歌詞を出力するプログラムになる。
  • これらには、改行やスペースなど他の文字を含めてはならない。
図3-1: 入力ファイルの特殊な仕様
設計の理由

これらのプログラムは他のプログラムに比べてとても頻繁に書かれるため、Kuinコンパイラはその需要に応えるべきだと考えます。

3.2デバッグビルドとリリースビルドの違い



デバッグビルドとリリースビルドの違いは表3-1の通りです。
表3-1: デバッグビルドとリリースビルドの違い
項目 デバッグビルド リリースビルド
用途 開発時に日常的に使う 完成時に1回だけ使う
最適化 最適化せず、コンパイル速度を優先 最適化し、実行速度を優先
リソースデータの暗号パック化 なし 暗号パック化
dbg定数の値 dbgは「true」となる dbgは「false」となる
assert 実行時にアサーションチェックする assert文を削除
intのオーバーフロー オーバーフローで例外を発生させる オーバーフローをチェックしない
配列の範囲外アクセスチェック 範囲外アクセスで例外を発生させる 範囲外アクセスをチェックしない
その他、標準ライブラリや組み込み関数が生成する多くの例外は、リリースビルドには生成されません。
一般に開発時はコンパイルが高速なデバッグビルドで入念に検証し、完成時にはリリースビルドで配布用のファイルを生成する流れで開発します。

3.3実行環境の詳細



コンパイラが生成した実行ファイルが動作する環境は表3-2の通りです。
表3-2: 実行環境の詳細
実行環境 詳細
ウインドウアプリ 「Windows 7」以降の64bit環境で動作する、グラフィックス機能等を活用したウインドウアプリ
コンソールアプリ 「Windows 7」以降の64bit環境で動作する、コマンドプロンプト上で動作するコンソールアプリ
1544534874jaf