SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

MASMとなでしこによるオリジナルコンパイラの制作

MASMとなでしこによるオリジナルコンパイラの制作 2

はじめてのなでしこ

コンパイラへの第一歩

コマンドライン

 皆さんは、コマンドラインを知っていますか? コマンドラインは、MS-DOSの時代によく使われたものです。現在、Windows XPにおいても、コマンドプロンプトを起動すればコマンドラインによるプログラムの実行を行うことができます。

 コマンドプロンプトを実際に起動してみましょう。[スタートメニュー]-[すべてのプログラム]-[アクセサリ]-[コマンドプロンプト]より起動できます。

 画面を見てみると、黒い画面の中で白いカーソルが点滅していて、普段、WindowsでのGUI操作に慣れた方にはあまり馴染みのない感じがするかもしれません。しかし、これから操作していく大切な画面なので、この雰囲気には今のうちに慣れておいてください。では、その白いカーソルから、次のコマンドを実行してみましょう。

dir /b
実行結果
実行結果

 上記の画面とほぼ同様の表示がされたでしょうか(画面上、ローカル環境を示す箇所は隠させてもらいました)。環境によって表示されるテキストは違います。でも、コマンドラインを知るにはこれで十分です。

 では、コマンドラインとはなんでしょうか。先ほどの「dir /b」のどの部分がコマンドラインなのでしょうか。

 答えは、「dir /b」全体なのです。コマンドラインとは、コマンドを入力する行のことです。すなわち、先ほど入力した文字列全体がコマンドラインなのです。このコマンドラインにより、「dir」という名前の、コマンドプロンプトに内蔵されている実行ファイルを起動しているのです。

 では、dirの後に書いている/bとは何でしょうか。さっき述べた実行ファイルの名前には書いてありません。では、これは何かといいますと、コマンドラインオプションといいます。そもそも「dir」は、指定したディレクトリの中にあるファイル情報の一覧を表示するコマンドです。それに「/b」という文字列を渡しているので、コマンドはこの文字列に対して適切な処理をします。これがコマンドラインオプションです。ちなみにdirに「/b」を指定すると、ディレクトリのファイルとフォルダ名のみを表示します。余計なものは表示しません。

なでしこからコマンドラインを操作する

 なでしこからコマンドラインを操作する方法は簡単です。「コマンドライン」という名前の変数に、配列形式で格納されています。配列について知らない方もいると思いますが、とりあえず「コマンドライン¥1」と記述すると、1つ目の引数を受け取れることを機械的に覚えてしまってください。

 ここでは、コマンドラインの引数で指定したファイルの中身を表示する例を紹介します。まず、プログラムは次のように記述します。

コマンドラインのテストプログラム
もし、コマンドライン¥1が空ならば、終わる。
コマンドライン¥1を開く。
それを表示。

 中身の解説は後でしますので、今は続く処理を先に実行してしまいましょう。

  1. なでしこの実行形式を「コンソール」に変更します。[設定]-[なでしこ実行方式]-[コンソール]を選んでクリックします。
  2. 実行形式をコンソールに変更
    実行形式をコンソールに変更
  3. ファイルを保存します。ファイルを保存するには、[ファイル]-[名前をつけて保存]を選択します。保存する前に「vefbl」フォルダを作っておきましょう。今回は、「My Document\samples\codezine」の直下に「vefbl」フォルダを作成しました。その中に、「build.nako」というファイル名で保存します。
  4. ファイルを保存
    ファイルを保存
  5. なでしこから、実行ファイルを作成します。[ファイル]-[実行ファイル作成]を選択してください。
  6. 実行ファイルの作成
    実行ファイルの作成
  7. 立ち上がったダイアログボックスの[作成]ボタンをクリックし、先ほど作成した「vefbl」フォルダの中に、「build.exe」という名前で保存してください。
  8. 「build.exe」を保存
    「build.exe」を保存
  9. 次は、エクスプローラから「build.exe」のできたフォルダを開きます。フォルダを開き、アドレスバーに表示されている文字列をコピーします。文字列を選択し、右クリックでメニューが開くので[コピー]を選択します。
  10. アドレスバーの文字列をコピーする
    アドレスバーの文字列をコピーする
  11. コマンドプロンプトに「cd 」を入力し、右クリックして[貼り付け]を選択し、[Enter]キーを押下してください(cdの後に半角スペースなどの空白が必要です)。
  12. 貼り付け
    貼り付け
 cdは、カレントディレクトリ(現在作業を行っている場所/フォルダ)を変更するコマンドです。もし、カレントディレクトリ変更と同時に現在のドライブも変更する場合には、「cd」のあとに「/d」を付け加えてから、[貼り付け]を行ってください。
  1. 次のコマンドを打ち込んでください。すると、「build.nako」のファイルの内容が表示されます。
  2. 「build.nako」の実行(「build.nako」の中身を表示する)
    build build.nako
    

うまく動作しない場合

 うまく動作しない場合は、「vefbl」フォルダのディレクトリ構成が次のようになっているかを確認してください。

ディレクトリ構成
build.exe
dnako.dll
plug-ins\nakofile.dll
plug-ins\nakostr.dll

 必ずしもこのような構成にする必要はないのですが、この4つのフォルダとファイルが最低限必要なものです。同じディレクトリの他のファイルは、できたら削除しないてください。

こうすればもっと便利

 レジストリを操作して、簡単にコマンドラインの作業を行えるように設定を変更します。

