SenseTalkにおける制限された単語
SenseTalk言語には、ある文脈または他の文脈で特別な意味を持つ800以上の単語が含まれています。これらの単語の一部は、その特別な意味のために専用に予約されています。残りの単語は、変数の名前や自分自身のコマンドや関数としても使用できます。
制限された単語の数が可能な限り少なくなるように配慮されており、スクリプト内で意味のある名前を最大限に使用できるようになっています。SenseTalkエンジンがスクリプトを正しく理解するためには、特別な意味のみに限定して使用しなければならない単語があります。これらの制限された単語を許可されていない方法で使用しようとすると、構文エラーが発生します。
制限されたコマンドと関数の名前
以下の単語は、コマンドや関数の名前として使用することはできません:
catch constant do else end exit | function getProp global if local next | on pass properties repeat return send | setProp the then to try universal |
制限された変数名
以下の単語は、変数(コンテナ)の名前として使用することはできません:
else empty end | false global if | repeat return target | then true universal |
事前定義された変数
他の多くの単語は事前定義された値を持ち、一般的には、その標準的な意味が必要ない状況でのみ変数として使用されるべきです。混乱を避けるために、これらの単語を変数名として使用するのは避けたほうがよいですが、それらの使用は禁止されていない、そして場合によってはそれらに異なる値を保存することが有用なこともあります。事前定義された変数は、Valuesで詳しく説明されています。以下は、変数名として避けるべきものの一部です:
- 代替ブール値:
yes, no, on, off
- 特殊文字:
colon, comma, cr, creturn, lf, linefeed, crlf, formfeed, newline, quote, space, tab, slash, backslash, null
- 名前付きの数値:
pi, zero, one, two, three
、など - 現在の日付と時間:
today, now, date, time
さらに、ホストアプリケーションや任意のロード済み外部モジュールは他の事前定義された変数を定義するかもしれません。
クォートされていないリテラル
すべての他の単語(つまり、上記の制限リストにない、または事前定義の特別な値を持たない)が変数名として許可され、それらに他の何かが保存されるまで、その名前に評価されます。つまり、それらは引用符なしリテラルとして使用することができます。そのような名前が変数として使用されると、その値は空として扱われます。引用符なしリテラルは、ハンドラ内での最初の使用に従って常に大文字化されます。同じハンドラ内での同じ名前の後続の使用 (ケースのみが異なる)は、最初の出現と同じように扱われます(以下の例の最初の3行を参照)。
the strictVariables
グローバルプロパティがtrueに設定されている場合、初期化されていない変数を引用符なしリテラルとして使用するのを防ぎます。
例:
put BIG -- "BIG"
put little -- "little"
put big && LITTLE -- "BIG little"
set the strictVariables to true -- 引用符なしリテラルの使用を防ぐ
put big -- これは例外をスローします