Skip to main content
Version: 23.4

Restricted Words in SenseTalk

The SenseTalk language includes more than 800 words that have special meaning in one context or another. A few of these words are reserved exclusively for their special meaning, however. The rest can also be used as the names of variables or for your own commands and functions.

Care has been taken to ensure that the number of restricted words is as small as possible, to give you the maximum freedom to use names that are meaningful in your scripts. In order for the SenseTalk engine to properly understand your script, there are some words whose use must be confined to their special meaning only. Attempting to use one of these restricted words in a way that is not allowed results in a syntax error.

Restricted Command and Function Names

The following words cannot be used as command or function names:

catch

constant

do

else

end

exit
function

getProp

global

if

local

next
on

pass

properties

repeat

return

send
setProp

the

then

to

try

universal

Restricted Variable Names

The following words cannot be used as variable (container) names:

else

empty

end
false

global

if
repeat

return

target
then

true

universal

Predefined Variables

A number of other words have predefined values, and should generally be used as variables only in situations where their standard meanings are not required. To avoid confusion, it is best to avoid using these words as variable names, but their use is not prohibited, and in some cases it might be useful to store different values in them. Predefined variables are described in detail in Values. Here are some that should probably be avoided as variable names:

  • Alternative boolean values: yes, no, on, off
  • Special characters: colon, comma, cr, creturn, lf, linefeed, crlf, formfeed, newline, quote, space, tab, slash, backslash, null
  • Numbers by name: pi, zero, one, two, three, . . .
  • The current date and time: today, now, date, time

In addition, the host application and any loaded external modules might define other predefined variables.

Unquoted Literals

All other words that are allowed as variable names (i.e., not in the restricted list given above, or having a predefined special value) evaluate to their name until something else is stored in them. In other words, they can be used as unquoted literals. As soon as such a name is used as a variable, its value is treated as empty. Unquoted literals are always capitalized according to their first use in the handler. Subsequent uses of the same name (varying only by case) in the same handler are treated the same as the first occurrence (as illustrated by the first 3 lines of the examples below).

note

If the strictVariables global property is set to true, it prevents the use of uninitialized variables as unquoted literals.

Examples:

put BIG --> "BIG"
put little --> "little"
put big && LITTLE --> "BIG little"
set the strictVariables to true -- prevent use of unquoted literals
put big -- this will throw an exception