195 lines
		
	
	
		
			9.0 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			195 lines
		
	
	
		
			9.0 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <HTML><HEAD><TITLE>Tcl Built-In Commands - Tcl manual page</TITLE></HEAD><BODY>
 | |
| <DL>
 | |
| <DD><A HREF="Tcl.htm#M2" NAME="L2">NAME</A>
 | |
| <DL><DD>Tcl - Summary of Tcl language syntax.</DL>
 | |
| <DD><A HREF="Tcl.htm#M3" NAME="L3">DESCRIPTION</A>
 | |
| <DL>
 | |
| <DL>
 | |
| <DD><A HREF="Tcl.htm#M4" NAME="L4"><B>$</B><I>name</I></A>
 | |
| <DD><A HREF="Tcl.htm#M5" NAME="L5"><B>$</B><I>name</I><B>(</B><I>index</I><B>)</B></A>
 | |
| <DD><A HREF="Tcl.htm#M6" NAME="L6"><B>${</B><I>name</I><B>}</B></A>
 | |
| </DL>
 | |
| <DL>
 | |
| <DD><A HREF="Tcl.htm#M7" NAME="L7">\<B>a</B></A>
 | |
| <DD><A HREF="Tcl.htm#M8" NAME="L8">\<B>b</B></A>
 | |
| <DD><A HREF="Tcl.htm#M9" NAME="L9">\<B>f</B></A>
 | |
| <DD><A HREF="Tcl.htm#M10" NAME="L10">\<B>n</B></A>
 | |
| <DD><A HREF="Tcl.htm#M11" NAME="L11">\<B>r</B></A>
 | |
| <DD><A HREF="Tcl.htm#M12" NAME="L12">\<B>t</B></A>
 | |
| <DD><A HREF="Tcl.htm#M13" NAME="L13">\<B>v</B></A>
 | |
| <DD><A HREF="Tcl.htm#M14" NAME="L14">\<B><newline></B><I>whiteSpace</I></A>
 | |
| <DD><A HREF="Tcl.htm#M15" NAME="L15">\\</A>
 | |
| <DD><A HREF="Tcl.htm#M16" NAME="L16">\<I>ooo</I></A>
 | |
| <DD><A HREF="Tcl.htm#M17" NAME="L17">\<B>x</B><I>hh</I></A>
 | |
| <DD><A HREF="Tcl.htm#M18" NAME="L18">\<B>u</B><I>hhhh</I></A>
 | |
| </DL>
 | |
| </DL>
 | |
| </DL><HR>
 | |
| <H3><A NAME="M2">NAME</A></H3>
 | |
| Tcl - Summary of Tcl language syntax.
 | |
| <H3><A NAME="M3">DESCRIPTION</A></H3>
 | |
| The following rules define the syntax and semantics of the Tcl language:
 | |
| <P>
 | |
| <DL>
 | |
| <P><DT>[1]<DD>
 | |
| A Tcl script is a string containing one or more commands.
 | |
| Semi-colons and newlines are command separators unless quoted as
 | |
| described below.
 | |
| Close brackets are command terminators during command substitution
 | |
| (see below) unless quoted.
 | |
| <P><DT>[2]<DD>
 | |
| A command is evaluated in two steps.
 | |
| First, the Tcl interpreter breaks the command into <I>words</I>
 | |
| and performs substitutions as described below.
 | |
| These substitutions are performed in the same way for all
 | |
| commands.
 | |
| The first word is used to locate a command procedure to
 | |
| carry out the command, then all of the words of the command are
 | |
| passed to the command procedure.
 | |
| The command procedure is free to interpret each of its words
 | |
| in any way it likes, such as an integer, variable name, list,
 | |
| or Tcl script.
 | |
| Different commands interpret their words differently.
 | |
| <P><DT>[3]<DD>
 | |
| Words of a command are separated by white space (except for
 | |
| newlines, which are command separators).
 | |
| <P><DT>[4]<DD>
 | |
