Spec-Zone.ru › Tcl/Tk

Tcl

НАЗВАНИЕ
Tcl — Язык командных инструментов
СИНТАКСИС
ОПИСАНИЕ
    [1] Команды.
    [2] Вычисление.
    [3] Слова.
    [4] Двойные кавычки.
    [5] Расширение аргументов.
    [6] Фигурные скобки.
    [7] Подстановка команд.
    [8] Подстановка переменных.
    $имя
    $имя(индекс)
    ${имя}
[9] Подстановка обратной косой черты.
\a
\b
\f
\n
\r
\t
\v
\<новая строка>пробелы
\\
\ooo
\xhh
\uhhhh
\Uhhhhhhhh
[10] Комментарии.
[11] Порядок подстановки.
[12] Подстановка и границы слов.
КЛЮЧЕВЫЕ СЛОВА

Название

Tcl — Язык командных инструментов

Синтаксис

Краткое изложение синтаксиса языка Tcl.

Описание

Следующие правила определяют синтаксис и семантику языка Tcl:
    [1] Команды.
    Скрипт Tcl представляет собой строку, содержащую одну или несколько команд. Точки с запятой и новые строки являются разделителями команд, если не заключены в кавычки, как описано ниже. Закрывающая скобка является терминатором команды во время подстановки команд (см. ниже), если не заключена в кавычки.
    [2] Вычисление.
    Команда вычисляется в два этапа. Сначала интерпретатор Tcl разбивает команду на слова и выполняет подстановки, как описано ниже. Эти подстановки выполняются одинаково для всех команд. Во-вторых, первое слово используется для поиска процедуры обработки команды, а затем все слова команды передаются в процедуру обработки. Процедура обработки команды свободна интерпретировать каждое слово по своему усмотрению, например, как целое число, имя переменной, список или скрипт Tcl. Разные команды интерпретируют свои слова по-разному.
    [3] Слова.
    Слова команды разделены пробелами (за исключением новых строк, которые являются разделителями команд).
    [4] Двойные кавычки.
    Если первый символ слова — двойная кавычка («"»), то слово завершается следующей двойной кавычкой. Если точки с запятой, закрывающие скобки или пробелы (включая новые строки) встречаются между кавычками, то они обрабатываются как обычные символы и включаются в слово. Подстановка команд, подстановка переменных и подстановка обратной косой черты выполняются над символами между кавычками, как описано ниже. Двойные кавычки не сохраняются как часть слова.
    [5] Расширение аргументов.
    Если слово начинается со строки «{*}», за которой следует не пробельный символ, то ведущая «{*}» удаляется, а остальная часть слова анализируется и подставляется как любое другое слово. После подстановки слово анализируется как список (без подстановки команд или переменных; подстановка обратной косой черты выполняется как обычно для списка, а отдельные внутренние слова могут быть заключены в фигурные скобки или двойные кавычки), и его слова добавляются к подставляемой команде. Например, «cmd a {*}{b [c]} d {*}{$e f {g h}}» эквивалентно «cmd a b {[c]} d {$e} f {g h}».
    [6] Фигурные скобки.
    Если первый символ слова — открывающая фигурная скобка («{»), и правило [5] не применяется, то слово завершается соответствующей закрывающей фигурной скобкой («}»). Фигурные скобки вложены в слово: для каждой дополнительной открывающей скобки должна быть дополнительная закрывающая скобка (однако, если открывающая или закрывающая скобка в слове заключена в обратную косую черту, то она не учитывается при поиске соответствующей закрывающей скобки). Никакие подстановки не выполняются над символами между фигурными скобками, кроме подстановки обратной косой черты-новой строки, описанной ниже, и точки с запятой, новые строки, закрывающие скобки или пробелы не получают специальной интерпретации. Слово будет состоять ровно из символов между внешними фигурными скобками, не включая сами фигурные скобки.
    [7] Подстановка команд.
    Если слово содержит открывающую скобку («[»), тогда Tcl выполняет подстановку команд. Для этого он рекурсивно вызывает интерпретатор Tcl для обработки символов после открывающей скобки как скрипта Tcl. Скрипт может содержать любое количество команд и должен быть завершен закрывающей скобкой («]»). Результат скрипта (то есть результат его последней команды) подставляется в слово вместо скобок и всех символов между ними. В одном слове может быть любое количество подстановок команд. Подстановка команд не выполняется для слов, заключенных в фигурные скобки.
    [8] Подстановка переменных.
    Если слово содержит знак доллара («$»), за которым следует один из описанных ниже форм, тогда Tcl выполняет подстановку переменных: знак доллара и следующие символы заменяются в слове значением переменной. Подстановка переменных может принимать следующие формы:
    $имя
    Имя — имя скалярной переменной; имя — последовательность одного или нескольких символов, являющихся буквой, цифрой, подчеркиванием или разделителями имен пространств имён (две или более точки с двоеточием). Буквы и цифры — только стандартные ASCII (0–9, A–Z и a–z).
    $имя(индекс)
    Имя задаёт имя массива переменных, а индекс — имя элемента в этом массиве. Имя должно содержать только буквы, цифры, символы подчеркивания и разделители имен пространств имён и может быть пустой строкой. Буквы и цифры — только стандартные ASCII (0–9, A–Z и a–z). Подстановки команд, переменных и обратной косой черты выполняются для символов индекса.
    ${имя}
    Имя — имя скалярной переменной или элемента массива. Оно может содержать любые символы, кроме закрывающей фигурной скобки. Это указывает на элемент массива, если имя имеет вид «имяМассива(индекс)», где имяМассива не содержит символов открывающей скобки «(» или закрывающей фигурной скобки «}», а индекс может быть любой последовательностью символов, кроме закрывающей фигурной скобки. Больше никаких подстановок не выполняется во время анализа имени.

    В одном слове может быть любое количество подстановок переменных. Подстановка переменных не выполняется для слов, заключенных в фигурные скобки.

    Обратите внимание, что переменные могут содержать последовательности символов, отличные от перечисленных выше, но в этом случае необходимо использовать другие механизмы для доступа к ним (например, с помощью формы с одним аргументом команды set).

    [9] Подстановка обратной косой черты.
    Если в слове появляется обратная косая черта («\»), то происходит подстановка обратной косой черты. Во всех случаях, кроме описанных ниже, обратная косая черта опускается, и следующий символ обрабатывается как обычный символ и включается в слово. Это позволяет включать в слова такие символы, как двойные кавычки, закрывающие скобки и знаки доллара, без запуска специальной обработки. В следующей таблице перечислены последовательности обратной косой черты, которые обрабатываются особо, а также значение, которое заменяет каждую последовательность.
    \a
    Звуковой сигнал (звонок) (Unicode U+000007).
    \b
    Возврат на одну позицию назад (Unicode U+000008).
    \f
    Форма подачи (Unicode U+00000C).
    \n
    Новая строка (Unicode U+00000A).
    \r
    Возврат каретки (Unicode U+00000D).
    \t
    Табуляция (Unicode U+000009).
    \v
    Вертикальная табуляция (Unicode U+00000B).
    \<newline>whiteSpace
    Один символ пробела заменяет обратную косую черту, новую строку и все пробелы и табуляции после новой строки. Эта последовательность обратной косой черты уникальна тем, что она заменяется на отдельном предварительном проходе до фактического анализа команды. Это означает, что она будет заменена даже тогда, когда она встречается между фигурными скобками, а полученный пробел будет обрабатываться как разделитель слов, если он не находится в фигурных скобках или кавычках.
    \\
    Обратная косая черта («\»).
    \ooo
    Цифры ooo (одна, две или три из них) задают восьмеричное значение для восьмибитового Unicode-символа, который будет вставлен в диапазоне 000–377 (т. е. в диапазоне U+000000–U+0000FF). Парсер остановится непосредственно перед переполнением этого диапазона или когда будет достигнуто максимальное значение из трёх цифр. Старшие биты Unicode-символа будут 0.
    \xhh
    Шестнадцатеричные цифры hh (одна или две из них) задают шестнадцатеричное значение для восьмибитового Unicode-символа, который будет вставлен. Старшие биты Unicode-символа будут 0 (т. е. символ будет в диапазоне U+000000–U+0000FF).
    \uhhhh
    Шестнадцатеричные цифры hhhh (одна, две, три или четыре из них) задают шестнадцатеричное значение для шестнадцатибитового Unicode-символа, который будет вставлен. Старшие биты Unicode-символа будут 0 (т. е. символ будет в диапазоне U+000000–U+00FFFF).
    \Uhhhhhhhh
    Шестнадцатеричные цифры hhhhhhhh (от одной до восьми из них) задают шестнадцатеричное значение для двадцатиоднобитового Unicode-символа, который будет вставлен в диапазоне U+000000–U+10FFFF. Парсер остановится непосредственно перед переполнением этого диапазона или когда будет достигнуто максимальное значение из восьми цифр. Старшие биты Unicode-символа будут 0.

    Диапазон U+010000–U+10FFFD зарезервирован для будущего использования.

    Подстановка обратной косой черты не выполняется для слов, заключенных в фигурные скобки, за исключением обратной косой черты-новой строки, как описано выше.

    [10] Комментарии.
    Если символ решетки («#») появляется в точке, где Tcl ожидает первого символа первого слова команды, то символ решетки и следующие за ним символы до следующей новой строки обрабатываются как комментарий и игнорируются. Символ комментария имеет значение только при появлении в начале команды.
    [11] Порядок подстановки.
    Каждый символ обрабатывается ровно один раз интерпретатором Tcl в процессе создания слов команды. Например, если происходит подстановка переменных, то дальнейшие подстановки не выполняются над значением переменной; значение вставляется в слово дословно. Если происходит подстановка команд, то вложенная команда обрабатывается полностью рекурсивным вызовом интерпретатора Tcl; никаких подстановок не выполняется до рекурсивного вызова и никаких дополнительных подстановок не выполняется над результатом вложенного скрипта.

    Подстановки выполняются слева направо, и каждая подстановка оценивается полностью перед попыткой оценки следующей. Таким образом, последовательность вроде

    set y [set x 0][incr x][incr x]

    всегда устанавливает переменную y в значение 012.

    [12] Подстановка и границы слов.
    Подстановки не влияют на границы слов команды, за исключением расширения аргументов, как указано в правиле [5]. Например, во время подстановки переменных всё значение переменной становится частью одного слова, даже если значение переменной содержит пробелы.

Licensed under Tcl/Tk terms
https://www.tcl.tk/man/tcl/TclCmd/Tcl.htm

Licensed under Tcl/Tk terms
https://www.tcl.tk/man/tcl/TclCmd/Tcl.htm

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API