はろーわーるどの解説

以下では「はろーわーるど」のプログラムリストにあらわれるさまざまなワードの解説を行います。

\
コメントの始まりを示すワードです。その行の最後までがコメントとして無視されます。¥の直後に空白が入っていることに注意してください。空白が入らないとワードとして認識されずコメント行になりません。

ところで、日本語のキャラクタセットではYenマークになってしまうわけですが、本来はバックスラッシュです。こちらのほうがプログラムリストは見やすく美しいです。(T_T)

need
他のMopsソースファイルを読み込みコンパイルするためのワードです。Cの#include文やJavaのimport文に相当します。ネスティング(読み込まれたファイルのなかでさらにneedで他のファイルを読み込むこと)が許されている上、すでに一度読み込まれているファイルがneedで再び要求された場合は無視してくれるので無駄な二重定義が回避できます。
通常は必要なクラスライブラリを読み込むために使います。
ここでは、alertというクラスの定義されたファイルを読み込んでいます。

alert
アラートを宣言するためのワードでファイル"alert"のなかでクラス定義されています。
直前の数字は簡単にいうとアラートのなかのボタンの数を表わしており、 ここではボタンをひとつ持つaboutBoxという名前のアラートを宣言しています。

xts{
このワードと}に挟まれたあいだに出てくるワードへのポインタをスタックに積み、最後にスタックに積んだワードの数をスタックに積むという動作をするワードです。
ワードのリストをスタック上に作る目的で使用されます。
ここではnullというワードへのポインタと1がスタックにこの順で積まれます。

null
なにもしないワードです。

init:
つぎに続くaboutBoxとあわせてワンセットで、ここでは aboutBox
というアラートオブジェクトに
init:
という初期化のためのメッセージを送っています。
必要なパラメタはボタンに割り付ける動作を実行するワードのリストとアラートのリソースIDです。
この例では、ボタンにはnullが割り当てられ128番のアラートが使用されるように初期化しています。
アラートのボタンは押された時点で自動的にアラートを閉じるようになっているのでこのアバウト用のアラートの場合には、なにもしないnullを割り付けるだけでいいわけです。

ちなみにMopsではオブジェクトへのメッセージは最後に必ず:がついています。


:a
アクションハンドラの定義開始を表わすワードです。ここではShowAboutBoxという名前のアクションハンドラを定義開始しています。

;a
アクションハンドラの定義終了を表わすワードです。

menu
メニューを宣言するためのワードでファイル"menu"のなかでクラス定義されています。
直前の数字はメニューアイテムの数を表わしており、 ここではメニューアイテムをひとつ持つfileMenuという名前のメニューを宣言しています。

bye
アプリケーションを終了してFinderに戻るためのワードです。

DoDsk
アップルメニューの動作を請け負ってくれる便利なワードでファイル"menu"のなかで定義されています。

appleMen
アップルメニューのためのオブジェクトでファイル"menu"のなかで定義されています。init:メッセージを受けて初期化しています。

ワードの定義開始を表わすワードです。ここではMenuInitという名前のワードを定義開始しています。

ワードの定義終了を表わすワードです。

selwindow
ウインドウを定義するワードです。ここではSelection FrameworkのselWindowクラスを使用しています。

statictext
ウインドウアイテムの一種であるスタティックテキストを定義するワードです。Selection Frameworkには他にもボタンやラジオボタン、チェックボックス、ポップアップ、テキストエディット、スクロールバーなどさまざまなウインドウアイテムのためのクラスが用意されています。

instld?
スタンドアロンアプリケーションとしてインストールされている場合にはTrueをスタックに残すワードです。

NIF
not IFと同義でスタック上にFalseが残されているときだけNIF以降を実行するという意味の制御構造をあらわすワードです。Trueであった場合にはTHENまたはELSEというワードのところまでジャンプします。

MopsのIF文は一般の言語と異なり、

条件式 IF ほげほげ ELSE ほげほげ THEN

という構文になることに注意してください。アップルスクリプトの日本語表現との対比でいえば「もし」に相当するワードはなく、「ならば」がIF、「そうでなければ」がELSE、「以上」がTHENになります。

文字列の始まりをあらわすワードです。次のスペースやタブ、改行以外の文字から次の”までが文字列としてメモリに格納され、スタックには文字列へのポインタと文字列の長さが積まれます。この形式がMopsにおける文字列の標準形式になっています。

OpenResFile
リソースファイルを開くためのワードです。ファイル名は文字列へのポインタと文字列の長さという形式でスタックに与えられていなければなりません。

THEN
IFまたはNIF構文のおわりをあらわすワードです。

eventloop
マウスやキーなどのイベントのハンドリングを自動的にしてくれる便利なワードです。Mopsではcase文を使ったイベントループなどを記述する必要がなく、プログラムは、各種オブジェクトに割り当てられたアクションハンドラを通して実行されます。

CRASH
スタンドアロンアプリケーションではスタックオーバーフローなど実行時の様々なエラーを処理するワードが必要になります。CRASHはエラー処理に使われるデフォルトのワードです。
ちなみに、C言語におけるmain関数に相当するのはデフォルトではGOというワードです。

endload
ファイルのコンパイルを終了するワードです。needで他のファイルから呼ばれている場合にはそのファイルに戻りコンパイルを続けます。


戻る