Tcl Source Code

Hex Artifact Content
Login

Artifact 1b3578d56ffd58ecb6909355374acd93b857165c:

Attachment "patch455151.txt" to ticket [455151ffff] added by msofer 2001-09-13 01:21:47.
0000: 49 6e 64 65 78 3a 20 43 68 61 6e 67 65 4c 6f 67  Index: ChangeLog
0010: 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  .===============
0020: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0030: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0040: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0050: 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c 65 3a 20 2f  ====.RCS file: /
0060: 63 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f  cvsroot/tcl/tcl/
0070: 43 68 61 6e 67 65 4c 6f 67 2c 76 0a 72 65 74 72  ChangeLog,v.retr
0080: 69 65 76 69 6e 67 20 72 65 76 69 73 69 6f 6e 20  ieving revision 
0090: 31 2e 36 30 33 0a 64 69 66 66 20 2d 75 20 2d 72  1.603.diff -u -r
00a0: 31 2e 36 30 33 20 43 68 61 6e 67 65 4c 6f 67 0a  1.603 ChangeLog.
00b0: 2d 2d 2d 20 43 68 61 6e 67 65 4c 6f 67 09 32 30  --- ChangeLog.20
00c0: 30 31 2f 30 39 2f 31 32 20 31 36 3a 33 32 3a 32  01/09/12 16:32:2
00d0: 31 09 31 2e 36 30 33 0a 2b 2b 2b 20 43 68 61 6e  1.1.603.+++ Chan
00e0: 67 65 4c 6f 67 09 32 30 30 31 2f 30 39 2f 31 32  geLog.2001/09/12
00f0: 20 31 38 3a 31 34 3a 30 35 0a 40 40 20 2d 31 2c   18:14:05.@@ -1,
0100: 33 20 2b 31 2c 31 37 20 40 40 0a 2b 32 30 30 31  3 +1,17 @@.+2001
0110: 2d 30 38 2d 32 38 20 20 4d 69 67 75 65 6c 20 53  -08-28  Miguel S
0120: 6f 66 65 72 20 20 3c 6d 73 6f 66 65 72 40 75 73  ofer  <msofer@us
0130: 65 72 73 2e 73 6f 75 72 63 65 66 6f 72 67 65 2e  ers.sourceforge.
0140: 6e 65 74 3e 0a 2b 20 0a 2b 20 20 09 2a 20 64 6f  net>.+ .+  .* do
0150: 63 2f 50 61 72 73 65 43 6d 64 2e 33 3a 20 0a 2b  c/ParseCmd.3: .+
0160: 20 09 2a 20 67 65 6e 65 72 69 63 2f 74 63 6c 2e   .* generic/tcl.
0170: 64 65 63 6c 73 3a 0a 2b 20 09 2a 20 67 65 6e 65  decls:.+ .* gene
0180: 72 69 63 2f 74 63 6c 43 6d 64 4d 5a 2e 63 20 28  ric/tclCmdMZ.c (
0190: 54 63 6c 5f 53 75 62 73 74 4f 62 6a 43 6d 64 29  Tcl_SubstObjCmd)
01a0: 3a 0a 2b 20 09 2a 20 67 65 6e 65 72 69 63 2f 74  :.+ .* generic/t
01b0: 63 6c 44 65 63 6c 73 2e 68 3a 0a 2b 20 09 2a 20  clDecls.h:.+ .* 
01c0: 67 65 6e 65 72 69 63 2f 74 63 6c 50 61 72 73 65  generic/tclParse
01d0: 2e 63 3a 0a 2b 20 09 2a 20 67 65 6e 65 72 69 63  .c:.+ .* generic
01e0: 2f 74 63 6c 53 74 75 62 49 6e 69 74 2e 63 3a 0a  /tclStubInit.c:.
01f0: 2b 20 09 2a 20 74 65 73 74 73 2f 70 61 72 73 65  + .* tests/parse
0200: 2e 74 65 73 74 3a 20 44 65 70 72 65 63 61 74 65  .test: Deprecate
0210: 20 74 68 65 20 75 73 65 20 6f 66 20 54 63 6c 5f   the use of Tcl_
0220: 45 76 61 6c 54 6f 6b 65 6e 73 2c 20 72 65 70 6c  EvalTokens, repl
0230: 61 63 65 64 0a 2b 20 09 62 79 20 74 68 65 20 6e  aced.+ .by the n
0240: 65 77 20 54 63 6c 5f 45 76 61 6c 54 6f 6b 65 6e  ew Tcl_EvalToken
0250: 73 53 74 61 6e 64 61 72 64 2e 20 54 68 65 20 6e  sStandard. The n
0260: 65 77 20 66 75 6e 63 74 69 6f 6e 20 70 65 72 66  ew function perf
0270: 6f 72 6d 73 20 74 68 65 0a 2b 20 09 73 61 6d 65  orms the.+ .same
0280: 20 64 75 74 69 65 73 20 62 75 74 20 61 64 68 65   duties but adhe
0290: 72 65 73 20 74 6f 20 74 68 65 20 73 74 61 6e 64  res to the stand
02a0: 61 72 64 20 72 65 74 75 72 6e 20 63 6f 6e 76 65  ard return conve
02b0: 6e 74 69 6f 6e 20 66 6f 72 20 54 63 6c 0a 2b 20  ntion for Tcl.+ 
02c0: 09 65 76 61 6c 75 61 74 69 6f 6e 73 3b 20 74 68  .evaluations; th
02d0: 65 20 64 65 70 72 65 63 61 74 65 64 20 66 75 6e  e deprecated fun
02e0: 63 74 69 6f 6e 20 63 6f 75 6c 64 20 6f 6e 6c 79  ction could only
02f0: 20 72 65 74 75 72 6e 20 54 43 4c 5f 4f 4b 20 6f   return TCL_OK o
0300: 72 0a 2b 20 09 54 43 4c 5f 45 52 52 4f 52 2c 20  r.+ .TCL_ERROR, 
0310: 77 68 69 63 68 20 63 61 75 73 65 64 20 5b 42 75  which caused [Bu
0320: 67 3a 20 32 31 39 33 38 34 5d 20 61 6e 64 20 5b  g: 219384] and [
0330: 42 75 67 3a 20 34 35 35 31 35 31 5d 2e 0a 2b 20  Bug: 455151]..+ 
0340: 0a 20 32 30 30 31 2d 30 39 2d 31 32 20 20 4d 69  . 2001-09-12  Mi
0350: 67 75 65 6c 20 53 6f 66 65 72 20 20 3c 6d 73 6f  guel Sofer  <mso
0360: 66 65 72 40 75 73 65 72 73 2e 73 6f 75 72 63 65  [email protected]
0370: 66 6f 72 67 65 2e 6e 65 74 3e 0a 20 0a 20 09 2a  forge.net>. . .*
0380: 20 67 65 6e 65 72 69 63 2f 74 63 6c 2e 64 65 63   generic/tcl.dec
0390: 6c 73 3a 20 72 65 73 65 72 76 65 64 20 73 74 75  ls: reserved stu
03a0: 62 20 23 34 38 31 20 66 6f 72 20 74 68 65 20 69  b #481 for the i
03b0: 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66  mplementation of
03c0: 0a 49 6e 64 65 78 3a 20 64 6f 63 2f 50 61 72 73  .Index: doc/Pars
03d0: 65 43 6d 64 2e 33 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d  eCmd.3.=========
03e0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
03f0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0400: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0410: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20 66  ==========.RCS f
0420: 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74 63  ile: /cvsroot/tc
0430: 6c 2f 74 63 6c 2f 64 6f 63 2f 50 61 72 73 65 43  l/tcl/doc/ParseC
0440: 6d 64 2e 33 2c 76 0a 72 65 74 72 69 65 76 69 6e  md.3,v.retrievin
0450: 67 20 72 65 76 69 73 69 6f 6e 20 31 2e 34 0a 64  g revision 1.4.d
0460: 69 66 66 20 2d 75 20 2d 72 31 2e 34 20 50 61 72  iff -u -r1.4 Par
0470: 73 65 43 6d 64 2e 33 0a 2d 2d 2d 20 64 6f 63 2f  seCmd.3.--- doc/
0480: 50 61 72 73 65 43 6d 64 2e 33 09 32 30 30 30 2f  ParseCmd.3.2000/
0490: 30 34 2f 32 34 20 32 33 3a 35 33 3a 30 33 09 31  04/24 23:53:03.1
04a0: 2e 34 0a 2b 2b 2b 20 64 6f 63 2f 50 61 72 73 65  .4.+++ doc/Parse
04b0: 43 6d 64 2e 33 09 32 30 30 31 2f 30 39 2f 31 32  Cmd.3.2001/09/12
04c0: 20 31 38 3a 31 34 3a 30 36 0a 40 40 20 2d 31 30   18:14:06.@@ -10
04d0: 2c 37 20 2b 31 30 2c 39 20 40 40 0a 20 2e 54 48  ,7 +10,9 @@. .TH
04e0: 20 54 63 6c 5f 50 61 72 73 65 43 6f 6d 6d 61 6e   Tcl_ParseComman
04f0: 64 20 33 20 38 2e 33 20 54 63 6c 20 22 54 63 6c  d 3 8.3 Tcl "Tcl
0500: 20 4c 69 62 72 61 72 79 20 50 72 6f 63 65 64 75   Library Procedu
0510: 72 65 73 22 0a 20 2e 42 53 0a 20 2e 53 48 20 4e  res". .BS. .SH N
0520: 41 4d 45 0a 2d 54 63 6c 5f 50 61 72 73 65 43 6f  AME.-Tcl_ParseCo
0530: 6d 6d 61 6e 64 2c 20 54 63 6c 5f 50 61 72 73 65  mmand, Tcl_Parse
0540: 45 78 70 72 2c 20 54 63 6c 5f 50 61 72 73 65 42  Expr, Tcl_ParseB
0550: 72 61 63 65 73 2c 20 54 63 6c 5f 50 61 72 73 65  races, Tcl_Parse
0560: 51 75 6f 74 65 64 53 74 72 69 6e 67 2c 20 54 63  QuotedString, Tc
0570: 6c 5f 50 61 72 73 65 56 61 72 4e 61 6d 65 2c 20  l_ParseVarName, 
0580: 54 63 6c 5f 50 61 72 73 65 56 61 72 2c 20 54 63  Tcl_ParseVar, Tc
0590: 6c 5f 46 72 65 65 50 61 72 73 65 2c 20 54 63 6c  l_FreeParse, Tcl
05a0: 5f 45 76 61 6c 54 6f 6b 65 6e 73 20 5c 2d 20 70  _EvalTokens \- p
05b0: 61 72 73 65 20 54 63 6c 20 73 63 72 69 70 74 73  arse Tcl scripts
05c0: 20 61 6e 64 20 65 78 70 72 65 73 73 69 6f 6e 73   and expressions
05d0: 0a 2b 54 63 6c 5f 50 61 72 73 65 43 6f 6d 6d 61  .+Tcl_ParseComma
05e0: 6e 64 2c 20 54 63 6c 5f 50 61 72 73 65 45 78 70  nd, Tcl_ParseExp
05f0: 72 2c 20 54 63 6c 5f 50 61 72 73 65 42 72 61 63  r, Tcl_ParseBrac
0600: 65 73 2c 0a 2b 54 63 6c 5f 50 61 72 73 65 51 75  es,.+Tcl_ParseQu
0610: 6f 74 65 64 53 74 72 69 6e 67 2c 20 54 63 6c 5f  otedString, Tcl_
0620: 50 61 72 73 65 56 61 72 4e 61 6d 65 2c 20 54 63  ParseVarName, Tc
0630: 6c 5f 50 61 72 73 65 56 61 72 2c 20 54 63 6c 5f  l_ParseVar, Tcl_
0640: 46 72 65 65 50 61 72 73 65 2c 0a 2b 54 63 6c 5f  FreeParse,.+Tcl_
0650: 45 76 61 6c 54 6f 6b 65 6e 73 2c 20 42 54 63 6c  EvalTokens, BTcl
0660: 5f 45 76 61 6c 54 6f 6b 65 6e 73 53 74 61 6e 64  _EvalTokensStand
0670: 61 72 64 20 5c 2d 20 70 61 72 73 65 20 54 63 6c  ard \- parse Tcl
0680: 20 73 63 72 69 70 74 73 20 61 6e 64 20 65 78 70   scripts and exp
0690: 72 65 73 73 69 6f 6e 73 0a 20 2e 53 48 20 53 59  ressions. .SH SY
06a0: 4e 4f 50 53 49 53 0a 20 2e 6e 66 0a 20 5c 66 42  NOPSIS. .nf. \fB
06b0: 23 69 6e 63 6c 75 64 65 20 3c 74 63 6c 2e 68 3e  #include <tcl.h>
06c0: 5c 66 52 0a 40 40 20 2d 33 37 2c 31 33 20 2b 33  \fR.@@ -37,13 +3
06d0: 39 2c 31 37 20 40 40 0a 20 2e 73 70 0a 20 54 63  9,17 @@. .sp. Tc
06e0: 6c 5f 4f 62 6a 20 2a 0a 20 5c 66 42 54 63 6c 5f  l_Obj *. \fBTcl_
06f0: 45 76 61 6c 54 6f 6b 65 6e 73 5c 66 52 28 5c 66  EvalTokens\fR(\f
0700: 49 69 6e 74 65 72 70 2c 20 74 6f 6b 65 6e 50 74  Iinterp, tokenPt
0710: 72 2c 20 6e 75 6d 54 6f 6b 65 6e 73 5c 66 52 29  r, numTokens\fR)
0720: 0a 2b 2e 73 70 0a 2b 54 63 6c 5f 4f 62 6a 20 2a  .+.sp.+Tcl_Obj *
0730: 0a 2b 5c 66 42 54 63 6c 5f 45 76 61 6c 54 6f 6b  .+\fBTcl_EvalTok
0740: 65 6e 73 53 74 61 6e 64 61 72 64 5c 66 52 28 5c  ensStandard\fR(\
0750: 66 49 69 6e 74 65 72 70 2c 20 74 6f 6b 65 6e 50  fIinterp, tokenP
0760: 74 72 2c 20 6e 75 6d 54 6f 6b 65 6e 73 5c 66 52  tr, numTokens\fR
0770: 29 0a 20 2e 53 48 20 41 52 47 55 4d 45 4e 54 53  ). .SH ARGUMENTS
0780: 0a 20 2e 41 53 20 54 63 6c 5f 49 6e 74 65 72 70  . .AS Tcl_Interp
0790: 20 2a 75 73 65 64 50 61 72 73 65 50 74 72 0a 20   *usedParsePtr. 
07a0: 2e 41 50 20 54 63 6c 5f 49 6e 74 65 72 70 20 2a  .AP Tcl_Interp *
07b0: 69 6e 74 65 72 70 20 6f 75 74 0a 2d 46 6f 72 20  interp out.-For 
07c0: 70 72 6f 63 65 64 75 72 65 73 20 6f 74 68 65 72  procedures other
07d0: 20 74 68 61 6e 20 5c 66 42 54 63 6c 5f 46 72 65   than \fBTcl_Fre
07e0: 65 50 61 72 73 65 5c 66 52 20 61 6e 64 20 5c 66  eParse\fR and \f
07f0: 42 54 63 6c 5f 45 76 61 6c 54 6f 6b 65 6e 73 5c  BTcl_EvalTokens\
0800: 66 52 2c 0a 2d 75 73 65 64 20 6f 6e 6c 79 20 66  fR,.-used only f
0810: 6f 72 20 65 72 72 6f 72 20 72 65 70 6f 72 74 69  or error reporti
0820: 6e 67 3b 0a 2b 46 6f 72 20 70 72 6f 63 65 64 75  ng;.+For procedu
0830: 72 65 73 20 6f 74 68 65 72 20 74 68 61 6e 20 5c  res other than \
0840: 66 42 54 63 6c 5f 46 72 65 65 50 61 72 73 65 5c  fBTcl_FreeParse\
0850: 66 52 2c 20 5c 66 42 54 63 6c 5f 45 76 61 6c 54  fR, \fBTcl_EvalT
0860: 6f 6b 65 6e 73 5c 66 52 0a 2b 61 6e 64 20 5c 66  okens\fR.+and \f
0870: 42 54 63 6c 5f 45 76 61 6c 54 6f 6b 65 6e 73 53  BTcl_EvalTokensS
0880: 74 61 6e 64 61 72 64 5c 66 52 2c 20 75 73 65 64  tandard\fR, used
0890: 20 6f 6e 6c 79 20 66 6f 72 20 65 72 72 6f 72 20   only for error 
08a0: 72 65 70 6f 72 74 69 6e 67 3b 0a 20 69 66 20 4e  reporting;. if N
08b0: 55 4c 4c 2c 20 74 68 65 6e 20 6e 6f 20 65 72 72  ULL, then no err
08c0: 6f 72 20 6d 65 73 73 61 67 65 73 20 61 72 65 20  or messages are 
08d0: 6c 65 66 74 20 61 66 74 65 72 20 65 72 72 6f 72  left after error
08e0: 73 2e 0a 2d 46 6f 72 20 5c 66 42 54 63 6c 5f 45  s..-For \fBTcl_E
08f0: 76 61 6c 54 6f 6b 65 6e 73 5c 66 52 2c 20 64 65  valTokens\fR, de
0900: 74 65 72 6d 69 6e 65 73 20 74 68 65 20 63 6f 6e  termines the con
0910: 74 65 78 74 20 66 6f 72 20 65 76 61 6c 75 61 74  text for evaluat
0920: 69 6e 67 20 74 68 65 0a 2b 46 6f 72 20 5c 66 42  ing the.+For \fB
0930: 54 63 6c 5f 45 76 61 6c 54 6f 6b 65 6e 73 5c 66  Tcl_EvalTokens\f
0940: 52 20 61 6e 64 20 5c 66 42 54 63 6c 5f 45 76 61  R and \fBTcl_Eva
0950: 6c 54 6f 6b 65 6e 73 53 74 61 6e 64 61 72 64 5c  lTokensStandard\
0960: 66 52 2c 0a 2b 64 65 74 65 72 6d 69 6e 65 73 20  fR,.+determines 
0970: 74 68 65 20 63 6f 6e 74 65 78 74 20 66 6f 72 20  the context for 
0980: 65 76 61 6c 75 61 74 69 6e 67 20 74 68 65 0a 20  evaluating the. 
0990: 73 63 72 69 70 74 20 61 6e 64 20 61 6c 73 6f 20  script and also 
09a0: 69 73 20 75 73 65 64 20 66 6f 72 20 65 72 72 6f  is used for erro
09b0: 72 20 72 65 70 6f 72 74 69 6e 67 3b 20 6d 75 73  r reporting; mus
09c0: 74 20 6e 6f 74 20 62 65 20 4e 55 4c 4c 2e 0a 20  t not be NULL.. 
09d0: 2e 41 50 20 63 68 61 72 20 2a 73 74 72 69 6e 67  .AP char *string
09e0: 20 69 6e 0a 20 50 6f 69 6e 74 65 72 20 74 6f 20   in. Pointer to 
09f0: 66 69 72 73 74 20 63 68 61 72 61 63 74 65 72 20  first character 
0a00: 69 6e 20 73 74 72 69 6e 67 20 74 6f 20 70 61 72  in string to par
0a10: 73 65 2e 0a 40 40 20 2d 31 37 38 2c 31 38 20 2b  se..@@ -178,18 +
0a20: 31 38 34 2c 32 37 20 40 40 0a 20 73 6f 20 69 66  184,27 @@. so if
0a30: 20 72 65 70 65 61 74 65 64 20 63 61 6c 6c 73 20   repeated calls 
0a40: 61 72 65 20 62 65 69 6e 67 20 6d 61 64 65 20 74  are being made t
0a50: 6f 20 61 6e 79 20 6f 66 20 74 68 65 6d 0a 20 74  o any of them. t
0a60: 68 65 6e 20 5c 66 42 54 63 6c 5f 46 72 65 65 50  hen \fBTcl_FreeP
0a70: 61 72 73 65 5c 66 52 20 6d 75 73 74 20 62 65 20  arse\fR must be 
0a80: 69 6e 76 6f 6b 65 64 20 6f 6e 63 65 20 61 66 74  invoked once aft
0a90: 65 72 20 65 61 63 68 20 63 61 6c 6c 2e 0a 20 2e  er each call.. .
0aa0: 50 50 0a 2d 5c 66 42 54 63 6c 5f 45 76 61 6c 54  PP.-\fBTcl_EvalT
0ab0: 6f 6b 65 6e 73 5c 66 52 20 65 76 61 6c 75 61 74  okens\fR evaluat
0ac0: 65 73 20 61 20 73 65 71 75 65 6e 63 65 20 6f 66  es a sequence of
0ad0: 20 70 61 72 73 65 20 74 6f 6b 65 6e 73 20 66 72   parse tokens fr
0ae0: 6f 6d 20 61 20 54 63 6c 5f 50 61 72 73 65 0a 2d  om a Tcl_Parse.-
0af0: 73 74 72 75 63 74 75 72 65 2e 20 20 54 68 65 20  structure.  The 
0b00: 74 6f 6b 65 6e 73 20 74 79 70 69 63 61 6c 6c 79  tokens typically
0b10: 20 63 6f 6e 73 69 73 74 0a 2b 5c 66 42 54 63 6c   consist.+\fBTcl
0b20: 5f 45 76 61 6c 54 6f 6b 65 6e 73 53 74 61 6e 64  _EvalTokensStand
0b30: 61 72 64 5c 66 52 20 65 76 61 6c 75 61 74 65 73  ard\fR evaluates
0b40: 20 61 20 73 65 71 75 65 6e 63 65 20 6f 66 20 70   a sequence of p
0b50: 61 72 73 65 20 74 6f 6b 65 6e 73 20 66 72 6f 6d  arse tokens from
0b60: 0a 2b 61 20 54 63 6c 5f 50 61 72 73 65 20 73 74  .+a Tcl_Parse st
0b70: 72 75 63 74 75 72 65 2e 20 20 54 68 65 20 74 6f  ructure.  The to
0b80: 6b 65 6e 73 20 74 79 70 69 63 61 6c 6c 79 20 63  kens typically c
0b90: 6f 6e 73 69 73 74 0a 20 6f 66 20 61 6c 6c 20 74  onsist. of all t
0ba0: 68 65 20 74 6f 6b 65 6e 73 20 69 6e 20 61 20 77  he tokens in a w
0bb0: 6f 72 64 20 6f 72 20 61 6c 6c 20 74 68 65 20 74  ord or all the t
0bc0: 6f 6b 65 6e 73 20 74 68 61 74 20 6d 61 6b 65 20  okens that make 
0bd0: 75 70 20 74 68 65 20 69 6e 64 65 78 20 66 6f 72  up the index for
0be0: 0a 2d 61 20 72 65 66 65 72 65 6e 63 65 20 74 6f  .-a reference to
0bf0: 20 61 6e 20 61 72 72 61 79 20 76 61 72 69 61 62   an array variab
0c00: 6c 65 2e 20 20 5c 66 42 54 63 6c 5f 45 76 61 6c  le.  \fBTcl_Eval
0c10: 54 6f 6b 65 6e 73 5c 66 52 20 70 65 72 66 6f 72  Tokens\fR perfor
0c20: 6d 73 20 74 68 65 0a 2d 73 75 62 73 74 69 74 75  ms the.-substitu
0c30: 74 69 6f 6e 73 20 72 65 71 75 65 73 74 65 64 20  tions requested 
0c40: 62 79 20 74 68 65 20 74 6f 6b 65 6e 73 2c 20 63  by the tokens, c
0c50: 6f 6e 63 61 74 65 6e 61 74 65 73 20 74 68 65 0a  oncatenates the.
0c60: 2d 72 65 73 75 6c 74 69 6e 67 20 76 61 6c 75 65  -resulting value
0c70: 73 2c 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74  s, and returns t
0c80: 68 65 20 72 65 73 75 6c 74 20 69 6e 20 61 20 6e  he result in a n
0c90: 65 77 20 54 63 6c 5f 4f 62 6a 2e 20 20 54 68 65  ew Tcl_Obj.  The
0ca0: 0a 2d 72 65 66 65 72 65 6e 63 65 20 63 6f 75 6e  .-reference coun
0cb0: 74 20 6f 66 20 74 68 65 20 6f 62 6a 65 63 74 20  t of the object 
0cc0: 72 65 74 75 72 6e 65 64 20 61 73 20 72 65 73 75  returned as resu
0cd0: 6c 74 20 68 61 73 20 62 65 65 6e 0a 2b 61 20 72  lt has been.+a r
0ce0: 65 66 65 72 65 6e 63 65 20 74 6f 20 61 6e 20 61  eference to an a
0cf0: 72 72 61 79 20 76 61 72 69 61 62 6c 65 2e 20 20  rray variable.  
0d00: 5c 66 42 54 63 6c 5f 45 76 61 6c 54 6f 6b 65 6e  \fBTcl_EvalToken
0d10: 73 53 74 61 6e 64 61 72 64 5c 66 52 20 70 65 72  sStandard\fR per
0d20: 66 6f 72 6d 73 20 74 68 65 0a 2b 73 75 62 73 74  forms the.+subst
0d30: 69 74 75 74 69 6f 6e 73 20 72 65 71 75 65 73 74  itutions request
0d40: 65 64 20 62 79 20 74 68 65 20 74 6f 6b 65 6e 73  ed by the tokens
0d50: 20 61 6e 64 20 63 6f 6e 63 61 74 65 6e 61 74 65   and concatenate
0d60: 73 20 74 68 65 0a 2b 72 65 73 75 6c 74 69 6e 67  s the.+resulting
0d70: 20 76 61 6c 75 65 73 2e 20 0a 2b 54 68 65 20 72   values. .+The r
0d80: 65 74 75 72 6e 20 76 61 6c 75 65 20 66 72 6f 6d  eturn value from
0d90: 20 5c 66 42 54 63 6c 5f 45 76 61 6c 54 6f 6b 65   \fBTcl_EvalToke
0da0: 6e 73 53 74 61 6e 64 61 72 64 5c 66 52 20 69 73  nsStandard\fR is
0db0: 20 61 20 54 63 6c 20 63 6f 6d 70 6c 65 74 69 6f   a Tcl completio
0dc0: 6e 0a 2b 63 6f 64 65 20 77 69 74 68 20 6f 6e 65  n.+code with one
0dd0: 20 6f 66 20 74 68 65 20 76 61 6c 75 65 73 20 5c   of the values \
0de0: 66 42 54 43 4c 5f 4f 4b 5c 66 52 2c 20 5c 66 42  fBTCL_OK\fR, \fB
0df0: 54 43 4c 5f 45 52 52 4f 52 5c 66 52 2c 0a 2b 5c  TCL_ERROR\fR,.+\
0e00: 66 42 54 43 4c 5f 52 45 54 55 52 4e 5c 66 52 2c  fBTCL_RETURN\fR,
0e10: 20 5c 66 42 54 43 4c 5f 42 52 45 41 4b 5c 66 52   \fBTCL_BREAK\fR
0e20: 2c 20 6f 72 20 5c 66 42 54 43 4c 5f 43 4f 4e 54  , or \fBTCL_CONT
0e30: 49 4e 55 45 5c 66 52 2e 0a 2b 49 6e 20 61 64 64  INUE\fR..+In add
0e40: 69 74 69 6f 6e 2c 20 61 20 72 65 73 75 6c 74 20  ition, a result 
0e50: 76 61 6c 75 65 20 6f 72 20 65 72 72 6f 72 20 6d  value or error m
0e60: 65 73 73 61 67 65 20 69 73 20 6c 65 66 74 20 69  essage is left i
0e70: 6e 20 5c 66 49 69 6e 74 65 72 70 5c 66 52 27 73  n \fIinterp\fR's
0e80: 0a 2b 72 65 73 75 6c 74 3b 20 69 74 20 63 61 6e  .+result; it can
0e90: 20 62 65 20 72 65 74 72 69 65 76 65 64 20 75 73   be retrieved us
0ea0: 69 6e 67 20 5c 66 42 54 63 6c 5f 47 65 74 4f 62  ing \fBTcl_GetOb
0eb0: 6a 52 65 73 75 6c 74 5c 66 52 2e 0a 2b 2e 50 50  jResult\fR..+.PP
0ec0: 0a 2b 5c 66 42 54 63 6c 5f 45 76 61 6c 54 6f 6b  .+\fBTcl_EvalTok
0ed0: 65 6e 73 5c 66 52 20 64 69 66 66 65 72 73 20 66  ens\fR differs f
0ee0: 72 6f 6d 20 5c 66 42 54 63 6c 5f 45 76 61 6c 54  rom \fBTcl_EvalT
0ef0: 6f 6b 65 6e 73 53 74 61 6e 64 61 72 64 5c 66 52  okensStandard\fR
0f00: 20 6f 6e 6c 79 20 69 6e 0a 2b 74 68 65 20 72 65   only in.+the re
0f10: 74 75 72 6e 20 63 6f 6e 76 65 6e 74 69 6f 6e 20  turn convention 
0f20: 75 73 65 64 3a 20 69 74 20 72 65 74 75 72 6e 73  used: it returns
0f30: 20 74 68 65 20 72 65 73 75 6c 74 20 69 6e 20 61   the result in a
0f40: 20 6e 65 77 20 54 63 6c 5f 4f 62 6a 2e 0a 2b 54   new Tcl_Obj..+T
0f50: 68 65 20 72 65 66 65 72 65 6e 63 65 20 63 6f 75  he reference cou
0f60: 6e 74 20 6f 66 20 74 68 65 20 6f 62 6a 65 63 74  nt of the object
0f70: 20 72 65 74 75 72 6e 65 64 20 61 73 20 72 65 73   returned as res
0f80: 75 6c 74 20 68 61 73 20 62 65 65 6e 0a 20 69 6e  ult has been. in
0f90: 63 72 65 6d 65 6e 74 65 64 2c 20 73 6f 20 74 68  cremented, so th
0fa0: 65 20 63 61 6c 6c 65 72 20 6d 75 73 74 0a 20 69  e caller must. i
0fb0: 6e 76 6f 6b 65 20 5c 66 42 54 63 6c 5f 44 65 63  nvoke \fBTcl_Dec
0fc0: 72 52 65 66 43 6f 75 6e 74 5c 66 52 20 77 68 65  rRefCount\fR whe
0fd0: 6e 20 69 74 20 69 73 20 66 69 6e 69 73 68 65 64  n it is finished
0fe0: 20 77 69 74 68 20 74 68 65 20 6f 62 6a 65 63 74   with the object
0ff0: 2e 0a 2d 49 66 20 61 6e 20 65 72 72 6f 72 20 6f  ..-If an error o
1000: 63 63 75 72 73 20 77 68 69 6c 65 20 65 76 61 6c  ccurs while eval
1010: 75 61 74 69 6e 67 20 74 68 65 20 74 6f 6b 65 6e  uating the token
1020: 73 20 28 73 75 63 68 20 61 73 20 61 20 72 65 66  s (such as a ref
1030: 65 72 65 6e 63 65 20 74 6f 0a 2d 61 20 6e 6f 6e  erence to.-a non
1040: 2d 65 78 69 73 74 65 6e 74 20 76 61 72 69 61 62  -existent variab
1050: 6c 65 29 20 74 68 65 6e 20 74 68 65 20 72 65 74  le) then the ret
1060: 75 72 6e 20 76 61 6c 75 65 20 69 73 20 4e 55 4c  urn value is NUL
1070: 4c 20 61 6e 64 20 61 6e 20 65 72 72 6f 72 0a 2d  L and an error.-
1080: 6d 65 73 73 61 67 65 20 69 73 20 6c 65 66 74 20  message is left 
1090: 69 6e 20 5c 66 49 69 6e 74 65 72 70 5c 66 52 27  in \fIinterp\fR'
10a0: 73 20 72 65 73 75 6c 74 2e 0a 2b 49 66 20 61 6e  s result..+If an
10b0: 20 65 72 72 6f 72 20 6f 72 20 6f 74 68 65 72 20   error or other 
10c0: 65 78 63 65 70 74 69 6f 6e 20 6f 63 63 75 72 73  exception occurs
10d0: 20 77 68 69 6c 65 20 65 76 61 6c 75 61 74 69 6e   while evaluatin
10e0: 67 20 74 68 65 20 74 6f 6b 65 6e 73 0a 2b 28 73  g the tokens.+(s
10f0: 75 63 68 20 61 73 20 61 20 72 65 66 65 72 65 6e  uch as a referen
1100: 63 65 20 74 6f 20 61 20 6e 6f 6e 2d 65 78 69 73  ce to a non-exis
1110: 74 65 6e 74 20 76 61 72 69 61 62 6c 65 29 20 74  tent variable) t
1120: 68 65 6e 20 74 68 65 20 72 65 74 75 72 6e 20 76  hen the return v
1130: 61 6c 75 65 0a 2b 69 73 20 4e 55 4c 4c 20 61 6e  alue.+is NULL an
1140: 64 20 61 6e 20 65 72 72 6f 72 20 6d 65 73 73 61  d an error messa
1150: 67 65 20 69 73 20 6c 65 66 74 20 69 6e 20 5c 66  ge is left in \f
1160: 49 69 6e 74 65 72 70 5c 66 52 27 73 20 72 65 73  Iinterp\fR's res
1170: 75 6c 74 2e 20 54 68 65 20 75 73 65 0a 2b 6f 66  ult. The use.+of
1180: 20 5c 66 42 54 63 6c 5f 45 76 61 6c 54 6f 6b 65   \fBTcl_EvalToke
1190: 6e 73 5c 66 52 20 69 73 20 64 65 70 72 65 63 61  ns\fR is depreca
11a0: 74 65 64 2e 0a 20 0a 20 2e 53 48 20 22 54 43 4c  ted.. . .SH "TCL
11b0: 5f 50 41 52 53 45 20 53 54 52 55 43 54 55 52 45  _PARSE STRUCTURE
11c0: 22 0a 20 2e 50 50 0a 49 6e 64 65 78 3a 20 67 65  ". .PP.Index: ge
11d0: 6e 65 72 69 63 2f 74 63 6c 2e 64 65 63 6c 73 0a  neric/tcl.decls.
11e0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
11f0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1200: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1210: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1220: 3d 3d 3d 0a 52 43 53 20 66 69 6c 65 3a 20 2f 63  ===.RCS file: /c
1230: 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f 67  vsroot/tcl/tcl/g
1240: 65 6e 65 72 69 63 2f 74 63 6c 2e 64 65 63 6c 73  eneric/tcl.decls
1250: 2c 76 0a 72 65 74 72 69 65 76 69 6e 67 20 72 65  ,v.retrieving re
1260: 76 69 73 69 6f 6e 20 31 2e 35 37 0a 64 69 66 66  vision 1.57.diff
1270: 20 2d 75 20 2d 72 31 2e 35 37 20 74 63 6c 2e 64   -u -r1.57 tcl.d
1280: 65 63 6c 73 0a 2d 2d 2d 20 67 65 6e 65 72 69 63  ecls.--- generic
1290: 2f 74 63 6c 2e 64 65 63 6c 73 09 32 30 30 31 2f  /tcl.decls.2001/
12a0: 30 39 2f 31 32 20 31 36 3a 33 32 3a 32 31 09 31  09/12 16:32:21.1
12b0: 2e 35 37 0a 2b 2b 2b 20 67 65 6e 65 72 69 63 2f  .57.+++ generic/
12c0: 74 63 6c 2e 64 65 63 6c 73 09 32 30 30 31 2f 30  tcl.decls.2001/0
12d0: 39 2f 31 32 20 31 38 3a 31 34 3a 30 38 0a 40 40  9/12 18:14:08.@@
12e0: 20 2d 31 36 38 32 2c 39 20 2b 31 36 38 32 2c 39   -1682,9 +1682,9
12f0: 20 40 40 0a 20 20 20 20 20 76 6f 69 64 20 54 63   @@.     void Tc
1300: 6c 5f 46 53 4d 6f 75 6e 74 73 43 68 61 6e 67 65  l_FSMountsChange
1310: 64 28 54 63 6c 5f 46 69 6c 65 73 79 73 74 65 6d  d(Tcl_Filesystem
1320: 20 2a 66 73 50 74 72 29 0a 20 7d 09 20 20 0a 20   *fsPtr). }.  . 
1330: 23 20 4e 65 77 20 66 75 6e 63 74 69 6f 6e 20 64  # New function d
1340: 75 65 20 74 6f 20 54 49 50 23 35 36 0a 2d 23 64  ue to TIP#56.-#d
1350: 65 63 6c 61 72 65 20 34 38 31 20 67 65 6e 65 72  eclare 481 gener
1360: 69 63 20 7b 0a 2d 23 20 20 20 20 69 6e 74 20 54  ic {.-#    int T
1370: 63 6c 5f 45 76 61 6c 54 6f 6b 65 6e 73 53 74 61  cl_EvalTokensSta
1380: 6e 64 61 72 64 28 54 63 6c 5f 49 6e 74 65 72 70  ndard(Tcl_Interp
1390: 20 2a 69 6e 74 65 72 70 2c 20 54 63 6c 5f 54 6f   *interp, Tcl_To
13a0: 6b 65 6e 20 2a 74 6f 6b 65 6e 50 74 72 2c 20 69  ken *tokenPtr, i
13b0: 6e 74 20 63 6f 75 6e 74 29 0a 2d 23 7d 0a 2b 64  nt count).-#}.+d
13c0: 65 63 6c 61 72 65 20 34 38 31 20 67 65 6e 65 72  eclare 481 gener
13d0: 69 63 20 7b 0a 2b 20 20 20 20 69 6e 74 20 54 63  ic {.+    int Tc
13e0: 6c 5f 45 76 61 6c 54 6f 6b 65 6e 73 53 74 61 6e  l_EvalTokensStan
13f0: 64 61 72 64 28 54 63 6c 5f 49 6e 74 65 72 70 20  dard(Tcl_Interp 
1400: 2a 69 6e 74 65 72 70 2c 20 54 63 6c 5f 54 6f 6b  *interp, Tcl_Tok
1410: 65 6e 20 2a 74 6f 6b 65 6e 50 74 72 2c 20 69 6e  en *tokenPtr, in
1420: 74 20 63 6f 75 6e 74 29 0a 2b 7d 0a 20 20 0a 20  t count).+}.  . 
1430: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1440: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1450: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1460: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1470: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 20  ##############. 
1480: 0a 49 6e 64 65 78 3a 20 67 65 6e 65 72 69 63 2f  .Index: generic/
1490: 74 63 6c 43 6d 64 4d 5a 2e 63 0a 3d 3d 3d 3d 3d  tclCmdMZ.c.=====
14a0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
14b0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
14c0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
14d0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52  ==============.R
14e0: 43 53 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f  CS file: /cvsroo
14f0: 74 2f 74 63 6c 2f 74 63 6c 2f 67 65 6e 65 72 69  t/tcl/tcl/generi
1500: 63 2f 74 63 6c 43 6d 64 4d 5a 2e 63 2c 76 0a 72  c/tclCmdMZ.c,v.r
1510: 65 74 72 69 65 76 69 6e 67 20 72 65 76 69 73 69  etrieving revisi
1520: 6f 6e 20 31 2e 34 33 0a 64 69 66 66 20 2d 75 20  on 1.43.diff -u 
1530: 2d 72 31 2e 34 33 20 74 63 6c 43 6d 64 4d 5a 2e  -r1.43 tclCmdMZ.
1540: 63 0a 2d 2d 2d 20 67 65 6e 65 72 69 63 2f 74 63  c.--- generic/tc
1550: 6c 43 6d 64 4d 5a 2e 63 09 32 30 30 31 2f 30 38  lCmdMZ.c.2001/08
1560: 2f 30 37 20 30 30 3a 35 36 3a 31 35 09 31 2e 34  /07 00:56:15.1.4
1570: 33 0a 2b 2b 2b 20 67 65 6e 65 72 69 63 2f 74 63  3.+++ generic/tc
1580: 6c 43 6d 64 4d 5a 2e 63 09 32 30 30 31 2f 30 39  lCmdMZ.c.2001/09
1590: 2f 31 32 20 31 38 3a 31 34 3a 31 30 0a 40 40 20  /12 18:14:10.@@ 
15a0: 2d 32 33 37 31 2c 37 20 2b 32 33 37 31 2c 37 20  -2371,7 +2371,7 
15b0: 40 40 0a 20 09 63 61 73 65 20 27 24 27 3a 0a 20  @@. .case '$':. 
15c0: 09 20 20 20 20 69 66 20 28 66 6c 61 67 73 20 26  .    if (flags &
15d0: 20 54 43 4c 5f 53 55 42 53 54 5f 56 41 52 49 41   TCL_SUBST_VARIA
15e0: 42 4c 45 53 29 20 7b 0a 20 09 09 54 63 6c 5f 50  BLES) {. ..Tcl_P
15f0: 61 72 73 65 20 70 61 72 73 65 3b 0a 2d 09 09 54  arse parse;.-..T
1600: 63 6c 5f 4f 62 6a 20 2a 74 65 6d 70 4f 62 6a 3b  cl_Obj *tempObj;
1610: 0a 2b 09 09 69 6e 74 20 63 6f 64 65 3b 0a 20 0a  .+..int code;. .
1620: 20 09 09 2f 2a 0a 20 09 09 20 2a 20 43 6f 64 65   ../*. .. * Code
1630: 20 69 73 20 73 69 6d 70 6c 65 72 20 6f 76 65 72   is simpler over
1640: 61 6c 6c 20 69 66 20 77 65 20 28 65 66 66 65 63  all if we (effec
1650: 74 69 76 65 6c 79 29 20 69 6e 6c 69 6e 65 0a 40  tively) inline.@
1660: 40 20 2d 32 33 39 38 2c 31 33 20 2b 32 33 39 38  @ -2398,13 +2398
1670: 2c 31 33 20 40 40 0a 20 09 09 20 20 20 20 54 63  ,13 @@. ..    Tc
1680: 6c 5f 41 70 70 65 6e 64 54 6f 4f 62 6a 28 72 65  l_AppendToObj(re
1690: 73 75 6c 74 4f 62 6a 2c 20 6f 6c 64 2c 20 70 2d  sultObj, old, p-
16a0: 6f 6c 64 29 3b 0a 20 09 09 7d 0a 20 09 09 70 20  old);. ..}. ..p 
16b0: 2b 3d 20 70 61 72 73 65 2e 74 6f 6b 65 6e 50 74  += parse.tokenPt
16c0: 72 2d 3e 73 69 7a 65 3b 0a 2d 09 09 74 65 6d 70  r->size;.-..temp
16d0: 4f 62 6a 20 3d 20 54 63 6c 5f 45 76 61 6c 54 6f  Obj = Tcl_EvalTo
16e0: 6b 65 6e 73 28 69 6e 74 65 72 70 2c 20 70 61 72  kens(interp, par
16f0: 73 65 2e 74 6f 6b 65 6e 50 74 72 2c 0a 2d 09 09  se.tokenPtr,.-..
1700: 09 09 09 20 70 61 72 73 65 2e 6e 75 6d 54 6f 6b  ... parse.numTok
1710: 65 6e 73 29 3b 0a 2d 09 09 69 66 20 28 74 65 6d  ens);.-..if (tem
1720: 70 4f 62 6a 20 3d 3d 20 4e 55 4c 4c 29 20 7b 0a  pObj == NULL) {.
1730: 2b 09 09 63 6f 64 65 20 3d 20 54 63 6c 5f 45 76  +..code = Tcl_Ev
1740: 61 6c 54 6f 6b 65 6e 73 53 74 61 6e 64 61 72 64  alTokensStandard
1750: 28 69 6e 74 65 72 70 2c 20 70 61 72 73 65 2e 74  (interp, parse.t
1760: 6f 6b 65 6e 50 74 72 2c 0a 2b 09 09 20 20 20 20  okenPtr,.+..    
1770: 20 20 20 20 70 61 72 73 65 2e 6e 75 6d 54 6f 6b      parse.numTok
1780: 65 6e 73 29 3b 0a 2b 09 09 69 66 20 28 63 6f 64  ens);.+..if (cod
1790: 65 20 21 3d 20 54 43 4c 5f 4f 4b 29 20 7b 0a 20  e != TCL_OK) {. 
17a0: 09 09 20 20 20 20 67 6f 74 6f 20 65 72 72 6f 72  ..    goto error
17b0: 52 65 73 75 6c 74 3b 0a 20 09 09 7d 0a 2d 09 09  Result;. ..}.-..
17c0: 54 63 6c 5f 41 70 70 65 6e 64 4f 62 6a 54 6f 4f  Tcl_AppendObjToO
17d0: 62 6a 28 72 65 73 75 6c 74 4f 62 6a 2c 20 74 65  bj(resultObj, te
17e0: 6d 70 4f 62 6a 29 3b 0a 2d 09 09 54 63 6c 5f 44  mpObj);.-..Tcl_D
17f0: 65 63 72 52 65 66 43 6f 75 6e 74 28 74 65 6d 70  ecrRefCount(temp
1800: 4f 62 6a 29 3b 0a 2b 09 09 54 63 6c 5f 41 70 70  Obj);.+..Tcl_App
1810: 65 6e 64 4f 62 6a 54 6f 4f 62 6a 28 72 65 73 75  endObjToObj(resu
1820: 6c 74 4f 62 6a 2c 20 54 63 6c 5f 47 65 74 4f 62  ltObj, Tcl_GetOb
1830: 6a 52 65 73 75 6c 74 28 69 6e 74 65 72 70 29 29  jResult(interp))
1840: 3b 0a 2b 09 09 54 63 6c 5f 52 65 73 65 74 52 65  ;.+..Tcl_ResetRe
1850: 73 75 6c 74 28 69 6e 74 65 72 70 29 3b 0a 20 09  sult(interp);. .
1860: 09 6f 6c 64 20 3d 20 70 3b 0a 20 09 20 20 20 20  .old = p;. .    
1870: 7d 20 65 6c 73 65 20 7b 0a 20 09 09 70 2b 2b 3b  } else {. ..p++;
1880: 0a 49 6e 64 65 78 3a 20 67 65 6e 65 72 69 63 2f  .Index: generic/
1890: 74 63 6c 44 65 63 6c 73 2e 68 0a 3d 3d 3d 3d 3d  tclDecls.h.=====
18a0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
18b0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
18c0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
18d0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52  ==============.R
18e0: 43 53 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f  CS file: /cvsroo
18f0: 74 2f 74 63 6c 2f 74 63 6c 2f 67 65 6e 65 72 69  t/tcl/tcl/generi
1900: 63 2f 74 63 6c 44 65 63 6c 73 2e 68 2c 76 0a 72  c/tclDecls.h,v.r
1910: 65 74 72 69 65 76 69 6e 67 20 72 65 76 69 73 69  etrieving revisi
1920: 6f 6e 20 31 2e 35 37 0a 64 69 66 66 20 2d 75 20  on 1.57.diff -u 
1930: 2d 72 31 2e 35 37 20 74 63 6c 44 65 63 6c 73 2e  -r1.57 tclDecls.
1940: 68 0a 2d 2d 2d 20 67 65 6e 65 72 69 63 2f 74 63  h.--- generic/tc
1950: 6c 44 65 63 6c 73 2e 68 09 32 30 30 31 2f 30 39  lDecls.h.2001/09
1960: 2f 30 36 20 31 37 3a 35 31 3a 30 30 09 31 2e 35  /06 17:51:00.1.5
1970: 37 0a 2b 2b 2b 20 67 65 6e 65 72 69 63 2f 74 63  7.+++ generic/tc
1980: 6c 44 65 63 6c 73 2e 68 09 32 30 30 31 2f 30 39  lDecls.h.2001/09
1990: 2f 31 32 20 31 38 3a 31 34 3a 31 34 0a 40 40 20  /12 18:14:14.@@ 
19a0: 2d 31 35 30 30 2c 36 20 2b 31 35 30 30 2c 31 30  -1500,6 +1500,10
19b0: 20 40 40 0a 20 2f 2a 20 34 38 30 20 2a 2f 0a 20   @@. /* 480 */. 
19c0: 45 58 54 45 52 4e 20 76 6f 69 64 09 09 54 63 6c  EXTERN void..Tcl
19d0: 5f 46 53 4d 6f 75 6e 74 73 43 68 61 6e 67 65 64  _FSMountsChanged
19e0: 20 5f 41 4e 53 49 5f 41 52 47 53 5f 28 28 0a 20   _ANSI_ARGS_((. 
19f0: 09 09 09 09 54 63 6c 5f 46 69 6c 65 73 79 73 74  ....Tcl_Filesyst
1a00: 65 6d 20 2a 20 66 73 50 74 72 29 29 3b 0a 2b 2f  em * fsPtr));.+/
1a10: 2a 20 34 38 31 20 2a 2f 0a 2b 45 58 54 45 52 4e  * 481 */.+EXTERN
1a20: 20 69 6e 74 09 09 54 63 6c 5f 45 76 61 6c 54 6f   int..Tcl_EvalTo
1a30: 6b 65 6e 73 53 74 61 6e 64 61 72 64 20 5f 41 4e  kensStandard _AN
1a40: 53 49 5f 41 52 47 53 5f 28 28 0a 2b 09 09 09 09  SI_ARGS_((.+....
1a50: 54 63 6c 5f 49 6e 74 65 72 70 20 2a 20 69 6e 74  Tcl_Interp * int
1a60: 65 72 70 2c 20 54 63 6c 5f 54 6f 6b 65 6e 20 2a  erp, Tcl_Token *
1a70: 20 74 6f 6b 65 6e 50 74 72 2c 20 0a 2b 09 09 09   tokenPtr, .+...
1a80: 09 69 6e 74 20 63 6f 75 6e 74 29 29 3b 0a 20 0a  .int count));. .
1a90: 20 74 79 70 65 64 65 66 20 73 74 72 75 63 74 20   typedef struct 
1aa0: 54 63 6c 53 74 75 62 48 6f 6f 6b 73 20 7b 0a 20  TclStubHooks {. 
1ab0: 20 20 20 20 73 74 72 75 63 74 20 54 63 6c 50 6c      struct TclPl
1ac0: 61 74 53 74 75 62 73 20 2a 74 63 6c 50 6c 61 74  atStubs *tclPlat
1ad0: 53 74 75 62 73 3b 0a 40 40 20 2d 32 30 34 30 2c  Stubs;.@@ -2040,
1ae0: 36 20 2b 32 30 34 34 2c 37 20 40 40 0a 20 20 20  6 +2044,7 @@.   
1af0: 20 20 54 63 6c 5f 50 61 74 68 54 79 70 65 20 28    Tcl_PathType (
1b00: 2a 74 63 6c 5f 46 53 47 65 74 50 61 74 68 54 79  *tcl_FSGetPathTy
1b10: 70 65 29 20 5f 41 4e 53 49 5f 41 52 47 53 5f 28  pe) _ANSI_ARGS_(
1b20: 28 54 63 6c 5f 4f 62 6a 20 2a 20 70 61 74 68 4f  (Tcl_Obj * pathO
1b30: 62 6a 50 74 72 29 29 3b 20 2f 2a 20 34 37 38 20  bjPtr)); /* 478 
1b40: 2a 2f 0a 20 20 20 20 20 69 6e 74 20 28 2a 74 63  */.     int (*tc
1b50: 6c 5f 4f 75 74 70 75 74 42 75 66 66 65 72 65 64  l_OutputBuffered
1b60: 29 20 5f 41 4e 53 49 5f 41 52 47 53 5f 28 28 54  ) _ANSI_ARGS_((T
1b70: 63 6c 5f 43 68 61 6e 6e 65 6c 20 63 68 61 6e 29  cl_Channel chan)
1b80: 29 3b 20 2f 2a 20 34 37 39 20 2a 2f 0a 20 20 20  ); /* 479 */.   
1b90: 20 20 76 6f 69 64 20 28 2a 74 63 6c 5f 46 53 4d    void (*tcl_FSM
1ba0: 6f 75 6e 74 73 43 68 61 6e 67 65 64 29 20 5f 41  ountsChanged) _A
1bb0: 4e 53 49 5f 41 52 47 53 5f 28 28 54 63 6c 5f 46  NSI_ARGS_((Tcl_F
1bc0: 69 6c 65 73 79 73 74 65 6d 20 2a 20 66 73 50 74  ilesystem * fsPt
1bd0: 72 29 29 3b 20 2f 2a 20 34 38 30 20 2a 2f 0a 2b  r)); /* 480 */.+
1be0: 20 20 20 20 69 6e 74 20 28 2a 74 63 6c 5f 45 76      int (*tcl_Ev
1bf0: 61 6c 54 6f 6b 65 6e 73 53 74 61 6e 64 61 72 64  alTokensStandard
1c00: 29 20 5f 41 4e 53 49 5f 41 52 47 53 5f 28 28 54  ) _ANSI_ARGS_((T
1c10: 63 6c 5f 49 6e 74 65 72 70 20 2a 20 69 6e 74 65  cl_Interp * inte
1c20: 72 70 2c 20 54 63 6c 5f 54 6f 6b 65 6e 20 2a 20  rp, Tcl_Token * 
1c30: 74 6f 6b 65 6e 50 74 72 2c 20 69 6e 74 20 63 6f  tokenPtr, int co
1c40: 75 6e 74 29 29 3b 20 2f 2a 20 34 38 31 20 2a 2f  unt)); /* 481 */
1c50: 0a 20 7d 20 54 63 6c 53 74 75 62 73 3b 0a 20 0a  . } TclStubs;. .
1c60: 20 23 69 66 64 65 66 20 5f 5f 63 70 6c 75 73 70   #ifdef __cplusp
1c70: 6c 75 73 0a 40 40 20 2d 34 30 30 33 2c 36 20 2b  lus.@@ -4003,6 +
1c80: 34 30 30 38 2c 31 30 20 40 40 0a 20 23 69 66 6e  4008,10 @@. #ifn
1c90: 64 65 66 20 54 63 6c 5f 46 53 4d 6f 75 6e 74 73  def Tcl_FSMounts
1ca0: 43 68 61 6e 67 65 64 0a 20 23 64 65 66 69 6e 65  Changed. #define
1cb0: 20 54 63 6c 5f 46 53 4d 6f 75 6e 74 73 43 68 61   Tcl_FSMountsCha
1cc0: 6e 67 65 64 20 5c 0a 20 09 28 74 63 6c 53 74 75  nged \. .(tclStu
1cd0: 62 73 50 74 72 2d 3e 74 63 6c 5f 46 53 4d 6f 75  bsPtr->tcl_FSMou
1ce0: 6e 74 73 43 68 61 6e 67 65 64 29 20 2f 2a 20 34  ntsChanged) /* 4
1cf0: 38 30 20 2a 2f 0a 2b 23 65 6e 64 69 66 0a 2b 23  80 */.+#endif.+#
1d00: 69 66 6e 64 65 66 20 54 63 6c 5f 45 76 61 6c 54  ifndef Tcl_EvalT
1d10: 6f 6b 65 6e 73 53 74 61 6e 64 61 72 64 0a 2b 23  okensStandard.+#
1d20: 64 65 66 69 6e 65 20 54 63 6c 5f 45 76 61 6c 54  define Tcl_EvalT
1d30: 6f 6b 65 6e 73 53 74 61 6e 64 61 72 64 20 5c 0a  okensStandard \.
1d40: 2b 09 28 74 63 6c 53 74 75 62 73 50 74 72 2d 3e  +.(tclStubsPtr->
1d50: 74 63 6c 5f 45 76 61 6c 54 6f 6b 65 6e 73 53 74  tcl_EvalTokensSt
1d60: 61 6e 64 61 72 64 29 20 2f 2a 20 34 38 31 20 2a  andard) /* 481 *
1d70: 2f 0a 20 23 65 6e 64 69 66 0a 20 0a 20 23 65 6e  /. #endif. . #en
1d80: 64 69 66 20 2f 2a 20 64 65 66 69 6e 65 64 28 55  dif /* defined(U
1d90: 53 45 5f 54 43 4c 5f 53 54 55 42 53 29 20 26 26  SE_TCL_STUBS) &&
1da0: 20 21 64 65 66 69 6e 65 64 28 55 53 45 5f 54 43   !defined(USE_TC
1db0: 4c 5f 53 54 55 42 5f 50 52 4f 43 53 29 20 2a 2f  L_STUB_PROCS) */
1dc0: 0a 49 6e 64 65 78 3a 20 67 65 6e 65 72 69 63 2f  .Index: generic/
1dd0: 74 63 6c 50 61 72 73 65 2e 63 0a 3d 3d 3d 3d 3d  tclParse.c.=====
1de0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1df0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1e00: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
1e10: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52  ==============.R
1e20: 43 53 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f  CS file: /cvsroo
1e30: 74 2f 74 63 6c 2f 74 63 6c 2f 67 65 6e 65 72 69  t/tcl/tcl/generi
1e40: 63 2f 74 63 6c 50 61 72 73 65 2e 63 2c 76 0a 72  c/tclParse.c,v.r
1e50: 65 74 72 69 65 76 69 6e 67 20 72 65 76 69 73 69  etrieving revisi
1e60: 6f 6e 20 31 2e 31 35 0a 64 69 66 66 20 2d 75 20  on 1.15.diff -u 
1e70: 2d 72 31 2e 31 35 20 74 63 6c 50 61 72 73 65 2e  -r1.15 tclParse.
1e80: 63 0a 2d 2d 2d 20 67 65 6e 65 72 69 63 2f 74 63  c.--- generic/tc
1e90: 6c 50 61 72 73 65 2e 63 09 32 30 30 31 2f 30 35  lParse.c.2001/05
1ea0: 2f 30 33 20 32 31 3a 31 34 3a 35 37 09 31 2e 31  /03 21:14:57.1.1
1eb0: 35 0a 2b 2b 2b 20 67 65 6e 65 72 69 63 2f 74 63  5.+++ generic/tc
1ec0: 6c 50 61 72 73 65 2e 63 09 32 30 30 31 2f 30 39  lParse.c.2001/09
1ed0: 2f 31 32 20 31 38 3a 31 34 3a 31 36 0a 40 40 20  /12 18:14:16.@@ 
1ee0: 2d 31 31 31 37 2c 32 38 20 2b 31 31 31 37 2c 32  -1117,28 +1117,2
1ef0: 36 20 40 40 0a 20 2f 2a 0a 20 20 2a 2d 2d 2d 2d  6 @@. /*.  *----
1f00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1f10: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1f20: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1f30: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1f40: 2d 2d 0a 20 20 2a 0a 2d 20 2a 20 54 63 6c 5f 45  --.  *.- * Tcl_E
1f50: 76 61 6c 54 6f 6b 65 6e 73 20 2d 2d 0a 2b 20 2a  valTokens --.+ *
1f60: 20 54 63 6c 5f 45 76 61 6c 54 6f 6b 65 6e 73 53   Tcl_EvalTokensS
1f70: 74 61 6e 64 61 72 64 20 2d 2d 0a 20 20 2a 0a 20  tandard --.  *. 
1f80: 20 2a 09 47 69 76 65 6e 20 61 6e 20 61 72 72 61   *.Given an arra
1f90: 79 20 6f 66 20 74 6f 6b 65 6e 73 20 70 61 72 73  y of tokens pars
1fa0: 65 64 20 66 72 6f 6d 20 61 20 54 63 6c 20 63 6f  ed from a Tcl co
1fb0: 6d 6d 61 6e 64 20 28 65 2e 67 2e 2c 20 74 68 65  mmand (e.g., the
1fc0: 0a 20 20 2a 09 74 6f 6b 65 6e 73 20 74 68 61 74  .  *.tokens that
1fd0: 20 6d 61 6b 65 20 75 70 20 61 20 77 6f 72 64 20   make up a word 
1fe0: 6f 72 20 74 68 65 20 69 6e 64 65 78 20 66 6f 72  or the index for
1ff0: 20 61 6e 20 61 72 72 61 79 20 76 61 72 69 61 62   an array variab
2000: 6c 65 29 0a 20 20 2a 09 74 68 69 73 20 70 72 6f  le).  *.this pro
2010: 63 65 64 75 72 65 20 65 76 61 6c 75 61 74 65 73  cedure evaluates
2020: 20 74 68 65 20 74 6f 6b 65 6e 73 20 61 6e 64 20   the tokens and 
2030: 63 6f 6e 63 61 74 65 6e 61 74 65 73 20 74 68 65  concatenates the
2040: 69 72 0a 20 20 2a 09 76 61 6c 75 65 73 20 74 6f  ir.  *.values to
2050: 20 66 6f 72 6d 20 61 20 73 69 6e 67 6c 65 20 72   form a single r
2060: 65 73 75 6c 74 20 76 61 6c 75 65 2e 0a 2d 20 2a  esult value..- *
2070: 0a 2b 20 2a 20 0a 20 20 2a 20 52 65 73 75 6c 74  .+ * .  * Result
2080: 73 3a 0a 2d 20 2a 09 54 68 65 20 72 65 74 75 72  s:.- *.The retur
2090: 6e 20 76 61 6c 75 65 20 69 73 20 61 20 70 6f 69  n value is a poi
20a0: 6e 74 65 72 20 74 6f 20 61 20 6e 65 77 6c 79 20  nter to a newly 
20b0: 61 6c 6c 6f 63 61 74 65 64 20 54 63 6c 5f 4f 62  allocated Tcl_Ob
20c0: 6a 0a 2d 20 2a 09 63 6f 6e 74 61 69 6e 69 6e 67  j.- *.containing
20d0: 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68   the value of th
20e0: 65 20 61 72 72 61 79 20 6f 66 20 74 6f 6b 65 6e  e array of token
20f0: 73 2e 20 20 54 68 65 20 72 65 66 65 72 65 6e 63  s.  The referenc
2100: 65 0a 2d 20 2a 09 63 6f 75 6e 74 20 6f 66 20 74  e.- *.count of t
2110: 68 65 20 72 65 74 75 72 6e 65 64 20 6f 62 6a 65  he returned obje
2120: 63 74 20 68 61 73 20 62 65 65 6e 20 69 6e 63 72  ct has been incr
2130: 65 6d 65 6e 74 65 64 2e 20 20 49 66 20 61 6e 20  emented.  If an 
2140: 65 72 72 6f 72 0a 2d 20 2a 09 6f 63 63 75 72 73  error.- *.occurs
2150: 20 69 6e 20 65 76 61 6c 75 61 74 69 6e 67 20 74   in evaluating t
2160: 68 65 20 74 6f 6b 65 6e 73 20 74 68 65 6e 20 61  he tokens then a
2170: 20 4e 55 4c 4c 20 76 61 6c 75 65 20 69 73 20 72   NULL value is r
2180: 65 74 75 72 6e 65 64 0a 2d 20 2a 09 61 6e 64 20  eturned.- *.and 
2190: 61 6e 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65  an error message
21a0: 20 69 73 20 6c 65 66 74 20 69 6e 20 69 6e 74 65   is left in inte
21b0: 72 70 27 73 20 72 65 73 75 6c 74 2e 0a 2b 20 2a  rp's result..+ *
21c0: 09 54 68 65 20 72 65 74 75 72 6e 20 76 61 6c 75  .The return valu
21d0: 65 20 69 73 20 61 20 73 74 61 6e 64 61 72 64 20  e is a standard 
21e0: 54 63 6c 20 63 6f 6d 70 6c 65 74 69 6f 6e 20 63  Tcl completion c
21f0: 6f 64 65 20 73 75 63 68 20 61 73 0a 2b 20 2a 09  ode such as.+ *.
2200: 54 43 4c 5f 4f 4b 20 6f 72 20 54 43 4c 5f 45 52  TCL_OK or TCL_ER
2210: 52 4f 52 2e 20 20 41 20 72 65 73 75 6c 74 20 6f  ROR.  A result o
2220: 72 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20  r error message 
2230: 69 73 20 6c 65 66 74 20 69 6e 0a 2b 20 2a 09 69  is left in.+ *.i
2240: 6e 74 65 72 70 27 73 20 72 65 73 75 6c 74 2e 0a  nterp's result..
2250: 20 20 2a 0a 20 20 2a 20 53 69 64 65 20 65 66 66    *.  * Side eff
2260: 65 63 74 73 3a 0a 2d 20 2a 09 41 20 6e 65 77 20  ects:.- *.A new 
2270: 6f 62 6a 65 63 74 20 69 73 20 61 6c 6c 6f 63 61  object is alloca
2280: 74 65 64 20 74 6f 20 68 6f 6c 64 20 74 68 65 20  ted to hold the 
2290: 72 65 73 75 6c 74 2e 0a 2d 20 2a 0a 2b 20 2a 09  result..- *.+ *.
22a0: 44 65 70 65 6e 64 73 20 6f 6e 20 74 68 65 20 61  Depends on the a
22b0: 72 72 61 79 20 6f 66 20 74 6f 6b 65 6e 73 20 62  rray of tokens b
22c0: 65 69 6e 67 20 65 76 61 6c 65 64 2e 0a 2b 20 20  eing evaled..+  
22d0: 2a 0a 20 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  *.  *-----------
22e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
22f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2300: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2310: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 20 2a 2f  -----------.  */
2320: 0a 20 0a 2d 54 63 6c 5f 4f 62 6a 20 2a 0a 2d 54  . .-Tcl_Obj *.-T
2330: 63 6c 5f 45 76 61 6c 54 6f 6b 65 6e 73 28 69 6e  cl_EvalTokens(in
2340: 74 65 72 70 2c 20 74 6f 6b 65 6e 50 74 72 2c 20  terp, tokenPtr, 
2350: 63 6f 75 6e 74 29 0a 2b 69 6e 74 0a 2b 54 63 6c  count).+int.+Tcl
2360: 5f 45 76 61 6c 54 6f 6b 65 6e 73 53 74 61 6e 64  _EvalTokensStand
2370: 61 72 64 28 69 6e 74 65 72 70 2c 20 74 6f 6b 65  ard(interp, toke
2380: 6e 50 74 72 2c 20 63 6f 75 6e 74 29 0a 20 20 20  nPtr, count).   
2390: 20 20 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e    Tcl_Interp *in
23a0: 74 65 72 70 3b 09 09 2f 2a 20 49 6e 74 65 72 70  terp;../* Interp
23b0: 72 65 74 65 72 20 69 6e 20 77 68 69 63 68 20 74  reter in which t
23c0: 6f 20 6c 6f 6f 6b 75 70 0a 20 09 09 09 09 20 2a  o lookup. .... *
23d0: 20 76 61 72 69 61 62 6c 65 73 2c 20 65 78 65 63   variables, exec
23e0: 75 74 65 20 6e 65 73 74 65 64 20 63 6f 6d 6d 61  ute nested comma
23f0: 6e 64 73 2c 0a 20 09 09 09 09 20 2a 20 61 6e 64  nds,. .... * and
2400: 20 72 65 70 6f 72 74 20 65 72 72 6f 72 73 2e 20   report errors. 
2410: 2a 2f 0a 40 40 20 2d 31 31 36 36 2c 37 20 2b 31  */.@@ -1166,7 +1
2420: 31 36 34 2c 39 20 40 40 0a 20 20 20 20 20 20 2a  164,9 @@.      *
2430: 20 63 6f 6d 6d 61 6e 64 27 73 20 72 65 73 75 6c   command's resul
2440: 74 20 6f 62 6a 65 63 74 20 64 69 72 65 63 74 6c  t object directl
2450: 79 2e 0a 20 20 20 20 20 20 2a 2f 0a 20 0a 2b 20  y..      */. .+ 
2460: 20 20 20 63 6f 64 65 20 3d 20 54 43 4c 5f 4f 4b     code = TCL_OK
2470: 3b 0a 20 20 20 20 20 72 65 73 75 6c 74 50 74 72  ;.     resultPtr
2480: 20 3d 20 4e 55 4c 4c 3b 0a 2b 20 20 20 20 54 63   = NULL;.+    Tc
2490: 6c 5f 52 65 73 65 74 52 65 73 75 6c 74 28 69 6e  l_ResetResult(in
24a0: 74 65 72 70 29 3b 0a 20 20 20 20 20 66 6f 72 20  terp);.     for 
24b0: 28 20 3b 20 63 6f 75 6e 74 20 3e 20 30 3b 20 63  ( ; count > 0; c
24c0: 6f 75 6e 74 2d 2d 2c 20 74 6f 6b 65 6e 50 74 72  ount--, tokenPtr
24d0: 2b 2b 29 20 7b 0a 20 09 76 61 6c 75 65 50 74 72  ++) {. .valuePtr
24e0: 20 3d 20 4e 55 4c 4c 3b 0a 20 0a 40 40 20 2d 31   = NULL;. .@@ -1
24f0: 31 39 32 2c 37 20 2b 31 31 39 32 2c 37 20 40 40  192,7 +1192,7 @@
2500: 0a 20 09 09 63 6f 64 65 20 3d 20 54 63 6c 5f 45  . ..code = Tcl_E
2510: 76 61 6c 45 78 28 69 6e 74 65 72 70 2c 20 74 6f  valEx(interp, to
2520: 6b 65 6e 50 74 72 2d 3e 73 74 61 72 74 2b 31 2c  kenPtr->start+1,
2530: 20 74 6f 6b 65 6e 50 74 72 2d 3e 73 69 7a 65 2d   tokenPtr->size-
2540: 32 2c 0a 20 09 09 09 30 29 3b 0a 20 09 09 69 66  2,. ...0);. ..if
2550: 20 28 63 6f 64 65 20 21 3d 20 54 43 4c 5f 4f 4b   (code != TCL_OK
2560: 29 20 7b 0a 2d 09 09 20 20 20 20 67 6f 74 6f 20  ) {.-..    goto 
2570: 65 72 72 6f 72 3b 0a 2b 09 09 20 20 20 20 67 6f  error;.+..    go
2580: 74 6f 20 64 6f 6e 65 3b 0a 20 09 09 7d 0a 20 09  to done;. ..}. .
2590: 09 76 61 6c 75 65 50 74 72 20 3d 20 54 63 6c 5f  .valuePtr = Tcl_
25a0: 47 65 74 4f 62 6a 52 65 73 75 6c 74 28 69 6e 74  GetObjResult(int
25b0: 65 72 70 29 3b 0a 20 09 09 62 72 65 61 6b 3b 0a  erp);. ..break;.
25c0: 40 40 20 2d 31 32 30 30 2c 31 32 20 2b 31 32 30  @@ -1200,12 +120
25d0: 30 2c 31 36 20 40 40 0a 20 09 20 20 20 20 63 61  0,16 @@. .    ca
25e0: 73 65 20 54 43 4c 5f 54 4f 4b 45 4e 5f 56 41 52  se TCL_TOKEN_VAR
25f0: 49 41 42 4c 45 3a 0a 20 09 09 69 66 20 28 74 6f  IABLE:. ..if (to
2600: 6b 65 6e 50 74 72 2d 3e 6e 75 6d 43 6f 6d 70 6f  kenPtr->numCompo
2610: 6e 65 6e 74 73 20 3d 3d 20 31 29 20 7b 0a 20 09  nents == 1) {. .
2620: 09 20 20 20 20 69 6e 64 65 78 50 74 72 20 3d 20  .    indexPtr = 
2630: 4e 55 4c 4c 3b 0a 2b 09 09 20 20 20 20 69 6e 64  NULL;.+..    ind
2640: 65 78 20 3d 20 4e 55 4c 4c 3b 0a 20 09 09 7d 20  ex = NULL;. ..} 
2650: 65 6c 73 65 20 7b 0a 2d 09 09 20 20 20 20 69 6e  else {.-..    in
2660: 64 65 78 50 74 72 20 3d 20 54 63 6c 5f 45 76 61  dexPtr = Tcl_Eva
2670: 6c 54 6f 6b 65 6e 73 28 69 6e 74 65 72 70 2c 20  lTokens(interp, 
2680: 74 6f 6b 65 6e 50 74 72 2b 32 2c 0a 2b 09 09 20  tokenPtr+2,.+.. 
2690: 20 20 20 63 6f 64 65 20 3d 20 54 63 6c 5f 45 76     code = Tcl_Ev
26a0: 61 6c 54 6f 6b 65 6e 73 53 74 61 6e 64 61 72 64  alTokensStandard
26b0: 28 69 6e 74 65 72 70 2c 20 74 6f 6b 65 6e 50 74  (interp, tokenPt
26c0: 72 2b 32 2c 0a 20 09 09 09 20 20 20 20 74 6f 6b  r+2,. ...    tok
26d0: 65 6e 50 74 72 2d 3e 6e 75 6d 43 6f 6d 70 6f 6e  enPtr->numCompon
26e0: 65 6e 74 73 20 2d 20 31 29 3b 0a 2d 09 09 20 20  ents - 1);.-..  
26f0: 20 20 69 66 20 28 69 6e 64 65 78 50 74 72 20 3d    if (indexPtr =
2700: 3d 20 4e 55 4c 4c 29 20 7b 0a 2d 09 09 09 67 6f  = NULL) {.-...go
2710: 74 6f 20 65 72 72 6f 72 3b 0a 2b 09 09 20 20 20  to error;.+..   
2720: 20 69 66 20 28 63 6f 64 65 20 21 3d 20 54 43 4c   if (code != TCL
2730: 5f 4f 4b 29 20 7b 0a 2b 09 09 09 67 6f 74 6f 20  _OK) {.+...goto 
2740: 64 6f 6e 65 3b 0a 20 09 09 20 20 20 20 7d 0a 2b  done;. ..    }.+
2750: 09 09 20 20 20 20 69 6e 64 65 78 50 74 72 20 3d  ..    indexPtr =
2760: 20 54 63 6c 5f 47 65 74 4f 62 6a 52 65 73 75 6c   Tcl_GetObjResul
2770: 74 28 69 6e 74 65 72 70 29 3b 0a 2b 09 09 20 20  t(interp);.+..  
2780: 20 20 54 63 6c 5f 49 6e 63 72 52 65 66 43 6f 75    Tcl_IncrRefCou
2790: 6e 74 28 69 6e 64 65 78 50 74 72 29 3b 0a 2b 09  nt(indexPtr);.+.
27a0: 09 20 20 20 20 69 6e 64 65 78 20 3d 20 54 63 6c  .    index = Tcl
27b0: 5f 47 65 74 53 74 72 69 6e 67 28 69 6e 64 65 78  _GetString(index
27c0: 50 74 72 29 3b 0a 20 09 09 7d 0a 20 0a 20 09 09  Ptr);. ..}. . ..
27d0: 2f 2a 0a 40 40 20 2d 31 32 32 33 2c 31 31 20 2b  /*.@@ -1223,11 +
27e0: 31 32 32 37 2c 36 20 40 40 0a 20 09 09 7d 0a 20  1227,6 @@. ..}. 
27f0: 09 09 73 74 72 6e 63 70 79 28 76 61 72 4e 61 6d  ..strncpy(varNam
2800: 65 2c 20 74 6f 6b 65 6e 50 74 72 5b 31 5d 2e 73  e, tokenPtr[1].s
2810: 74 61 72 74 2c 20 28 73 69 7a 65 5f 74 29 20 74  tart, (size_t) t
2820: 6f 6b 65 6e 50 74 72 5b 31 5d 2e 73 69 7a 65 29  okenPtr[1].size)
2830: 3b 0a 20 09 09 76 61 72 4e 61 6d 65 5b 74 6f 6b  ;. ..varName[tok
2840: 65 6e 50 74 72 5b 31 5d 2e 73 69 7a 65 5d 20 3d  enPtr[1].size] =
2850: 20 30 3b 0a 2d 09 09 69 66 20 28 69 6e 64 65 78   0;.-..if (index
2860: 50 74 72 20 21 3d 20 4e 55 4c 4c 29 20 7b 0a 2d  Ptr != NULL) {.-
2870: 09 09 20 20 20 20 69 6e 64 65 78 20 3d 20 54 63  ..    index = Tc
2880: 6c 47 65 74 53 74 72 69 6e 67 28 69 6e 64 65 78  lGetString(index
2890: 50 74 72 29 3b 0a 2d 09 09 7d 20 65 6c 73 65 20  Ptr);.-..} else 
28a0: 7b 0a 2d 09 09 20 20 20 20 69 6e 64 65 78 20 3d  {.-..    index =
28b0: 20 4e 55 4c 4c 3b 0a 2d 09 09 7d 0a 20 09 09 76   NULL;.-..}. ..v
28c0: 61 6c 75 65 50 74 72 20 3d 20 54 63 6c 5f 47 65  aluePtr = Tcl_Ge
28d0: 74 56 61 72 32 45 78 28 69 6e 74 65 72 70 2c 20  tVar2Ex(interp, 
28e0: 76 61 72 4e 61 6d 65 2c 20 69 6e 64 65 78 2c 0a  varName, index,.
28f0: 20 09 09 09 54 43 4c 5f 4c 45 41 56 45 5f 45 52   ...TCL_LEAVE_ER
2900: 52 5f 4d 53 47 29 3b 0a 20 09 09 69 66 20 28 76  R_MSG);. ..if (v
2910: 61 72 4e 61 6d 65 20 21 3d 20 6e 61 6d 65 42 75  arName != nameBu
2920: 66 66 65 72 29 20 7b 0a 40 40 20 2d 31 32 33 37  ffer) {.@@ -1237
2930: 2c 31 34 20 2b 31 32 33 36 2c 31 35 20 40 40 0a  ,14 +1236,15 @@.
2940: 20 09 09 20 20 20 20 54 63 6c 5f 44 65 63 72 52   ..    Tcl_DecrR
2950: 65 66 43 6f 75 6e 74 28 69 6e 64 65 78 50 74 72  efCount(indexPtr
2960: 29 3b 0a 20 09 09 7d 0a 20 09 09 69 66 20 28 76  );. ..}. ..if (v
2970: 61 6c 75 65 50 74 72 20 3d 3d 20 4e 55 4c 4c 29  aluePtr == NULL)
2980: 20 7b 0a 2d 09 09 20 20 20 20 67 6f 74 6f 20 65   {.-..    goto e
2990: 72 72 6f 72 3b 0a 2b 09 09 20 20 20 20 63 6f 64  rror;.+..    cod
29a0: 65 20 3d 20 54 43 4c 5f 45 52 52 4f 52 3b 0a 2b  e = TCL_ERROR;.+
29b0: 09 09 20 20 20 20 67 6f 74 6f 20 64 6f 6e 65 3b  ..    goto done;
29c0: 0a 20 09 09 7d 0a 20 09 09 63 6f 75 6e 74 20 2d  . ..}. ..count -
29d0: 3d 20 74 6f 6b 65 6e 50 74 72 2d 3e 6e 75 6d 43  = tokenPtr->numC
29e0: 6f 6d 70 6f 6e 65 6e 74 73 3b 0a 20 09 09 74 6f  omponents;. ..to
29f0: 6b 65 6e 50 74 72 20 2b 3d 20 74 6f 6b 65 6e 50  kenPtr += tokenP
2a00: 74 72 2d 3e 6e 75 6d 43 6f 6d 70 6f 6e 65 6e 74  tr->numComponent
2a10: 73 3b 0a 20 09 09 62 72 65 61 6b 3b 0a 20 0a 20  s;. ..break;. . 
2a20: 09 20 20 20 20 64 65 66 61 75 6c 74 3a 0a 2d 09  .    default:.-.
2a30: 09 70 61 6e 69 63 28 22 75 6e 65 78 70 65 63 74  .panic("unexpect
2a40: 65 64 20 74 6f 6b 65 6e 20 74 79 70 65 20 69 6e  ed token type in
2a50: 20 54 63 6c 5f 45 76 61 6c 54 6f 6b 65 6e 73 22   Tcl_EvalTokens"
2a60: 29 3b 0a 2b 09 09 70 61 6e 69 63 28 22 75 6e 65  );.+..panic("une
2a70: 78 70 65 63 74 65 64 20 74 6f 6b 65 6e 20 74 79  xpected token ty
2a80: 70 65 20 69 6e 20 54 63 6c 5f 45 76 61 6c 54 6f  pe in Tcl_EvalTo
2a90: 6b 65 6e 73 53 74 61 6e 64 61 72 64 22 29 3b 0a  kensStandard");.
2aa0: 20 09 7d 0a 20 0a 20 09 2f 2a 0a 40 40 20 2d 31   .}. . ./*.@@ -1
2ab0: 32 37 32 2c 31 34 20 2b 31 32 37 32 2c 36 39 20  272,14 +1272,69 
2ac0: 40 40 0a 20 09 20 20 20 20 54 63 6c 5f 41 70 70  @@. .    Tcl_App
2ad0: 65 6e 64 54 6f 4f 62 6a 28 72 65 73 75 6c 74 50  endToObj(resultP
2ae0: 74 72 2c 20 70 2c 20 6c 65 6e 67 74 68 29 3b 0a  tr, p, length);.
2af0: 20 09 7d 0a 20 20 20 20 20 7d 0a 2d 20 20 20 20   .}.     }.-    
2b00: 72 65 74 75 72 6e 20 72 65 73 75 6c 74 50 74 72  return resultPtr
2b10: 3b 0a 2d 0a 2d 20 20 20 20 65 72 72 6f 72 3a 0a  ;.-.-    error:.
2b20: 20 20 20 20 20 69 66 20 28 72 65 73 75 6c 74 50       if (resultP
2b30: 74 72 20 21 3d 20 4e 55 4c 4c 29 20 7b 0a 2b 09  tr != NULL) {.+.
2b40: 54 63 6c 5f 53 65 74 4f 62 6a 52 65 73 75 6c 74  Tcl_SetObjResult
2b50: 28 69 6e 74 65 72 70 2c 20 72 65 73 75 6c 74 50  (interp, resultP
2b60: 74 72 29 3b 0a 20 09 54 63 6c 5f 44 65 63 72 52  tr);. .Tcl_DecrR
2b70: 65 66 43 6f 75 6e 74 28 72 65 73 75 6c 74 50 74  efCount(resultPt
2b80: 72 29 3b 0a 2b 20 20 20 20 7d 20 65 6c 73 65 20  r);.+    } else 
2b90: 7b 0a 2b 09 63 6f 64 65 20 3d 20 54 43 4c 5f 45  {.+.code = TCL_E
2ba0: 52 52 4f 52 3b 0a 20 20 20 20 20 7d 0a 2d 20 20  RROR;.     }.-  
2bb0: 20 20 72 65 74 75 72 6e 20 4e 55 4c 4c 3b 0a 2b    return NULL;.+
2bc0: 0a 2b 20 20 20 20 64 6f 6e 65 3a 0a 2b 20 20 20  .+    done:.+   
2bd0: 20 72 65 74 75 72 6e 20 63 6f 64 65 3b 0a 20 7d   return code;. }
2be0: 0a 2b 0a 2b 0a 2b 2f 2a 0a 2b 20 2a 2d 2d 2d 2d  .+.+.+/*.+ *----
2bf0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2c00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2c10: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2c20: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2c30: 2d 2d 0a 2b 20 2a 0a 2b 20 2a 20 54 63 6c 5f 45  --.+ *.+ * Tcl_E
2c40: 76 61 6c 54 6f 6b 65 6e 73 20 2d 2d 0a 2b 20 2a  valTokens --.+ *
2c50: 0a 2b 20 2a 09 47 69 76 65 6e 20 61 6e 20 61 72  .+ *.Given an ar
2c60: 72 61 79 20 6f 66 20 74 6f 6b 65 6e 73 20 70 61  ray of tokens pa
2c70: 72 73 65 64 20 66 72 6f 6d 20 61 20 54 63 6c 20  rsed from a Tcl 
2c80: 63 6f 6d 6d 61 6e 64 20 28 65 2e 67 2e 2c 20 74  command (e.g., t
2c90: 68 65 0a 2b 20 2a 09 74 6f 6b 65 6e 73 20 74 68  he.+ *.tokens th
2ca0: 61 74 20 6d 61 6b 65 20 75 70 20 61 20 77 6f 72  at make up a wor
2cb0: 64 20 6f 72 20 74 68 65 20 69 6e 64 65 78 20 66  d or the index f
2cc0: 6f 72 20 61 6e 20 61 72 72 61 79 20 76 61 72 69  or an array vari
2cd0: 61 62 6c 65 29 0a 2b 20 2a 09 74 68 69 73 20 70  able).+ *.this p
2ce0: 72 6f 63 65 64 75 72 65 20 65 76 61 6c 75 61 74  rocedure evaluat
2cf0: 65 73 20 74 68 65 20 74 6f 6b 65 6e 73 20 61 6e  es the tokens an
2d00: 64 20 63 6f 6e 63 61 74 65 6e 61 74 65 73 20 74  d concatenates t
2d10: 68 65 69 72 0a 2b 20 2a 09 76 61 6c 75 65 73 20  heir.+ *.values 
2d20: 74 6f 20 66 6f 72 6d 20 61 20 73 69 6e 67 6c 65  to form a single
2d30: 20 72 65 73 75 6c 74 20 76 61 6c 75 65 2e 0a 2b   result value..+
2d40: 20 2a 0a 2b 20 2a 20 52 65 73 75 6c 74 73 3a 0a   *.+ * Results:.
2d50: 2b 20 2a 09 54 68 65 20 72 65 74 75 72 6e 20 76  + *.The return v
2d60: 61 6c 75 65 20 69 73 20 61 20 70 6f 69 6e 74 65  alue is a pointe
2d70: 72 20 74 6f 20 61 20 6e 65 77 6c 79 20 61 6c 6c  r to a newly all
2d80: 6f 63 61 74 65 64 20 54 63 6c 5f 4f 62 6a 0a 2b  ocated Tcl_Obj.+
2d90: 20 2a 09 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68   *.containing th
2da0: 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 61  e value of the a
2db0: 72 72 61 79 20 6f 66 20 74 6f 6b 65 6e 73 2e 20  rray of tokens. 
2dc0: 20 54 68 65 20 72 65 66 65 72 65 6e 63 65 0a 2b   The reference.+
2dd0: 20 2a 09 63 6f 75 6e 74 20 6f 66 20 74 68 65 20   *.count of the 
2de0: 72 65 74 75 72 6e 65 64 20 6f 62 6a 65 63 74 20  returned object 
2df0: 68 61 73 20 62 65 65 6e 20 69 6e 63 72 65 6d 65  has been increme
2e00: 6e 74 65 64 2e 20 20 49 66 20 61 6e 20 65 72 72  nted.  If an err
2e10: 6f 72 0a 2b 20 2a 09 6f 63 63 75 72 73 20 69 6e  or.+ *.occurs in
2e20: 20 65 76 61 6c 75 61 74 69 6e 67 20 74 68 65 20   evaluating the 
2e30: 74 6f 6b 65 6e 73 20 74 68 65 6e 20 61 20 4e 55  tokens then a NU
2e40: 4c 4c 20 76 61 6c 75 65 20 69 73 20 72 65 74 75  LL value is retu
2e50: 72 6e 65 64 0a 2b 20 2a 09 61 6e 64 20 61 6e 20  rned.+ *.and an 
2e60: 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20 69 73  error message is
2e70: 20 6c 65 66 74 20 69 6e 20 69 6e 74 65 72 70 27   left in interp'
2e80: 73 20 72 65 73 75 6c 74 2e 0a 2b 20 2a 0a 2b 20  s result..+ *.+ 
2e90: 2a 20 53 69 64 65 20 65 66 66 65 63 74 73 3a 0a  * Side effects:.
2ea0: 2b 20 2a 09 41 20 6e 65 77 20 6f 62 6a 65 63 74  + *.A new object
2eb0: 20 69 73 20 61 6c 6c 6f 63 61 74 65 64 20 74 6f   is allocated to
2ec0: 20 68 6f 6c 64 20 74 68 65 20 72 65 73 75 6c 74   hold the result
2ed0: 2e 0a 2b 20 2a 0a 2b 20 2a 2d 2d 2d 2d 2d 2d 2d  ..+ *.+ *-------
2ee0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2ef0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2f00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2f10: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a  ---------------.
2f20: 2b 20 2a 0a 2b 20 2a 20 54 68 69 73 20 75 73 65  + *.+ * This use
2f30: 73 20 61 20 6e 6f 6e 2d 73 74 61 6e 64 61 72 64  s a non-standard
2f40: 20 72 65 74 75 72 6e 20 63 6f 6e 76 65 6e 74 69   return conventi
2f50: 6f 6e 3b 20 69 74 73 20 75 73 65 20 69 73 20 6e  on; its use is n
2f60: 6f 77 20 64 65 70 72 65 63 61 74 65 64 2e 0a 2b  ow deprecated..+
2f70: 20 2a 20 49 74 20 69 73 20 61 20 77 72 61 70 70   * It is a wrapp
2f80: 65 72 20 66 6f 72 20 74 68 65 20 6e 65 77 20 66  er for the new f
2f90: 75 6e 63 74 69 6f 6e 20 54 63 6c 5f 45 76 61 6c  unction Tcl_Eval
2fa0: 54 6f 6b 65 6e 73 53 74 61 6e 64 61 72 64 2c 20  TokensStandard, 
2fb0: 61 6e 64 20 69 73 20 6e 6f 74 20 0a 2b 20 2a 20  and is not .+ * 
2fc0: 75 73 65 64 20 69 6e 20 74 68 65 20 63 6f 72 65  used in the core
2fd0: 20 61 6e 79 20 6c 6f 6e 67 65 72 2e 20 49 74 20   any longer. It 
2fe0: 69 73 20 6f 6e 6c 79 20 6b 65 70 74 20 66 6f 72  is only kept for
2ff0: 20 62 61 63 6b 77 61 72 64 20 63 6f 6d 70 61 74   backward compat
3000: 69 62 69 6c 69 74 79 2e 0a 2b 20 2a 2f 0a 2b 0a  ibility..+ */.+.
3010: 2b 54 63 6c 5f 4f 62 6a 20 2a 0a 2b 54 63 6c 5f  +Tcl_Obj *.+Tcl_
3020: 45 76 61 6c 54 6f 6b 65 6e 73 28 69 6e 74 65 72  EvalTokens(inter
3030: 70 2c 20 74 6f 6b 65 6e 50 74 72 2c 20 63 6f 75  p, tokenPtr, cou
3040: 6e 74 29 0a 2b 20 20 20 20 54 63 6c 5f 49 6e 74  nt).+    Tcl_Int
3050: 65 72 70 20 2a 69 6e 74 65 72 70 3b 09 09 2f 2a  erp *interp;../*
3060: 20 49 6e 74 65 72 70 72 65 74 65 72 20 69 6e 20   Interpreter in 
3070: 77 68 69 63 68 20 74 6f 20 6c 6f 6f 6b 75 70 0a  which to lookup.
3080: 2b 09 09 09 09 20 2a 20 76 61 72 69 61 62 6c 65  +.... * variable
3090: 73 2c 20 65 78 65 63 75 74 65 20 6e 65 73 74 65  s, execute neste
30a0: 64 20 63 6f 6d 6d 61 6e 64 73 2c 0a 2b 09 09 09  d commands,.+...
30b0: 09 20 2a 20 61 6e 64 20 72 65 70 6f 72 74 20 65  . * and report e
30c0: 72 72 6f 72 73 2e 20 2a 2f 0a 2b 20 20 20 20 54  rrors. */.+    T
30d0: 63 6c 5f 54 6f 6b 65 6e 20 2a 74 6f 6b 65 6e 50  cl_Token *tokenP
30e0: 74 72 3b 09 2f 2a 20 50 6f 69 6e 74 65 72 20 74  tr;./* Pointer t
30f0: 6f 20 66 69 72 73 74 20 69 6e 20 61 6e 20 61 72  o first in an ar
3100: 72 61 79 20 6f 66 20 74 6f 6b 65 6e 73 0a 2b 09  ray of tokens.+.
3110: 09 09 09 20 2a 20 74 6f 20 65 76 61 6c 75 61 74  ... * to evaluat
3120: 65 20 61 6e 64 20 63 6f 6e 63 61 74 65 6e 61 74  e and concatenat
3130: 65 2e 20 2a 2f 0a 2b 20 20 20 20 69 6e 74 20 63  e. */.+    int c
3140: 6f 75 6e 74 3b 09 09 09 2f 2a 20 4e 75 6d 62 65  ount;.../* Numbe
3150: 72 20 6f 66 20 74 6f 6b 65 6e 73 20 74 6f 20 63  r of tokens to c
3160: 6f 6e 73 69 64 65 72 20 61 74 20 74 6f 6b 65 6e  onsider at token
3170: 50 74 72 2e 0a 2b 09 09 09 09 20 2a 20 4d 75 73  Ptr..+.... * Mus
3180: 74 20 62 65 20 61 74 20 6c 65 61 73 74 20 31 2e  t be at least 1.
3190: 20 2a 2f 0a 2b 7b 0a 2b 20 20 20 20 69 6e 74 20   */.+{.+    int 
31a0: 63 6f 64 65 3b 0a 2b 20 20 20 20 54 63 6c 5f 4f  code;.+    Tcl_O
31b0: 62 6a 20 2a 72 65 73 50 74 72 3b 0a 2b 20 20 20  bj *resPtr;.+   
31c0: 20 0a 2b 20 20 20 20 63 6f 64 65 20 3d 20 54 63   .+    code = Tc
31d0: 6c 5f 45 76 61 6c 54 6f 6b 65 6e 73 53 74 61 6e  l_EvalTokensStan
31e0: 64 61 72 64 28 69 6e 74 65 72 70 2c 20 74 6f 6b  dard(interp, tok
31f0: 65 6e 50 74 72 2c 20 63 6f 75 6e 74 29 3b 0a 2b  enPtr, count);.+
3200: 20 20 20 20 69 66 20 28 63 6f 64 65 20 3d 3d 20      if (code == 
3210: 54 43 4c 5f 4f 4b 29 20 7b 0a 2b 09 72 65 73 50  TCL_OK) {.+.resP
3220: 74 72 20 3d 20 54 63 6c 5f 47 65 74 4f 62 6a 52  tr = Tcl_GetObjR
3230: 65 73 75 6c 74 28 69 6e 74 65 72 70 29 3b 0a 2b  esult(interp);.+
3240: 09 54 63 6c 5f 49 6e 63 72 52 65 66 43 6f 75 6e  .Tcl_IncrRefCoun
3250: 74 28 72 65 73 50 74 72 29 3b 0a 2b 09 54 63 6c  t(resPtr);.+.Tcl
3260: 5f 52 65 73 65 74 52 65 73 75 6c 74 28 69 6e 74  _ResetResult(int
3270: 65 72 70 29 3b 0a 2b 09 72 65 74 75 72 6e 20 72  erp);.+.return r
3280: 65 73 50 74 72 3b 0a 2b 20 20 20 20 7d 20 65 6c  esPtr;.+    } el
3290: 73 65 20 7b 0a 2b 09 72 65 74 75 72 6e 20 4e 55  se {.+.return NU
32a0: 4c 4c 3b 0a 2b 20 20 20 20 7d 0a 2b 7d 0a 2b 0a  LL;.+    }.+}.+.
32b0: 20 0c 0a 20 2f 2a 0a 20 20 2a 2d 2d 2d 2d 2d 2d   .. /*.  *------
32c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
32d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
32e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
32f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3300: 0a 40 40 20 2d 31 33 37 38 2c 31 30 20 2b 31 34  .@@ -1378,10 +14
3310: 33 33 2c 31 32 20 40 40 0a 20 09 20 20 20 20 66  33,12 @@. .    f
3320: 6f 72 20 28 6f 62 6a 65 63 74 73 55 73 65 64 20  or (objectsUsed 
3330: 3d 20 30 2c 20 74 6f 6b 65 6e 50 74 72 20 3d 20  = 0, tokenPtr = 
3340: 70 61 72 73 65 2e 74 6f 6b 65 6e 50 74 72 3b 0a  parse.tokenPtr;.
3350: 20 09 09 20 20 20 20 6f 62 6a 65 63 74 73 55 73   ..    objectsUs
3360: 65 64 20 3c 20 70 61 72 73 65 2e 6e 75 6d 57 6f  ed < parse.numWo
3370: 72 64 73 3b 0a 20 09 09 20 20 20 20 6f 62 6a 65  rds;. ..    obje
3380: 63 74 73 55 73 65 64 2b 2b 2c 20 74 6f 6b 65 6e  ctsUsed++, token
3390: 50 74 72 20 2b 3d 20 28 74 6f 6b 65 6e 50 74 72  Ptr += (tokenPtr
33a0: 2d 3e 6e 75 6d 43 6f 6d 70 6f 6e 65 6e 74 73 20  ->numComponents 
33b0: 2b 20 31 29 29 20 7b 0a 2d 09 09 6f 62 6a 76 5b  + 1)) {.-..objv[
33c0: 6f 62 6a 65 63 74 73 55 73 65 64 5d 20 3d 20 54  objectsUsed] = T
33d0: 63 6c 5f 45 76 61 6c 54 6f 6b 65 6e 73 28 69 6e  cl_EvalTokens(in
33e0: 74 65 72 70 2c 20 74 6f 6b 65 6e 50 74 72 2b 31  terp, tokenPtr+1
33f0: 2c 0a 2d 09 09 09 74 6f 6b 65 6e 50 74 72 2d 3e  ,.-...tokenPtr->
3400: 6e 75 6d 43 6f 6d 70 6f 6e 65 6e 74 73 29 3b 0a  numComponents);.
3410: 2d 09 09 69 66 20 28 6f 62 6a 76 5b 6f 62 6a 65  -..if (objv[obje
3420: 63 74 73 55 73 65 64 5d 20 3d 3d 20 4e 55 4c 4c  ctsUsed] == NULL
3430: 29 20 7b 0a 2d 09 09 20 20 20 20 63 6f 64 65 20  ) {.-..    code 
3440: 3d 20 54 43 4c 5f 45 52 52 4f 52 3b 0a 2b 09 09  = TCL_ERROR;.+..
3450: 63 6f 64 65 20 3d 20 54 63 6c 5f 45 76 61 6c 54  code = Tcl_EvalT
3460: 6f 6b 65 6e 73 53 74 61 6e 64 61 72 64 28 69 6e  okensStandard(in
3470: 74 65 72 70 2c 20 74 6f 6b 65 6e 50 74 72 2b 31  terp, tokenPtr+1
3480: 2c 20 0a 2b 09 09 20 20 20 20 20 20 20 20 20 20  , .+..          
3490: 20 20 74 6f 6b 65 6e 50 74 72 2d 3e 6e 75 6d 43    tokenPtr->numC
34a0: 6f 6d 70 6f 6e 65 6e 74 73 29 3b 0a 2b 09 09 69  omponents);.+..i
34b0: 66 20 28 63 6f 64 65 20 3d 3d 20 54 43 4c 5f 4f  f (code == TCL_O
34c0: 4b 29 20 7b 0a 2b 09 09 20 20 20 20 6f 62 6a 76  K) {.+..    objv
34d0: 5b 6f 62 6a 65 63 74 73 55 73 65 64 5d 20 3d 20  [objectsUsed] = 
34e0: 54 63 6c 5f 47 65 74 4f 62 6a 52 65 73 75 6c 74  Tcl_GetObjResult
34f0: 28 69 6e 74 65 72 70 29 3b 0a 2b 09 09 20 20 20  (interp);.+..   
3500: 20 54 63 6c 5f 49 6e 63 72 52 65 66 43 6f 75 6e   Tcl_IncrRefCoun
3510: 74 28 6f 62 6a 76 5b 6f 62 6a 65 63 74 73 55 73  t(objv[objectsUs
3520: 65 64 5d 29 3b 0a 2b 09 09 7d 20 65 6c 73 65 20  ed]);.+..} else 
3530: 7b 0a 20 09 09 20 20 20 20 67 6f 74 6f 20 65 72  {. ..    goto er
3540: 72 6f 72 3b 0a 20 09 09 7d 0a 20 09 20 20 20 20  ror;. ..}. .    
3550: 7d 0a 40 40 20 2d 31 38 34 31 2c 36 20 2b 31 38  }.@@ -1841,6 +18
3560: 39 38 2c 37 20 40 40 0a 20 7b 0a 20 20 20 20 20  98,7 @@. {.     
3570: 54 63 6c 5f 50 61 72 73 65 20 70 61 72 73 65 3b  Tcl_Parse parse;
3580: 0a 20 20 20 20 20 72 65 67 69 73 74 65 72 20 54  .     register T
3590: 63 6c 5f 4f 62 6a 20 2a 6f 62 6a 50 74 72 3b 0a  cl_Obj *objPtr;.
35a0: 2b 20 20 20 20 69 6e 74 20 63 6f 64 65 3b 0a 20  +    int code;. 
35b0: 0a 20 20 20 20 20 69 66 20 28 54 63 6c 5f 50 61  .     if (Tcl_Pa
35c0: 72 73 65 56 61 72 4e 61 6d 65 28 69 6e 74 65 72  rseVarName(inter
35d0: 70 2c 20 73 74 72 69 6e 67 2c 20 2d 31 2c 20 26  p, string, -1, &
35e0: 70 61 72 73 65 2c 20 30 29 20 21 3d 20 54 43 4c  parse, 0) != TCL
35f0: 5f 4f 4b 29 20 7b 0a 20 09 72 65 74 75 72 6e 20  _OK) {. .return 
3600: 4e 55 4c 4c 3b 0a 40 40 20 2d 31 38 35 37 2c 32  NULL;.@@ -1857,2
3610: 32 20 2b 31 39 31 35 2c 31 39 20 40 40 0a 20 09  2 +1915,19 @@. .
3620: 72 65 74 75 72 6e 20 22 24 22 3b 0a 20 20 20 20  return "$";.    
3630: 20 7d 0a 20 0a 2d 20 20 20 20 6f 62 6a 50 74 72   }. .-    objPtr
3640: 20 3d 20 54 63 6c 5f 45 76 61 6c 54 6f 6b 65 6e   = Tcl_EvalToken
3650: 73 28 69 6e 74 65 72 70 2c 20 70 61 72 73 65 2e  s(interp, parse.
3660: 74 6f 6b 65 6e 50 74 72 2c 20 70 61 72 73 65 2e  tokenPtr, parse.
3670: 6e 75 6d 54 6f 6b 65 6e 73 29 3b 0a 2d 20 20 20  numTokens);.-   
3680: 20 69 66 20 28 6f 62 6a 50 74 72 20 3d 3d 20 4e   if (objPtr == N
3690: 55 4c 4c 29 20 7b 0a 2b 20 20 20 20 63 6f 64 65  ULL) {.+    code
36a0: 20 3d 20 54 63 6c 5f 45 76 61 6c 54 6f 6b 65 6e   = Tcl_EvalToken
36b0: 73 53 74 61 6e 64 61 72 64 28 69 6e 74 65 72 70  sStandard(interp
36c0: 2c 20 70 61 72 73 65 2e 74 6f 6b 65 6e 50 74 72  , parse.tokenPtr
36d0: 2c 20 70 61 72 73 65 2e 6e 75 6d 54 6f 6b 65 6e  , parse.numToken
36e0: 73 29 3b 0a 2b 20 20 20 20 69 66 20 28 63 6f 64  s);.+    if (cod
36f0: 65 20 21 3d 20 54 43 4c 5f 4f 4b 29 20 7b 0a 20  e != TCL_OK) {. 
3700: 09 72 65 74 75 72 6e 20 4e 55 4c 4c 3b 0a 20 20  .return NULL;.  
3710: 20 20 20 7d 0a 2b 20 20 20 20 6f 62 6a 50 74 72     }.+    objPtr
3720: 20 3d 20 54 63 6c 5f 47 65 74 4f 62 6a 52 65 73   = Tcl_GetObjRes
3730: 75 6c 74 28 69 6e 74 65 72 70 29 3b 0a 20 0a 20  ult(interp);. . 
3740: 20 20 20 20 2f 2a 0a 20 20 20 20 20 20 2a 20 41      /*.      * A
3750: 74 20 74 68 69 73 20 70 6f 69 6e 74 20 77 65 20  t this point we 
3760: 73 68 6f 75 6c 64 20 68 61 76 65 20 61 6e 20 6f  should have an o
3770: 62 6a 65 63 74 20 63 6f 6e 74 61 69 6e 69 6e 67  bject containing
3780: 20 74 68 65 20 76 61 6c 75 65 20 6f 66 0a 20 20   the value of.  
3790: 20 20 20 20 2a 20 61 20 76 61 72 69 61 62 6c 65      * a variable
37a0: 2e 20 20 4a 75 73 74 20 72 65 74 75 72 6e 20 74  .  Just return t
37b0: 68 65 20 73 74 72 69 6e 67 20 66 72 6f 6d 20 74  he string from t
37c0: 68 61 74 20 6f 62 6a 65 63 74 2e 0a 20 20 20 20  hat object..    
37d0: 20 20 2a 2f 0a 20 0a 2d 23 69 66 64 65 66 20 54    */. .-#ifdef T
37e0: 43 4c 5f 43 4f 4d 50 49 4c 45 5f 44 45 42 55 47  CL_COMPILE_DEBUG
37f0: 0a 2d 20 20 20 20 69 66 20 28 6f 62 6a 50 74 72  .-    if (objPtr
3800: 2d 3e 72 65 66 43 6f 75 6e 74 20 3c 20 32 29 20  ->refCount < 2) 
3810: 7b 0a 2d 09 70 61 6e 69 63 28 22 54 63 6c 5f 50  {.-.panic("Tcl_P
3820: 61 72 73 65 56 61 72 20 67 6f 74 20 74 65 6d 70  arseVar got temp
3830: 6f 72 61 72 79 20 6f 62 6a 65 63 74 20 66 72 6f  orary object fro
3840: 6d 20 54 63 6c 5f 45 76 61 6c 54 6f 6b 65 6e 73  m Tcl_EvalTokens
3850: 22 29 3b 0a 2d 20 20 20 20 7d 0a 2d 23 65 6e 64  ");.-    }.-#end
3860: 69 66 20 2f 2a 54 43 4c 5f 43 4f 4d 50 49 4c 45  if /*TCL_COMPILE
3870: 5f 44 45 42 55 47 2a 2f 20 20 20 20 0a 2d 20 20  _DEBUG*/    .-  
3880: 20 20 54 63 6c 44 65 63 72 52 65 66 43 6f 75 6e    TclDecrRefCoun
3890: 74 28 6f 62 6a 50 74 72 29 3b 0a 2b 20 20 20 20  t(objPtr);.+    
38a0: 54 63 6c 5f 49 6e 63 72 52 65 66 43 6f 75 6e 74  Tcl_IncrRefCount
38b0: 28 6f 62 6a 50 74 72 29 3b 0a 2b 20 20 20 20 54  (objPtr);.+    T
38c0: 63 6c 5f 52 65 73 65 74 52 65 73 75 6c 74 28 69  cl_ResetResult(i
38d0: 6e 74 65 72 70 29 3b 0a 20 20 20 20 20 72 65 74  nterp);.     ret
38e0: 75 72 6e 20 54 63 6c 47 65 74 53 74 72 69 6e 67  urn TclGetString
38f0: 28 6f 62 6a 50 74 72 29 3b 0a 20 7d 0a 20 0c 0a  (objPtr);. }. ..
3900: 49 6e 64 65 78 3a 20 67 65 6e 65 72 69 63 2f 74  Index: generic/t
3910: 63 6c 53 74 75 62 49 6e 69 74 2e 63 0a 3d 3d 3d  clStubInit.c.===
3920: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
3930: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
3940: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
3950: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
3960: 0a 52 43 53 20 66 69 6c 65 3a 20 2f 63 76 73 72  .RCS file: /cvsr
3970: 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f 67 65 6e 65  oot/tcl/tcl/gene
3980: 72 69 63 2f 74 63 6c 53 74 75 62 49 6e 69 74 2e  ric/tclStubInit.
3990: 63 2c 76 0a 72 65 74 72 69 65 76 69 6e 67 20 72  c,v.retrieving r
39a0: 65 76 69 73 69 6f 6e 20 31 2e 36 30 0a 64 69 66  evision 1.60.dif
39b0: 66 20 2d 75 20 2d 72 31 2e 36 30 20 74 63 6c 53  f -u -r1.60 tclS
39c0: 74 75 62 49 6e 69 74 2e 63 0a 2d 2d 2d 20 67 65  tubInit.c.--- ge
39d0: 6e 65 72 69 63 2f 74 63 6c 53 74 75 62 49 6e 69  neric/tclStubIni
39e0: 74 2e 63 09 32 30 30 31 2f 30 39 2f 31 30 20 31  t.c.2001/09/10 1
39f0: 37 3a 31 37 3a 34 31 09 31 2e 36 30 0a 2b 2b 2b  7:17:41.1.60.+++
3a00: 20 67 65 6e 65 72 69 63 2f 74 63 6c 53 74 75 62   generic/tclStub
3a10: 49 6e 69 74 2e 63 09 32 30 30 31 2f 30 39 2f 31  Init.c.2001/09/1
3a20: 32 20 31 38 3a 31 34 3a 31 37 0a 40 40 20 2d 38  2 18:14:17.@@ -8
3a30: 37 38 2c 36 20 2b 38 37 38 2c 37 20 40 40 0a 20  78,6 +878,7 @@. 
3a40: 20 20 20 20 54 63 6c 5f 46 53 47 65 74 50 61 74      Tcl_FSGetPat
3a50: 68 54 79 70 65 2c 20 2f 2a 20 34 37 38 20 2a 2f  hType, /* 478 */
3a60: 0a 20 20 20 20 20 54 63 6c 5f 4f 75 74 70 75 74  .     Tcl_Output
3a70: 42 75 66 66 65 72 65 64 2c 20 2f 2a 20 34 37 39  Buffered, /* 479
3a80: 20 2a 2f 0a 20 20 20 20 20 54 63 6c 5f 46 53 4d   */.     Tcl_FSM
3a90: 6f 75 6e 74 73 43 68 61 6e 67 65 64 2c 20 2f 2a  ountsChanged, /*
3aa0: 20 34 38 30 20 2a 2f 0a 2b 20 20 20 20 54 63 6c   480 */.+    Tcl
3ab0: 5f 45 76 61 6c 54 6f 6b 65 6e 73 53 74 61 6e 64  _EvalTokensStand
3ac0: 61 72 64 2c 20 2f 2a 20 34 38 31 20 2a 2f 0a 20  ard, /* 481 */. 
3ad0: 7d 3b 0a 20 0a 20 2f 2a 20 21 45 4e 44 21 3a 20  };. . /* !END!: 
3ae0: 44 6f 20 6e 6f 74 20 65 64 69 74 20 61 62 6f 76  Do not edit abov
3af0: 65 20 74 68 69 73 20 6c 69 6e 65 2e 20 2a 2f 0a  e this line. */.
3b00: 49 6e 64 65 78 3a 20 74 65 73 74 73 2f 70 61 72  Index: tests/par
3b10: 73 65 2e 74 65 73 74 0a 3d 3d 3d 3d 3d 3d 3d 3d  se.test.========
3b20: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
3b30: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
3b40: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
3b50: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 20  ===========.RCS 
3b60: 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f 74  file: /cvsroot/t
3b70: 63 6c 2f 74 63 6c 2f 74 65 73 74 73 2f 70 61 72  cl/tcl/tests/par
3b80: 73 65 2e 74 65 73 74 2c 76 0a 72 65 74 72 69 65  se.test,v.retrie
3b90: 76 69 6e 67 20 72 65 76 69 73 69 6f 6e 20 31 2e  ving revision 1.
3ba0: 37 0a 64 69 66 66 20 2d 75 20 2d 72 31 2e 37 20  7.diff -u -r1.7 
3bb0: 70 61 72 73 65 2e 74 65 73 74 0a 2d 2d 2d 20 74  parse.test.--- t
3bc0: 65 73 74 73 2f 70 61 72 73 65 2e 74 65 73 74 09  ests/parse.test.
3bd0: 32 30 30 30 2f 30 34 2f 31 30 20 31 37 3a 31 39  2000/04/10 17:19
3be0: 3a 30 32 09 31 2e 37 0a 2b 2b 2b 20 74 65 73 74  :02.1.7.+++ test
3bf0: 73 2f 70 61 72 73 65 2e 74 65 73 74 09 32 30 30  s/parse.test.200
3c00: 31 2f 30 39 2f 31 32 20 31 38 3a 31 34 3a 31 37  1/09/12 18:14:17
3c10: 0a 40 40 20 2d 37 33 32 2c 36 20 2b 37 33 32 2c  .@@ -732,6 +732,
3c20: 31 30 20 40 40 0a 20 20 20 20 20 73 75 62 73 74  10 @@.     subst
3c30: 20 7b 5b 65 76 61 6c 20 7b 72 65 74 75 72 6e 20   {[eval {return 
3c40: 66 6f 6f 7d 5d 62 61 72 7d 0a 20 7d 20 66 6f 6f  foo}]bar}. } foo
3c50: 62 61 72 0a 20 0a 2b 74 65 73 74 20 70 61 72 73  bar. .+test pars
3c60: 65 2d 31 37 2e 31 20 7b 43 6f 72 72 65 63 74 20  e-17.1 {Correct 
3c70: 72 65 74 75 72 6e 20 63 6f 64 65 73 20 66 72 6f  return codes fro
3c80: 6d 20 65 72 72 6f 72 73 20 64 75 72 69 6e 67 20  m errors during 
3c90: 73 75 62 73 74 69 74 75 74 69 6f 6e 7d 20 7b 0a  substitution} {.
3ca0: 2b 20 20 20 20 63 61 74 63 68 20 7b 65 76 61 6c  +    catch {eval
3cb0: 20 7b 77 5b 63 6f 6e 74 69 6e 75 65 5d 7d 7d 0a   {w[continue]}}.
3cc0: 2b 7d 20 34 0a 2b 0a 20 23 20 63 6c 65 61 6e 75  +} 4.+. # cleanu
3cd0: 70 0a 20 63 61 74 63 68 20 7b 75 6e 73 65 74 20  p. catch {unset 
3ce0: 61 7d 0a 20 3a 3a 74 63 6c 74 65 73 74 3a 3a 63  a}. ::tcltest::c
3cf0: 6c 65 61 6e 75 70 54 65 73 74 73 0a              leanupTests.