195 lines
		
	
	
		
			8.2 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			195 lines
		
	
	
		
			8.2 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 | ||
| <html>
 | ||
|   <head>
 | ||
|     <title>Tcl</title>
 | ||
|   </head>
 | ||
|   <body>
 | ||
|     <h1>Tcl</h1>
 | ||
| 
 | ||
|     <p>Основные правила синтаксиса команд.</p>
 | ||
| 
 | ||
|     <h2>ОПИСАНИЕ</h2>
 | ||
|     
 | ||
|     <p>Синтаксис и семантика языка Tcl определены описанным ниже
 | ||
|       образом.</p>
 | ||
|     
 | ||
|     <p>Скрипт на Tcl представляет собой одну или более команд.
 | ||
|       Символы точки с запятой (<strong>;</strong>) и новой строки служат
 | ||
|       разделителями команд, если не находятся между символами
 | ||
|       кавычек. Закрывающие скобки служат окончанием тела команды при
 | ||
|       подстановках команд, если не находятся между символами
 | ||
|       кавычек.</p>
 | ||
| 
 | ||
|     <p>Команда обрабатывается за два прохода. При первом проходе
 | ||
|       интерпретатор Tcl разбивает команду на слова и выполняет
 | ||
|       подстановки, как рассказано ниже. Эти подстановки выполняются
 | ||
|       одинаково для всех команд. Первое слово считается именем
 | ||
|       процедуры, которая исполняет команду. Когда процедура найдена,
 | ||
|       ей передаются остальные слова команды. Процедура может
 | ||
|       интерпретировать каждое из слов произвольным образом, например,
 | ||
|       как число, имя переменной, список или Tcl скрипт. Разные
 | ||
|       командные процедуры интерпретируют свои слова по-разному.</p>
 | ||
| 
 | ||
|     <p>Слова команд разделяются пробельными символами (пробел,
 | ||
|       табуляция). Символ новой строки разделяет команды.</p>
 | ||
| 
 | ||
