メインコンテンツまでスキップ

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 -- これは例外をスローします