| If the first character of a word is double-quote (``"'') then
 | |
| the word is terminated by the next double-quote character.
 | |
| If semi-colons, close brackets, or white space characters
 | |
| (including newlines) appear between the quotes then they are treated
 | |
| as ordinary characters and included in the word.
 | |
| Command substitution, variable substitution, and backslash substitution
 | |
| are performed on the characters between the quotes as described below.
 | |
| The double-quotes are not retained as part of the word.
 | |
| <P><DT>[5]<DD>
 | |
| If the first character of a word is an open brace (``{'') then
 | |
| the word is terminated by the matching close brace (``}'').
 | |
| Braces nest within the word: for each additional open
 | |
| brace there must be an additional close brace (however,
 | |
| if an open brace or close brace within the word is
 | |
| quoted with a backslash then it is not counted in locating the
 | |
| matching close brace).
 | |
| No substitutions are performed on the characters between the
 | |
| braces except for backslash-newline substitutions described
 | |
| below, nor do semi-colons, newlines, close brackets,
 | |
| or white space receive any special interpretation.
 | |
| The word will consist of exactly the characters between the
 | |
| outer braces, not including the braces themselves.
 | |
| <P><DT>[6]<DD>
 | |
| If a word contains an open bracket (``['') then Tcl performs
 | |
| <I>command substitution</I>.
 | |
| To do this it invokes the Tcl interpreter recursively to process
 | |
| the characters following the open bracket as a Tcl script.
 | |
| The script may contain any number of commands and must be terminated
 | |
| by a close bracket (``]'').
 | |
| The result of the script (i.e. the result of its last command) is
 | |
| substituted into the word in place of the brackets and all of the
 | |
| characters between them.
 | |
| There may be any number of command substitutions in a single word.
 | |
| Command substitution is not performed on words enclosed in braces.
 | |
| <P><DT>[7]<DD>
 | |
| If a word contains a dollar-sign (``$'') then Tcl performs <I>variable
 | |
| substitution</I>:  the dollar-sign and the following characters are
 | |
| replaced in the word by the value of a variable.
 | |
| Variable substitution may take any of the following forms:
 | |
| <P>
 | |
| <DL>
 | |
| <P><DT><A NAME="M4"><B>$</B><I>name</I></A><DD>
 | |
| <I>Name</I> is the name of a scalar variable;  the name is terminated
 | |
| by any character that isn't a letter, digit, or underscore.
 | |
| <P><DT><A NAME="M5"><B>$</B><I>name</I><B>(</B><I>index</I><B>)</B></A><DD>
 | |
| <I>Name</I> gives the name of an array variable and <I>index</I> gives
 | |
| the name of an element within that array.
 | |
| <I>Name</I> must contain only letters, digits, and underscores.
 | |
| Command substitutions, variable substitutions, and backslash
 | |
| substitutions are performed on the characters of <I>index</I>.
 | |
| <P><DT><A NAME="M6"><B>${</B><I>name</I><B>}</B></A><DD>
 | |
| <I>Name</I> is the name of a scalar variable.  It may contain any
 | |
| characters whatsoever except for close braces.
 | |
| </DL><P>There may be any number of variable substitutions in a single word.
 | |
| Variable substitution is not performed on words enclosed in braces.<DL>
 | |
| <P></DL>
 | |
| <P><DT>[8]<DD>
 | |
| If a backslash (``\'') appears within a word then
 | |
| <I>backslash substitution</I> occurs.
 | |
| In all cases but those described below the backslash is dropped and
 | |
| the following character is treated as an ordinary
 | |
| character and included in the word.
 | |
| This allows characters such as double quotes, close brackets,
 | |
| and dollar signs to be included in words without triggering
 | |
| special processing.
 | |
| The following table lists the backslash sequences that are
 | |
| handled specially, along with the value that replaces each sequence.
 | |
| <P>
 | |
| <DL>
 | |
| <P><DT><A NAME="M7">\<B>a</B></A><DD>
 | |
| Audible alert (bell) (0x7).
 | |
| <P><DT><A NAME="M8">\<B>b</B></A><DD>
 | |
| Backspace (0x8).
 | |
| <P><DT><A NAME="M9">\<B>f</B></A><DD>
 | |
| Form feed (0xc).
 | |
| <P><DT><A NAME="M10">\<B>n</B></A><DD>
 | |
| Newline (0xa).
 | |
| <P><DT><A NAME="M11">\<B>r</B></A><DD>
 | |
| Carriage-return (0xd).
 | |
| <P><DT><A NAME="M12">\<B>t</B></A><DD>
 | |
| Tab (0x9).
 | |
| <P><DT><A NAME="M13">\<B>v</B></A><DD>
 | |
| Vertical tab (0xb).
 | |
| <P><DT><A NAME="M14">\<B><newline></B><I>whiteSpace</I></A><DD>
 | |
| A single space character replaces the backslash, newline, and all spaces
 | |
| and tabs after the newline.  This backslash sequence is unique in that it
 | |
| is replaced in a separate pre-pass before the command is actually parsed.
 | |
| This means that it will be replaced even when it occurs between braces,
 | |
| and the resulting space will be treated as a word separator if it isn't
 | |
| in braces or quotes.
 | |
| <P><DT><A NAME="M15">\\</A><DD>
 | |
| Backslash (``\'').
 | |
| <P><DT><A NAME="M16">\<I>ooo</I></A><DD>
 | |
| The digits <I>ooo</I> (one, two, or three of them) give an eight-bit octal 
 | |
| value for the Unicode character that will be inserted.  The upper bits of the
 | |
| Unicode character will be 0.
 | |
| <P><DT><A NAME="M17">\<B>x</B><I>hh</I></A><DD>
 | |
| The hexadecimal digits <I>hh</I> give an eight-bit hexadecimal value for the
 | |
| Unicode character that will be inserted.  Any number of hexadecimal digits
 | |
| may be present; however, all but the last two are ignored (the result is
 | |
| always a one-byte quantity).  The upper bits of the Unicode character will
 | |
| be 0.
 | |
| <P><DT><A NAME="M18">\<B>u</B><I>hhhh</I></A><DD>
 | |
| The hexadecimal digits <I>hhhh</I> (one, two, three, or four of them) give a
 | |
| sixteen-bit hexadecimal value for the Unicode character that will be
 | |
| inserted.
 | |
| </DL><P>Backslash substitution is not performed on words enclosed in braces,
 | |
| except for backslash-newline as described above.<DL>
 | |
| <P></DL>
 | |
| <P><DT>[9]<DD>
 | |
| If a hash character (``#'') appears at a point where Tcl is
 | |
| expecting the first character of the first word of a command,
 | |
| then the hash character and the characters that follow it, up
 | |
| through the next newline, are treated as a comment and ignored.
 | |
| The comment character only has significance when it appears
 | |
| at the beginning of a command.
 | |
| <P><DT>[10]<DD>
 | |
| Each character is processed exactly once by the Tcl interpreter
 | |
| as part of creating the words of a command.
 | |
| For example, if variable substitution occurs then no further
 | |
| substitutions are performed on the value of the variable;  the
 | |
| value is inserted into the word verbatim.
 | |
| If command substitution occurs then the nested command is
 | |
| processed entirely by the recursive call to the Tcl interpreter;
 | |
| no substitutions are performed before making the recursive
 | |
| call and no additional substitutions are performed on the result
 | |
| of the nested script.
 | |
| <P><DT>[11]<DD>
 | |
| Substitutions do not affect the word boundaries of a command.
 | |
| For example, during variable substitution the entire value of
 | |
| the variable becomes part of a single word, even if the variable's
 | |
| value contains spaces.
 | |
| <P></DL>
 | |
| <HR><PRE>
 | |
| <A HREF="../copyright.htm">Copyright</A> © 1993 The Regents of the University of California.
 | |
| <A HREF="../copyright.htm">Copyright</A> © 1994-1996 Sun Microsystems, Inc.
 | |
| <A HREF="../copyright.htm">Copyright</A> © 1995-1997 Roger E. Critchlow Jr.</PRE>
 | |
| </BODY></HTML>
 | 