|     <p>Если первый символ слова есть двойные кавычки ("), то слово
 | ||
|       должно заканчиваться также на двойные кавычки. Если в промежутке
 | ||
|       между знаками кавычек находятся точка с запятой, закрывающая
 | ||
|       скобка или пробельные символы (включая символ новой строки), то
 | ||
|       они будут поняты как обычные символы в составе
 | ||
|       слова. Подстановки команд, переменных и подстановки с обратным
 | ||
|       слэшем в таком слове описаны ниже. Двойные кавычки не являются
 | ||
|       частью слова.</p>
 | ||
| 
 | ||
|     <p>Если слово начинается с открывающей фигурной скобки (<strong>{</strong>),
 | ||
|       то оно должно заканчиваться на парную ей закрывающую скобку
 | ||
|       (<strong>}</strong>).  Внутри фигурных скобок могут также содержаться
 | ||
|       слова в фигурных скобках. При этом каждая открывающая фигурная
 | ||
|       скобка должна иметь парную ей закрывающую фигурную
 | ||
|       скобку. Однако, если открывающая или закрывающая фигурная скобка
 | ||
|       отмечена обратным слэшем, то она не учитывается при поиске
 | ||
|       парной скобки. Для символов между фигурными скобками не
 | ||
|       выполняется никаких подстановок, за исключением описанной ниже
 | ||
|       подстановки "обратный слэш - новая строка". Также не
 | ||
|       приписывается никакого специального смысла символам точки с
 | ||
|       запятой, новой строки, закрывающей скобки и пробела. Слово будет
 | ||
|       состоять из символов между скобками, за исключением самих
 | ||
|       скобок.</p>
 | ||
| 
 | ||
|     <p>Если слово содержит открывающую квадратную скобку (<strong>[</strong>),
 | ||
|       то Tcl выполняет подстановку команды. Для этого он рекурсивно
 | ||
|       вызывает интерпретатор Tcl, который обрабатывает символы,
 | ||
|       следующие за скобкой, как скрипт Tcl. Скрипт может иметь любое
 | ||
|       количество команд и должен оканчиваться закрывающей квадратной
 | ||
|       скобкой (<strong>]</strong>). Результат выполнения скрипта (т.е., результат его
 | ||
|       последней команды) подставляется в слово на место скобок и всех
 | ||
|       символов между ними. В слове может быть любое количество
 | ||
|       подстановок команд. Подстановки команд не выполняются в словах,
 | ||
|       заключенных в фигурные скобки.</p>
 | ||
| 
 | ||
|     <p>Если слово содержит символ доллара (<strong>$</strong>), тогда Tcl
 | ||
|       выполняет подстановку переменной: символ доллара и последующие
 | ||
|       символы заменяются в слове на значение этой переменной.
 | ||
|       Существует три способа подстановки переменной:</p>
 | ||
|     <pre>
 | ||
|       $name
 | ||
|     </pre>
 | ||
|     <p>Здесь <em>name</em> - имя скалярной переменной, оно заканчивается
 | ||
|       любым символом, за исключением буквы, цифры или символа
 | ||
|       подчеркивания.</p>
 | ||
|     <pre>
 | ||
|       $name(index)
 | ||
|     </pre>
 | ||
|     <p>Здесь <em>name</em> есть имя массива данных, а <em>index</em> - имя
 | ||
|       элемента внутри этого массива. <em>name</em> должен состоять
 | ||
|       только из букв, цифр и символов подчеркивания. Все виды
 | ||
|       подстановок выполняются по отношению к символам
 | ||
|       <em>index</em>.</p>
 | ||
|     <pre>
 | ||
|       ${name}
 | ||
|     </pre>
 | ||
|     <p>Здесь <em>name</em> - имя скалярной переменной, оно может
 | ||
|       состоять из каких угодно символов, кроме закрывающей фигурной
 | ||
|       скобки. В слове может быть любое количество подстановок
 | ||
|       переменных. Подстановки переменных не выполняются для слов,
 | ||
|       заключенных в фигурные скобки.</p>
 | ||
| 
 | ||
|     <p>Если в слове есть символ обратного слэша, то выполняется
 | ||
|       подстановка с обратным слэшем. Во всех случаях, кроме
 | ||
|       перечисленных ниже, обратный слэш пропускается, а следующий за
 | ||
|       ним символ обрабатывается как обычный символ и включается в
 | ||
|       состав слова. Таким способом в слово можно включать такие
 | ||
|       символы, как двойные кавычки, закрывающие скобки и символ
 | ||
|       доллара без непреднамеренной специальной обработки. Ниже
 | ||
|       перечислены последовательности символов, для которых подстановка
 | ||
|       с обратным слэшем выполняется специальным образом, и
 | ||
|       соответствующие подставляемые значения.</p>
 | ||
|     <table>
 | ||
|       <tbody>
 | ||
|         <tr>
 | ||
|           <td>\a</td>
 | ||
|           <td>Звуковой сигнал (гудок) (0х7).</td>
 | ||
|         </tr>
 | ||
|         <tr>
 | ||
|           <td>\b</td>
 | ||
|           <td>Сдвиг на одну позицию влево (0х8).</td>
 | ||
|         </tr>
 | ||
|         <tr>
 | ||
|           <td>\f</td>
 | ||
|           <td>Прогон листа (0xc).</td>
 | ||
|         </tr>
 | ||
|         <tr>
 | ||
|           <td>\n</td>
 | ||
|           <td>Новая строка, newline (0ха).</td>
 | ||
|         </tr>
 | ||
|         <tr>
 | ||
|           <td>\r</td>
 | ||
|           <td>Возврат каретки (0хd).</td>
 | ||
|         </tr>
 | ||
|         <tr>
 | ||
|           <td>\t</td>
 | ||
|           <td>Табуляция (0х9).</td>
 | ||
|         </tr>
 | ||
|         <tr>
 | ||
|           <td>\v</td>
 | ||
|           <td>Вертикальная табуляция (0xb).</td>
 | ||
|         </tr>
 | ||
|         <tr>
 | ||
|           <td>\<newline><em>пробел</em></td>
 | ||
|           <td>Обратный слэш, символ новой строки и все пробелы и
 | ||
|           табуляции после этого символа заменяются на одиночный
 | ||
|           пробел. Данная последовательность уникальна в том смысле,
 | ||
|           что она замещается в отдельном суб-проходе перед тем, как
 | ||
|           начинается непосредственно анализ команды. Поэтому эта
 | ||
|           последовательность будет замещена, даже если она стоит
 | ||
|           между фигурными скобками, и результирующий пробел будет
 | ||
|           интерпретироваться как разделитель слов, если только он
 | ||
|           не будет стоять между фигурными скобками или
 | ||
|           кавычками.</td>
 | ||
|         </tr>
 | ||
|         <tr>
 | ||
|           <td>\\</td>
 | ||
|           <td>Обратный слэш (\).</td>
 | ||
|         </tr>
 | ||
|         <tr>
 | ||
|           <td>\ooo</td>
 | ||
|           <td>Цифры <em>ooo</em> (одна, две или все три) дают
 | ||
|           восьмеричное значение символа.</td>
 | ||
|         </tr>
 | ||
|         <tr>
 | ||
|           <td>\xhh</td>
 | ||
|           <td>Шестнадцатеричное число "hh" дает шестнадцатеричное
 | ||
|           значение символа. Может присутствовать любое количество
 | ||
|           цифр.</td>
 | ||
|         </tr>
 | ||
|       </tbody>
 | ||
|     </table>
 | ||
|     <p>Подстановки с обратным слэшем не выполняются в словах,
 | ||
|     заключенных в фигурные скобки, кроме подстановки "обратный слэш
 | ||
|     - новая строка".</p>
 | ||
| 
 | ||
|     <p>Если символ "#" будет стоять в том месте, где Tcl
 | ||
|       предполагает первый символ первого слова команды, то этот символ
 | ||
|       и все последующие символы до следующего символа новой строки
 | ||
|       включительно истолковываются как комментарии и
 | ||
|       игнорируются. Символ комментария действителен только тогда,
 | ||
|       когда он стоит в начале команды.</p>
 | ||
| 
 | ||
|     <p>При воссоздании слов команды каждый символ обрабатывается
 | ||
|       интерпретатором Tcl только один раз. Например, если выполнялась
 | ||
|       подстановка переменной, то в значении переменной никаких
 | ||
|       подстановок не производится; значение вставляется в слово без
 | ||
|       изменений. Если выполнялась подстановка команды, то вставленная
 | ||
|       команда обрабатывается целиком посредством рекурсивного вызова
 | ||
|       интерпретатора Tcl; не делается никаких подстановок перед
 | ||
|       рекурсивным вызовом и не делается никаких дополнительных
 | ||
|       подстановок в результат исполнения вставленного скрипта.</p>
 | ||
| 
 | ||
|     <p>Подстановки не воздействуют на границы слов в команде.
 | ||
|       Например, при подстановке переменной все значение переменной
 | ||
|       становится частью одного слова, даже если это значение содержит
 | ||
|       пробелы.</p>
 | ||
|   </body>
 | ||
| </html>
 | 
