Tcl.n
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:8k
- '"
- '" Copyright (c) 1993 The Regents of the University of California.
- '" Copyright (c) 1994-1996 Sun Microsystems, Inc.
- '"
- '" See the file "license.terms" for information on usage and redistribution
- '" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
- '"
- '" RCS: @(#) $Id: Tcl.n,v 1.9.2.1 2005/12/19 10:09:50 dkf Exp $
- '"
- .so man.macros
- .TH Tcl n "8.1" Tcl "Tcl Built-In Commands"
- .BS
- .SH NAME
- Tcl - Tool Command Language
- .SH SYNOPSIS
- Summary of Tcl language syntax.
- .BE
- .SH DESCRIPTION
- .PP
- The following rules define the syntax and semantics of the Tcl language:
- .IP "[1] fBCommands.fR"
- 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.
- .IP "[2] fBEvaluation.fR"
- A command is evaluated in two steps.
- First, the Tcl interpreter breaks the command into fIwordsfR
- 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.
- .IP "[3] fBWords.fR"
- Words of a command are separated by white space (except for
- newlines, which are command separators).
- .IP "[4] fBDouble quotes.fR"
- 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.
- .IP "[5] fBBraces.fR"
- 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.
- .IP "[6] fBCommand substitution.fR"
- If a word contains an open bracket (``['') then Tcl performs
- fIcommand substitutionfR.
- 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.
- .IP "[7] fBVariable substitution.fR"
- If a word contains a dollar-sign (``$'') followed by one of the forms
- described below, then Tcl performs fIvariable
- substitutionfR: 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:
- .RS
- .TP 15
- fB$fInamefR
- fINamefR is the name of a scalar variable; the name is a sequence
- of one or more characters that are a letter, digit, underscore,
- or namespace separators (two or more colons).
- .TP 15
- fB$fInamefB(fIindexfB)fR
- fINamefR gives the name of an array variable and fIindexfR gives
- the name of an element within that array.
- fINamefR must contain only letters, digits, underscores, and
- namespace separators, and may be an empty string.
- Command substitutions, variable substitutions, and backslash
- substitutions are performed on the characters of fIindexfR.
- .TP 15
- fB${fInamefB}fR
- fINamefR is the name of a scalar variable. It may contain any
- characters whatsoever except for close braces.
- .LP
- There may be any number of variable substitutions in a single word.
- Variable substitution is not performed on words enclosed in braces.
- .RE
- .IP "[8] fBBackslash substitution.fR"
- If a backslash (``e'') appears within a word then
- fIbackslash substitutionfR 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.
- .RS
- .TP 7
- efBafR
- Audible alert (bell) (0x7).
- .TP 7
- efBbfR
- Backspace (0x8).
- .TP 7
- efBffR
- Form feed (0xc).
- .TP 7
- efBnfR
- Newline (0xa).
- .TP 7
- efBrfR
- Carriage-return (0xd).
- .TP 7
- efBtfR
- Tab (0x9).
- .TP 7
- efBvfR
- Vertical tab (0xb).
- .TP 7
- efB<newline>fIwhiteSpacefR
- .
- 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.
- .TP 7
- ee
- Backslash (``e'').
- .VS 8.1 br
- .TP 7
- efIooofR
- .
- The digits fIooofR (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.
- .TP 7
- efBxfIhhfR
- .
- The hexadecimal digits fIhhfR 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.
- .TP 7
- efBufIhhhhfR
- .
- The hexadecimal digits fIhhhhfR (one, two, three, or four of them) give a
- sixteen-bit hexadecimal value for the Unicode character that will be
- inserted.
- .VE
- .LP
- Backslash substitution is not performed on words enclosed in braces,
- except for backslash-newline as described above.
- .RE
- .IP "[9] fBComments.fR"
- 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.
- .IP "[10] fBOrder of substitution.fR"
- 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.
- .RS
- .LP
- Substitutions take place from left to right, and each substitution is
- evaluated completely before attempting to evaluate the next. Thus, a
- sequence like
- .CS
- set y [set x 0][incr x][incr x]
- .CE
- will always set the variable fIyfR to the value, fI012fR.
- .RE
- .IP "[11] fBSubstitution and word boundaries.fR"
- 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.