レジストリ操作
HKEY_CLASSES_ROOT\Folder\shell\dos\command の 「(規定)」 に
                                                「cmd.exe」を設定

 もし、キーがなければ新規作成します。レジストリの操作に不安を覚える方もいらっしゃるでしょう。そこで、なでしこで同様のレジストリ操作をするプログラムを作成しました。以下のプログラムをコピーして、なでしこから実行してください。

なでしこからレジストリ操作
「HKEY_CLASSES_ROOT\Folder\shell\dos」のレジストリ開いて、Hに代入。
Hで「」に「コマンドプロンプトから開く」をレジストリ書く。
Hのレジストリ閉じる。
「HKEY_CLASSES_ROOT\Folder\shell\dos\command」のレジストリ開いて、Hに代入。
Hで「」に「cmd.exe」をレジストリ書く。
Hのレジストリ閉じる。

 上記のプログラムを実行すると、フォルダを右クリックした際に表示されるショートカットメニューに、[コマンドプロンプトから開く]が追加されます。

メニュー表示が変更された
メニュー表示が変更された

 レジストリを操作するのが怖いという方は行わなくても結構ですが、その場合には、コマンドプロンプトを開くたびに、その都度「cd」コマンドを実行し、「vefbl」フォルダに移動することになります。本連載では、レジストリ操作を前提として進行していきます。

 「エクスプローラから、直接、build.exeをダブルクリックして起動すればいいのでは?」と思う方もいるかもしれません。試しに「build.exe」をエクスプローラからダブルクリック起動してみてください。いかがでしょうか。黒いコマンドプロンプトの画面がぱっと開いて、すぐに閉じてしまいました。これでは表示の確認ができません。コマンドプロンプトから起動すれば、閉じないで表示を確認することができます。

 このレジストリ操作の利点は、「cd」をその都度行わないでよいことなのですが、一つ欠点があります。「vefbl」フォルダを選択した状態で、先ほど作成した右クリックメニュー[コマンドプロンプトから開く]を選択してみてください。

 無事にコマンドプロンプトが開きましたが、カレントディレクトリが一つ上の階層である「codezine」がカレントディレクトリとして起動しています。

カレントディレクトリが1つ上に
カレントディレクトリが1つ上に

 右クリックしたフォルダ自体がカレントディレクトリになるように、筆者のほうでも調べてみたのですが、その点は分かりませんでした。そのため、大変申し訳ないのですが、当分の間は、

始めのコマンド
cd vefbl

 を実行して「vefbl」フォルダに移動してから、コマンドラインの手続きをしてください。結局、その都度「cd」が必要になってしまいましたが、打ち込む内容は少なくてすみます。

改めてコマンドライン

 改めて、コマンドラインから「build.exe」を実行してみましょう。簡単です。先ほどと同様に「vefbl」フォルダを右クリックし、[コマンドプロンプトから開く]を選択します。表示されたコマンドプロンプト画面で、「始めのコマンド」である「cd vefbl」を入力し、[Enter]キーを押下します。そして、以下のコマンドを打ち込みます。

改めてbuild.exe
build build.nako
実行結果
実行結果

 では、次は以下のコマンドだけを書いてください。

何も表示されない
build

 実行すると、何も表示されません。これではきちんと実行されているかが分かりません。起動できたかを確かめたいので、コマンドライン¥1が空だったら「ファイル名を指定してください」と表示するようにコードを変更します。1行目を変えるだけです。

build.nako
もし、コマンドライン¥1が空ならば、
「ファイル名を指定してください」と表示。
終わる。
コマンドライン¥1を開く。
それを表示。

 最初の3行が変わっています。この修正した「build.nako」を元に再度実行ファイルを作成し、先ほどと同様にコマンドプロンプトから「build」だけ打ち込んでください。すると、今度はきちんとメッセージが表示されました。このメッセージはなくてもいいのですが、ちゃんと起動できたのを確認できて、すこし満足です。

実行結果
実行結果
上手く動作しない場合は?
 「肝心のコンソールには何も表示されないでウィンドウがぱっと出ただけ」という時は、メニューの[設定]-[なでしこ実行形式]を「コンソール」にし忘れているケースです。なでしこエディタを起動するたびに、実行形式はリセットされますので、起動してすぐに「コンソール」に設定するようにしてください。

プログラムの説明

 今まで実行してきた「build.nako」プログラムについて解説します。

開く

Sを開く
Sを開く

 「S」は、開くファイル名を指します。「開く」により、Sのファイル名を開きます。内容は「それ」に格納されます。

終わる

終わる
終わる。

 「終わる」により、プロセス(プログラム)の実行を終了します。

 だいたい想像がつくと思います。日本語プログラミング言語「なでしこ」は、「なでしこで誰でも簡単プログラマー」をキャッチフレーズとしていますので、日本語をメインの言語としている人なら誰でも簡単に習得できるように言語仕様が工夫されています。

次のページ
トークン分割

この記事は参考になりましたか?

MASMとなでしこによるオリジナルコンパイラの制作連載記事一覧

もっと読む

この記事の著者

KMY(かみぃ)

とあるごく平凡な中学生。兵庫県在住。日本語プログラミング言語「なでしこ」に惹かれ、たくさんのプログラムを作り利用している。なでしこ以外にも、他の言語を心得ており、HTMLがなでしこの次に得意であり、Perlが第3位(かも)。ベクターにも多彩な作品を残している。作文がど苦手。KMYpage

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/686 2007/02/20 10:23

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー