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

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

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

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

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

       

    Переменные

Tclsh задает следующие переменные Tcl:
 
    Argc содержит счетчик количества аргументов arg (если ни одного, то 0), исключая имя файла со скриптом.

    Argv содержит список Tcl, элементами которого являются аргументы arg, в порядке их следования, или нулевую строку, если нет ни одного аргумента.

    argv0 ≈ содержит fileName, если он был задан. В обратном случае содержит имя, при помощи которого был вызван tclsh.

    tcl_interactive≈ содержит 1, если tclsh работает в интерактивном режиме (не было задано fileName и стандартный вход есть терминальное устройство). В противном случае содержит 0.
     

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

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

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

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

       
      wish ?fileName arg arg ┘?
Если никаких аргументов указано не было, или если первый аргумент начинается с символа ▒-▓, то ⌠Интерпретатор■ запустится в интерактивном режиме, изображая на дисплее приглашение для ввода команд в виде знака процента ▒%▓. В ответ на приглашение следует ввести команду Tcl и нажать клавишу Enter. Затем ввести следующую команду и снова нажать Enter.
Если в домашнем каталоге пользователя существует файл .wishrc, то wish обработает этот файл как скрипт Tcl до считывания первой команды со стандартного входа.
Когда wish запускается с первым аргументом fileName, то аргумент считается именем файла со скриптом. ⌠Интерпретатор■ обработает файл fileName (создающий преимущественно интерфейс пользователя) в пакетном режиме и затем будет откликаться на события до тех пор, пока все окна не будут удалены. Команды со стандартного входа считываться не будут. В этом случае автоматической обработки файла .wishrc не делается, но если это необходимо, то файл скрипта может сослаться на него сам.
Wish ≈ автоматически обработает все необязательные аргументы arg командной строки из нижеприведенного списка.
       
    -colormap new ≈ указывает на то, что окно должно иметь новую собственную цветовую схему (colormap), а не использовать цветовую схему, заданную по умолчанию.
       
    -display display задает дисплей (и экран) для отображения окна.
       
    -geometry geometry задает начальную геометрию для использования в окне. Если этот параметр задан, то его значение сохраняется в глобальной переменной geometry интерпретатора Tcl, работающего с приложением.
       
    -name name задает использование name в качестве заголовка окна и имени интерпретатора для использования в командах send.
       
    -sync ≈ задает синхронное исполнение команд Х сервера, так что все ошибки докладываются немедленно. Это приведет к гораздо более медленному исполнению, но такой режим полезен при отладке.
       
    -use id ≈дает директиву встроить главное окно приложения в окно с идентификатором id, а не создавать его как отдельное самостоятельное окно верхнего уровня. Идентификатор id необходимо описать таким же образом, как и значения параметра -use для примитивов верхнего уровня (т.е., в форме, возвращаемой командой winfo id).
       
    -visual visual ≈ описывает используемый для окна visual. Этот параметр может иметь любую форму, поддерживаемую процедурой Tk_GetVisual.
       
    -- ≈дает директиву передать все остальные параметры в переменную скрипта argv без интерпретации. Это обеспечивает способ передачи аргументов в скрипт вместо интерпретации их wish.
       
Любые аргументы командной строки не из этого списка передаются скрипту с помощью переменных argc и argv.

    Имя и класс приложения

Имя приложения (используемое для таких целей, как команды send) берется из параметра -name, если он был задан. В противном случае оно берется из fileName, если оно было указано, или из командной строки, вызвавшей wish. В последних двух случаях, если имя содержит символ ▒/▓ (слеш), то только символы после последнего слеша используются в качестве имени приложения.
Класс приложения (используемый для таких целей, как описание параметров при помощи свойства RESOURCE_MANAGER или файла .Xdefaults) совпадает с его именем за исключением первой буквы, которая делается заглавной.

    Переменные

Wish ≈ задает следующие переменные Tcl:
       
      argc, argv0, tcl_interactive
Эти три переменные выполняют для wish точно такую же роль, какую выполняют одноименные переменные для интерпретатора tclsh.
       
    Argv ≈содержит список Tcl, элементами которого являются аргументы arg, которые следуют в командной строке за параметром -- или не входят в приведенный выше список различаемых параметров wish, в порядке их следования, или содержит нулевую строку, если нет ни одного аргумента.
       
    geometry
       
      Если параметр -geometry был задан, то wish копирует его значение в эту переменную. Если после обработки fileName эта переменная еще существует, то wish использует значение этой переменной в команде wm geometry для задания геометрии главного окна.
       

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

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

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

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

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

    #!/bin/sh
    # the next line restarts using tclsh\
    exec tclsh "$0" "$@"
Этот второй способ имеет три преимущества перед предыдущим способом:
  • местонахождение исполняемого файла интерпретатора не нужно прописывать в скрипте: исполняемый файл может находиться в любом месте в пределах пути поиска оболочки пользователя;
  • нет необходимости учитывать ограничение на длину строк;
  • этот способ будет работать даже тогда, когда файл tclsh или wish сам является скриптом оболочки (иногда так поступают для того, чтобы иметь возможность работать с несколькими архитектурами или операционными системами: скрипт tclsh (wish) выберет для запуска один из нескольких исполняемых файлов).
Эти три строчки позволяют обрабатывать скрипт и оболочке 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.


Наш баннер
Вы можете установить наш баннер на своем сайте или блоге, скопировав этот код:
RSS новости