Initial commit of OpenSPARC T2 architecture model.
[OpenSPARC-T2-SAM] / sam-t2 / devtools / amd64 / man / mann / Tcl.n
CommitLineData
920dae64
AT
1'\"
2'\" Copyright (c) 1993 The Regents of the University of California.
3'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
4'\"
5'\" See the file "license.terms" for information on usage and redistribution
6'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
7'\"
8'\" RCS: @(#) $Id: Tcl.n,v 1.9 2003/02/01 19:48:23 kennykb Exp $
9'\"
10'\" The definitions below are for supplemental macros used in Tcl/Tk
11'\" manual entries.
12'\"
13'\" .AP type name in/out ?indent?
14'\" Start paragraph describing an argument to a library procedure.
15'\" type is type of argument (int, etc.), in/out is either "in", "out",
16'\" or "in/out" to describe whether procedure reads or modifies arg,
17'\" and indent is equivalent to second arg of .IP (shouldn't ever be
18'\" needed; use .AS below instead)
19'\"
20'\" .AS ?type? ?name?
21'\" Give maximum sizes of arguments for setting tab stops. Type and
22'\" name are examples of largest possible arguments that will be passed
23'\" to .AP later. If args are omitted, default tab stops are used.
24'\"
25'\" .BS
26'\" Start box enclosure. From here until next .BE, everything will be
27'\" enclosed in one large box.
28'\"
29'\" .BE
30'\" End of box enclosure.
31'\"
32'\" .CS
33'\" Begin code excerpt.
34'\"
35'\" .CE
36'\" End code excerpt.
37'\"
38'\" .VS ?version? ?br?
39'\" Begin vertical sidebar, for use in marking newly-changed parts
40'\" of man pages. The first argument is ignored and used for recording
41'\" the version when the .VS was added, so that the sidebars can be
42'\" found and removed when they reach a certain age. If another argument
43'\" is present, then a line break is forced before starting the sidebar.
44'\"
45'\" .VE
46'\" End of vertical sidebar.
47'\"
48'\" .DS
49'\" Begin an indented unfilled display.
50'\"
51'\" .DE
52'\" End of indented unfilled display.
53'\"
54'\" .SO
55'\" Start of list of standard options for a Tk widget. The
56'\" options follow on successive lines, in four columns separated
57'\" by tabs.
58'\"
59'\" .SE
60'\" End of list of standard options for a Tk widget.
61'\"
62'\" .OP cmdName dbName dbClass
63'\" Start of description of a specific option. cmdName gives the
64'\" option's name as specified in the class command, dbName gives
65'\" the option's name in the option database, and dbClass gives
66'\" the option's class in the option database.
67'\"
68'\" .UL arg1 arg2
69'\" Print arg1 underlined, then print arg2 normally.
70'\"
71'\" RCS: @(#) $Id: man.macros,v 1.4 2000/08/25 06:18:32 ericm Exp $
72'\"
73'\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
74.if t .wh -1.3i ^B
75.nr ^l \n(.l
76.ad b
77'\" # Start an argument description
78.de AP
79.ie !"\\$4"" .TP \\$4
80.el \{\
81. ie !"\\$2"" .TP \\n()Cu
82. el .TP 15
83.\}
84.ta \\n()Au \\n()Bu
85.ie !"\\$3"" \{\
86\&\\$1 \\fI\\$2\\fP (\\$3)
87.\".b
88.\}
89.el \{\
90.br
91.ie !"\\$2"" \{\
92\&\\$1 \\fI\\$2\\fP
93.\}
94.el \{\
95\&\\fI\\$1\\fP
96.\}
97.\}
98..
99'\" # define tabbing values for .AP
100.de AS
101.nr )A 10n
102.if !"\\$1"" .nr )A \\w'\\$1'u+3n
103.nr )B \\n()Au+15n
104.\"
105.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
106.nr )C \\n()Bu+\\w'(in/out)'u+2n
107..
108.AS Tcl_Interp Tcl_CreateInterp in/out
109'\" # BS - start boxed text
110'\" # ^y = starting y location
111'\" # ^b = 1
112.de BS
113.br
114.mk ^y
115.nr ^b 1u
116.if n .nf
117.if n .ti 0
118.if n \l'\\n(.lu\(ul'
119.if n .fi
120..
121'\" # BE - end boxed text (draw box now)
122.de BE
123.nf
124.ti 0
125.mk ^t
126.ie n \l'\\n(^lu\(ul'
127.el \{\
128.\" Draw four-sided box normally, but don't draw top of
129.\" box if the box started on an earlier page.
130.ie !\\n(^b-1 \{\
131\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
132.\}
133.el \}\
134\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
135.\}
136.\}
137.fi
138.br
139.nr ^b 0
140..
141'\" # VS - start vertical sidebar
142'\" # ^Y = starting y location
143'\" # ^v = 1 (for troff; for nroff this doesn't matter)
144.de VS
145.if !"\\$2"" .br
146.mk ^Y
147.ie n 'mc \s12\(br\s0
148.el .nr ^v 1u
149..
150'\" # VE - end of vertical sidebar
151.de VE
152.ie n 'mc
153.el \{\
154.ev 2
155.nf
156.ti 0
157.mk ^t
158\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
159.sp -1
160.fi
161.ev
162.\}
163.nr ^v 0
164..
165'\" # Special macro to handle page bottom: finish off current
166'\" # box/sidebar if in box/sidebar mode, then invoked standard
167'\" # page bottom macro.
168.de ^B
169.ev 2
170'ti 0
171'nf
172.mk ^t
173.if \\n(^b \{\
174.\" Draw three-sided box if this is the box's first page,
175.\" draw two sides but no top otherwise.
176.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
177.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
178.\}
179.if \\n(^v \{\
180.nr ^x \\n(^tu+1v-\\n(^Yu
181\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
182.\}
183.bp
184'fi
185.ev
186.if \\n(^b \{\
187.mk ^y
188.nr ^b 2
189.\}
190.if \\n(^v \{\
191.mk ^Y
192.\}
193..
194'\" # DS - begin display
195.de DS
196.RS
197.nf
198.sp
199..
200'\" # DE - end display
201.de DE
202.fi
203.RE
204.sp
205..
206'\" # SO - start of list of standard options
207.de SO
208.SH "STANDARD OPTIONS"
209.LP
210.nf
211.ta 5.5c 11c
212.ft B
213..
214'\" # SE - end of list of standard options
215.de SE
216.fi
217.ft R
218.LP
219See the \\fBoptions\\fR manual entry for details on the standard options.
220..
221'\" # OP - start of full description for a single option
222.de OP
223.LP
224.nf
225.ta 4c
226Command-Line Name: \\fB\\$1\\fR
227Database Name: \\fB\\$2\\fR
228Database Class: \\fB\\$3\\fR
229.fi
230.IP
231..
232'\" # CS - begin code excerpt
233.de CS
234.RS
235.nf
236.ta .25i .5i .75i 1i
237..
238'\" # CE - end code excerpt
239.de CE
240.fi
241.RE
242..
243.de UL
244\\$1\l'|0\(ul'\\$2
245..
246.TH Tcl n "8.1" Tcl "Tcl Built-In Commands"
247.BS
248.SH NAME
249Tcl \- Tool Command Language
250.SH SYNOPSIS
251Summary of Tcl language syntax.
252.BE
253.SH DESCRIPTION
254.PP
255The following rules define the syntax and semantics of the Tcl language:
256.IP "[1] \fBCommands.\fR"
257A Tcl script is a string containing one or more commands.
258Semi-colons and newlines are command separators unless quoted as
259described below.
260Close brackets are command terminators during command substitution
261(see below) unless quoted.
262.IP "[2] \fBEvaluation.\fR"
263A command is evaluated in two steps.
264First, the Tcl interpreter breaks the command into \fIwords\fR
265and performs substitutions as described below.
266These substitutions are performed in the same way for all
267commands.
268The first word is used to locate a command procedure to
269carry out the command, then all of the words of the command are
270passed to the command procedure.
271The command procedure is free to interpret each of its words
272in any way it likes, such as an integer, variable name, list,
273or Tcl script.
274Different commands interpret their words differently.
275.IP "[3] \fBWords.\fR"
276Words of a command are separated by white space (except for
277newlines, which are command separators).
278.IP "[4] \fBDouble quotes.\fR"
279If the first character of a word is double-quote (``"'') then
280the word is terminated by the next double-quote character.
281If semi-colons, close brackets, or white space characters
282(including newlines) appear between the quotes then they are treated
283as ordinary characters and included in the word.
284Command substitution, variable substitution, and backslash substitution
285are performed on the characters between the quotes as described below.
286The double-quotes are not retained as part of the word.
287.IP "[5] \fBBraces.\fR"
288If the first character of a word is an open brace (``{'') then
289the word is terminated by the matching close brace (``}'').
290Braces nest within the word: for each additional open
291brace there must be an additional close brace (however,
292if an open brace or close brace within the word is
293quoted with a backslash then it is not counted in locating the
294matching close brace).
295No substitutions are performed on the characters between the
296braces except for backslash-newline substitutions described
297below, nor do semi-colons, newlines, close brackets,
298or white space receive any special interpretation.
299The word will consist of exactly the characters between the
300outer braces, not including the braces themselves.
301.IP "[6] \fBCommand substitution.\fR"
302If a word contains an open bracket (``['') then Tcl performs
303\fIcommand substitution\fR.
304To do this it invokes the Tcl interpreter recursively to process
305the characters following the open bracket as a Tcl script.
306The script may contain any number of commands and must be terminated
307by a close bracket (``]'').
308The result of the script (i.e. the result of its last command) is
309substituted into the word in place of the brackets and all of the
310characters between them.
311There may be any number of command substitutions in a single word.
312Command substitution is not performed on words enclosed in braces.
313.IP "[7] \fBVariable substitution.\fR"
314If a word contains a dollar-sign (``$'') then Tcl performs \fIvariable
315substitution\fR: the dollar-sign and the following characters are
316replaced in the word by the value of a variable.
317Variable substitution may take any of the following forms:
318.RS
319.TP 15
320\fB$\fIname\fR
321\fIName\fR is the name of a scalar variable; the name is a sequence
322of one or more characters that are a letter, digit, underscore,
323or namespace separators (two or more colons).
324.TP 15
325\fB$\fIname\fB(\fIindex\fB)\fR
326\fIName\fR gives the name of an array variable and \fIindex\fR gives
327the name of an element within that array.
328\fIName\fR must contain only letters, digits, underscores, and
329namespace separators, and may be an empty string.
330Command substitutions, variable substitutions, and backslash
331substitutions are performed on the characters of \fIindex\fR.
332.TP 15
333\fB${\fIname\fB}\fR
334\fIName\fR is the name of a scalar variable. It may contain any
335characters whatsoever except for close braces.
336.LP
337There may be any number of variable substitutions in a single word.
338Variable substitution is not performed on words enclosed in braces.
339.RE
340.IP "[8] \fBBackslash substitution.\fR"
341If a backslash (``\e'') appears within a word then
342\fIbackslash substitution\fR occurs.
343In all cases but those described below the backslash is dropped and
344the following character is treated as an ordinary
345character and included in the word.
346This allows characters such as double quotes, close brackets,
347and dollar signs to be included in words without triggering
348special processing.
349The following table lists the backslash sequences that are
350handled specially, along with the value that replaces each sequence.
351.RS
352.TP 7
353\e\fBa\fR
354Audible alert (bell) (0x7).
355.TP 7
356\e\fBb\fR
357Backspace (0x8).
358.TP 7
359\e\fBf\fR
360Form feed (0xc).
361.TP 7
362\e\fBn\fR
363Newline (0xa).
364.TP 7
365\e\fBr\fR
366Carriage-return (0xd).
367.TP 7
368\e\fBt\fR
369Tab (0x9).
370.TP 7
371\e\fBv\fR
372Vertical tab (0xb).
373.TP 7
374\e\fB<newline>\fIwhiteSpace\fR
375.
376A single space character replaces the backslash, newline, and all spaces
377and tabs after the newline. This backslash sequence is unique in that it
378is replaced in a separate pre-pass before the command is actually parsed.
379This means that it will be replaced even when it occurs between braces,
380and the resulting space will be treated as a word separator if it isn't
381in braces or quotes.
382.TP 7
383\e\e
384Backslash (``\e'').
385.VS 8.1 br
386.TP 7
387\e\fIooo\fR
388.
389The digits \fIooo\fR (one, two, or three of them) give an eight-bit octal
390value for the Unicode character that will be inserted. The upper bits of the
391Unicode character will be 0.
392.TP 7
393\e\fBx\fIhh\fR
394.
395The hexadecimal digits \fIhh\fR give an eight-bit hexadecimal value for the
396Unicode character that will be inserted. Any number of hexadecimal digits
397may be present; however, all but the last two are ignored (the result is
398always a one-byte quantity). The upper bits of the Unicode character will
399be 0.
400.TP 7
401\e\fBu\fIhhhh\fR
402.
403The hexadecimal digits \fIhhhh\fR (one, two, three, or four of them) give a
404sixteen-bit hexadecimal value for the Unicode character that will be
405inserted.
406.VE
407.LP
408Backslash substitution is not performed on words enclosed in braces,
409except for backslash-newline as described above.
410.RE
411.IP "[9] \fBComments.\fR"
412If a hash character (``#'') appears at a point where Tcl is
413expecting the first character of the first word of a command,
414then the hash character and the characters that follow it, up
415through the next newline, are treated as a comment and ignored.
416The comment character only has significance when it appears
417at the beginning of a command.
418.IP "[10] \fBOrder of substitution.\fR"
419Each character is processed exactly once by the Tcl interpreter
420as part of creating the words of a command.
421For example, if variable substitution occurs then no further
422substitutions are performed on the value of the variable; the
423value is inserted into the word verbatim.
424If command substitution occurs then the nested command is
425processed entirely by the recursive call to the Tcl interpreter;
426no substitutions are performed before making the recursive
427call and no additional substitutions are performed on the result
428of the nested script.
429.RS
430.LP
431Substitutions take place from left to right, and each substitution is
432evaluated completely before attempting to evaluate the next. Thus, a
433sequence like
434.CS
435set y [set x 0][incr x][incr x]
436.CE
437will always set the variable \fIy\fR to the value, \fI012\fR.
438.RE
439.IP "[11] \fBSubstitution and word boundaries.\fR"
440Substitutions do not affect the word boundaries of a command.
441For example, during variable substitution the entire value of
442the variable becomes part of a single word, even if the variable's
443value contains spaces.