Стандартные интерпретаторы

ИНТЕРПРЕТАТОР tclsh ИНТЕРПРЕТАТОР wish Дополнительные возможности

ИНТЕРПРЕТАТОР tclsh

ИНТЕРПРЕТАТОР tclsh представляет собой простую оболочку с алфавитно-цифровым интерфейсом пользователя. ИНТЕРПРЕТАТОР может работать в интерактивном или пакетном режиме. В первом случае он считывает команды Tcl со стандартного входа: пользователь вводит команды с клавиатуры, tclsh обрабатывает их и выводит результат или сообщение об ошибке на стандартный вывод. Во втором случае источником команд для обработки служит указанный дисковый файл. ⌠Интерпретатор■ будет работать до тех пор, пока не будет подана команда exit, или пока на стандартный вход не поступит символ конца файла.
Для запуска интерпретатора необходимо в ответ на приглашение операционной системы подать команду Если никаких аргументов указано не было, то ⌠Интерпретатор■ запустится в интерактивном режиме, изображая на дисплее приглашение для ввода команд в виде знака процента ▒%▓. В ответ на приглашение следует ввести команду Tcl и нажать клавишу Enter. Затем ввести следующую команду и снова нажать Enter.
Если в домашнем каталоге пользователя существует файл .tclshrc, то tclsh обработает этот файл как скрипт Tcl до считывания первой команды со стандартного входа.

Когда tclsh запускается с аргументами, то первый аргумент fileName является именем файла со скриптом, а все последующие необязательные аргументы передаются скрипту в качестве переменных. Вместо того, чтобы считывать команды со стандартного входа, ⌠Интерпретатор■ будет работать в пакетном режиме: считывать их из указанного файла и завершит свою работу по достижении конца файла. В этом случае автоматической обработки файла .tclshrc не делается, но если это необходимо, то можно сослаться на него изнутри файла скрипта.

Tclsh задает следующие переменные Tcl:
 
ИНТЕРПРЕТАТОР wish

ИНТЕРПРЕТАТОР wish представляет собой простую программу с двумя рабочими окнами, главным и выходным. ИНТЕРПРЕТАТОР может работать в интерактивном или пакетном режиме. В первом случае он считывает команды Tcl со стандартного входа: пользователь вводит команды с клавиатуры в главном окне, wish обрабатывает их и выводит результат или сообщение об ошибке в выходном окне.

Во втором случае источником команд для обработки служит указанный дисковый файл. В обоих режимах ⌠Интерпретатор■ будет работать до тех пор, пока не будут удалены все окна приложения, или пока на стандартный вход не поступит символ конца файла.

Для запуска интерпретатора необходимо в ответ на приглашение операционной системы подать команду

Если никаких аргументов указано не было, или если первый аргумент начинается с символа ▒-▓, то ⌠Интерпретатор■ запустится в интерактивном режиме, изображая на дисплее приглашение для ввода команд в виде знака процента ▒%▓. В ответ на приглашение следует ввести команду Tcl и нажать клавишу Enter. Затем ввести следующую команду и снова нажать Enter.
Если в домашнем каталоге пользователя существует файл .wishrc, то wish обработает этот файл как скрипт Tcl до считывания первой команды со стандартного входа.
Когда wish запускается с первым аргументом fileName, то аргумент считается именем файла со скриптом. ⌠Интерпретатор■ обработает файл fileName (создающий преимущественно интерфейс пользователя) в пакетном режиме и затем будет откликаться на события до тех пор, пока все окна не будут удалены. Команды со стандартного входа считываться не будут. В этом случае автоматической обработки файла .wishrc не делается, но если это необходимо, то файл скрипта может сослаться на него сам.
Wish ≈ автоматически обработает все необязательные аргументы arg командной строки из нижеприведенного списка. Любые аргументы командной строки не из этого списка передаются скрипту с помощью переменных argc и argv. Имя приложения (используемое для таких целей, как команды send) берется из параметра -name, если он был задан. В противном случае оно берется из fileName, если оно было указано, или из командной строки, вызвавшей wish. В последних двух случаях, если имя содержит символ ▒/▓ (слеш), то только символы после последнего слеша используются в качестве имени приложения.
Класс приложения (используемый для таких целей, как описание параметров при помощи свойства RESOURCE_MANAGER или файла .Xdefaults) совпадает с его именем за исключением первой буквы, которая делается заглавной. Wish ≈ задает следующие переменные Tcl: Эти три переменные выполняют для wish точно такую же роль, какую выполняют одноименные переменные для интерпретатора tclsh.

ДОПОЛНИТЕЛЬНЫЕ  ВОЗМОЖНОСТИ

Интерпретаторы можно запускать не только в режиме командной строки, но также и из скрипта. Также можно изменить вид приглашения (символ ▒%▓).
 

Если создать файл скрипта (этот и следующий примеры даны для интерпретатора tclsh, для wish надо заменить в строках имя tclsh на wish) с первой строкой вида

и пометить файл скрипта, как исполняемый, то будет можно запускать ⌠Интерпретатор■ прямо из оболочки Unix. В этом случае предполагается, что ⌠Интерпретатор■ (tclsh, wish) был установлен в стандартный каталог usr/local/bin; если он был установлен в какое-нибудь иное место, то надо будет откорректировать путь в названной выше строке. При этом эта строка должна удовлетворять возможным требованиями операционной системы Unix на длину строк, начинающихся с #! (не более 30 символов).

Еще удобнее будет начинать файлы со скриптами следующими тремя строками:

Этот второй способ имеет три преимущества перед предыдущим способом: Эти три строчки позволяют обрабатывать скрипт и оболочке sh, и интерпретатору (tclsh или wish) но при этом exec будет запущен только оболочкой sh. Сначала скрипт обрабатывает sh, она считает вторую строку комментарием и исполняет третью строку. Утверждение с exec остановит обработку оболочкой и вместо этого запустит ⌠Интерпретатор■ для повторной обработки всего скрипта.

Когда Интерпретатор запустится, он сочтет все три строки комментариями, потому что обратный слеш в конце второй строки означает для него, что третья строка есть продолжение комментария на второй строке.

Изменить символ приглашения можно при помощи переменных tcl_prompt1 и tcl_prompt2. Если переменная tcl_prompt1 существует, то она должна содержать скрипт Tcl для вывода приглашения; вместо вывода своего приглашения, ⌠Интерпретатор■ будет исполнять скрипт в tcl_prompt1. Переменная tcl_prompt2 используется аналогичным образом, когда при вводе была начата новая строка, но вводимая команда еще не была закончена. Если переменная tcl_prompt2 не была задана, то для незаконченных команд не будет выводиться никакого приглашения.

Все права защищены 1992-1999 DataX/FLORIN, Inc.