HyperTalk
ボタンやフィールド、カード等のオブジェクトが持つ属性(id、name、rectangle、location 等)をプロパティと呼ぶ。プロパティを設定する場合はset命令を用いる(変更不可のプロパティも存在する)。プロパティを参照する場合は the «プロパティ名» of «オブジェクト名、オブジェクトID等» の形で記述し、関数呼び出しに似ている。
値を内部に含むものをコンテナと呼ぶ。変数、メッセージボックス、ボタン、フィールドなどがコンテナに該当する。put 命令によって値を設定することができ、命令や関数、キーワードのパラメータとして渡した場合は、コンテナ名として記載した部分が値で置き換えられる。 コンテナで保持する値には型は存在せず(文字列型のみ)、算術計算に使用した場合は自動的に数値に変換され、ブール値は true、false の文字列で扱う。
変数にはグローバル変数とローカル変数がある。グローバル変数として使用する前には global キーワードで宣言する必要がある。ローカル変数には宣言は必要ない。 いずれも、値を代入する場合は put 命令の値の代入先として指定する。ただし it 変数は answer 命令や get 命令等の結果の格納先として暗黙的に使用される。
他、文法に関する細かい仕様 行の区切り文字は改行である。1つの処理を複数行で記述したい場合は、行末に ~(チルダ)を記述する。 大文字と小文字は区別されない。 on mouseUp は On MouseUp と記述しても同じ動作をする。また、 "hypercard" = "HyperCard" の評価値は true である。 -- から改行までは、コメントとして扱われる。
一連の処理は、スタック、バックグラウンド、カード、ボタン、フィールドのプロパティであるスクリプトに書かれる。
処理内容は、on «命令名»〜end «命令名» または function «関数名» 〜 end «関数名» に挟まれた行内に記述する。これらに挟まれていない内容は無視される(文法エラーになることもある)。
処理を示す行は、必ず命令(answer、go、put 等)かキーワード(if、repeat、do 等)で始まる。 関数や、単なる数値や文字列で文を始めることはできない。この点、HyperTalkでは命令と関数には明確な区別が存在する。 HyperTalkでいうキーワードは、同名の命令や変数を定義(オーバーライド)することができない予約語のこと。主に制御構造を示すキーワードを文頭に置くことができる。先述のon、function、end もキーワードに該当する。 なお、先頭にインデントを示す空白を入れることは可能で、スクリプトエディタではif やrepeat の深さに応じて自動的にインデントが挿入される。
パラメータに対する計算処理(sin、max、random等)や、システムの状態等を取得する処理(time、date、systemVersion 等)を関数と呼ぶ。関数は the «関数名» of «パラメータ» または «関数名»(«パラメータ») の形で呼び、命令や関数、キーワードのパラメータ内で使用することができる。 組み込み関数は両方の記法でコールできるが、前者の方が高速である。非組み込み関数は後者の記法でコールする必要がある。