Attachment "tip282-2.patch" to
ticket [1969722fff]
added by
dgp
2008-05-23 03:40:53.
0000: 49 6e 64 65 78 3a 20 67 65 6e 65 72 69 63 2f 74 Index: generic/t
0010: 63 6c 43 6f 6d 70 45 78 70 72 2e 63 0a 3d 3d 3d clCompExpr.c.===
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 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0060: 0a 52 43 53 20 66 69 6c 65 3a 20 2f 63 76 73 72 .RCS file: /cvsr
0070: 6f 6f 74 2f 74 63 6c 2f 74 63 6c 2f 67 65 6e 65 oot/tcl/tcl/gene
0080: 72 69 63 2f 74 63 6c 43 6f 6d 70 45 78 70 72 2e ric/tclCompExpr.
0090: 63 2c 76 0a 72 65 74 72 69 65 76 69 6e 67 20 72 c,v.retrieving r
00a0: 65 76 69 73 69 6f 6e 20 31 2e 39 37 0a 64 69 66 evision 1.97.dif
00b0: 66 20 2d 75 20 2d 72 31 2e 39 37 20 74 63 6c 43 f -u -r1.97 tclC
00c0: 6f 6d 70 45 78 70 72 2e 63 0a 2d 2d 2d 20 67 65 ompExpr.c.--- ge
00d0: 6e 65 72 69 63 2f 74 63 6c 43 6f 6d 70 45 78 70 neric/tclCompExp
00e0: 72 2e 63 09 32 38 20 46 65 62 20 32 30 30 38 20 r.c.28 Feb 2008
00f0: 32 30 3a 34 30 3a 32 34 20 2d 30 30 30 30 09 31 20:40:24 -0000.1
0100: 2e 39 37 0a 2b 2b 2b 20 67 65 6e 65 72 69 63 2f .97.+++ generic/
0110: 74 63 6c 43 6f 6d 70 45 78 70 72 2e 63 09 32 32 tclCompExpr.c.22
0120: 20 4d 61 79 20 32 30 30 38 20 32 30 3a 32 36 3a May 2008 20:26:
0130: 35 34 20 2d 30 30 30 30 0a 40 40 20 2d 32 39 32 54 -0000.@@ -292
0140: 2c 36 20 2b 32 39 32 2c 31 31 20 40 40 0a 20 09 ,6 +292,11 @@. .
0150: 09 09 09 09 20 2a 20 61 6e 64 20 45 4e 44 20 70 .... * and END p
0160: 61 69 72 73 20 77 69 74 68 20 53 54 41 52 54 2c airs with START,
0170: 20 69 6e 20 74 68 65 0a 20 09 09 09 09 09 20 2a in the. ..... *
0180: 20 73 61 6d 65 20 77 61 79 20 74 68 61 74 20 43 same way that C
0190: 4c 4f 53 45 5f 50 41 52 45 4e 20 70 61 69 72 73 LOSE_PAREN pairs
01a0: 20 77 69 74 68 0a 20 09 09 09 09 09 20 2a 20 4f with. ..... * O
01b0: 50 45 4e 5f 50 41 52 45 4e 2e 20 2a 2f 0a 2b 23 PEN_PAREN. */.+#
01c0: 64 65 66 69 6e 65 20 53 45 50 41 52 41 54 4f 52 define SEPARATOR
01d0: 09 28 20 42 49 4e 41 52 59 20 7c 20 32 39 29 0a .( BINARY | 29).
01e0: 2b 23 64 65 66 69 6e 65 20 41 53 53 49 47 4e 09 +#define ASSIGN.
01f0: 09 28 20 42 49 4e 41 52 59 20 7c 20 33 30 29 09 .( BINARY | 30).
0200: 2f 2a 20 41 53 53 49 47 4e 2c 20 6c 69 6b 65 20 /* ASSIGN, like
0210: 45 58 50 4f 4e 2c 20 69 73 20 72 69 67 68 74 0a EXPON, is right.
0220: 2b 09 09 09 09 09 20 2a 20 61 73 73 6f 63 69 61 +..... * associa
0230: 74 69 76 65 2c 20 61 6e 64 20 74 68 69 73 20 64 tive, and this d
0240: 69 73 74 69 6e 63 74 69 6f 6e 0a 2b 09 09 09 09 istinction.+....
0250: 09 20 2a 20 69 73 20 63 6f 64 65 64 20 64 69 72 . * is coded dir
0260: 65 63 74 6c 79 20 69 6e 20 50 61 72 73 65 45 78 ectly in ParseEx
0270: 70 72 28 29 20 2a 2f 0a 2b 0a 20 2f 2a 0a 20 20 pr() */.+. /*.
0280: 2a 20 57 68 65 6e 20 50 61 72 73 65 45 78 70 72 * When ParseExpr
0290: 28 29 20 62 75 69 6c 64 73 20 74 68 65 20 70 61 () builds the pa
02a0: 72 73 65 20 74 72 65 65 20 69 74 20 6d 75 73 74 rse tree it must
02b0: 20 63 68 6f 6f 73 65 20 77 68 69 63 68 20 6f 70 choose which op
02c0: 65 72 61 6e 64 73 20 74 6f 0a 20 20 2a 20 63 6f erands to. * co
02d0: 6e 6e 65 63 74 20 74 6f 20 77 68 69 63 68 20 6f nnect to which o
02e0: 70 65 72 61 74 6f 72 73 2e 20 20 54 68 69 73 20 perators. This
02f0: 69 73 20 64 6f 6e 65 20 61 63 63 6f 72 64 69 6e is done accordin
0300: 67 20 74 6f 20 6f 70 65 72 61 74 6f 72 20 70 72 g to operator pr
0310: 65 63 65 64 65 6e 63 65 2e 0a 40 40 20 2d 33 30 ecedence..@@ -30
0320: 38 2c 36 20 2b 33 31 33 2c 38 20 40 40 0a 20 20 8,6 +313,8 @@.
0330: 20 20 20 50 52 45 43 5f 43 4c 4f 53 45 5f 50 41 PREC_CLOSE_PA
0340: 52 45 4e 2c 09 2f 2a 20 22 29 22 20 2a 2f 0a 20 REN,./* ")" */.
0350: 20 20 20 20 50 52 45 43 5f 4f 50 45 4e 5f 50 41 PREC_OPEN_PA
0360: 52 45 4e 2c 09 2f 2a 20 22 28 22 20 2a 2f 0a 20 REN,./* "(" */.
0370: 20 20 20 20 50 52 45 43 5f 43 4f 4d 4d 41 2c 09 PREC_COMMA,.
0380: 09 2f 2a 20 22 2c 22 20 2a 2f 0a 2b 20 20 20 20 ./* "," */.+
0390: 50 52 45 43 5f 53 45 50 41 52 41 54 4f 52 2c 09 PREC_SEPARATOR,.
03a0: 2f 2a 20 22 3b 22 20 2a 2f 0a 2b 20 20 20 20 50 /* ";" */.+ P
03b0: 52 45 43 5f 41 53 53 49 47 4e 2c 09 2f 2a 20 22 REC_ASSIGN,./* "
03c0: 3d 22 20 2a 2f 0a 20 20 20 20 20 50 52 45 43 5f =" */. PREC_
03d0: 43 4f 4e 44 49 54 49 4f 4e 41 4c 2c 09 2f 2a 20 CONDITIONAL,./*
03e0: 22 3f 22 2c 20 22 3a 22 20 2a 2f 0a 20 20 20 20 "?", ":" */.
03f0: 20 50 52 45 43 5f 4f 52 2c 09 09 2f 2a 20 22 7c PREC_OR,../* "|
0400: 7c 22 20 2a 2f 0a 20 20 20 20 20 50 52 45 43 5f |" */. PREC_
0410: 41 4e 44 2c 09 09 2f 2a 20 22 26 26 22 20 2a 2f AND,../* "&&" */
0420: 0a 40 40 20 2d 33 36 35 2c 38 20 2b 33 37 32 2c .@@ -365,8 +372,
0430: 31 30 20 40 40 0a 20 20 20 20 20 50 52 45 43 5f 10 @@. PREC_
0440: 45 51 55 41 4c 2c 09 09 2f 2a 20 4e 4f 54 5f 49 EQUAL,../* NOT_I
0450: 4e 5f 4c 49 53 54 20 2a 2f 0a 20 20 20 20 20 50 N_LIST */. P
0460: 52 45 43 5f 43 4c 4f 53 45 5f 50 41 52 45 4e 2c REC_CLOSE_PAREN,
0470: 09 2f 2a 20 43 4c 4f 53 45 5f 50 41 52 45 4e 20 ./* CLOSE_PAREN
0480: 2a 2f 0a 20 20 20 20 20 50 52 45 43 5f 45 4e 44 */. PREC_END
0490: 2c 09 09 2f 2a 20 45 4e 44 20 2a 2f 0a 2b 20 20 ,../* END */.+
04a0: 20 20 50 52 45 43 5f 53 45 50 41 52 41 54 4f 52 PREC_SEPARATOR
04b0: 2c 09 2f 2a 20 53 45 50 41 52 41 54 4f 52 20 2a ,./* SEPARATOR *
04c0: 2f 0a 2b 20 20 20 20 50 52 45 43 5f 41 53 53 49 /.+ PREC_ASSI
04d0: 47 4e 2c 09 2f 2a 20 41 53 53 49 47 4e 20 2a 2f GN,./* ASSIGN */
04e0: 0a 20 20 20 20 20 2f 2a 20 45 78 70 61 6e 73 69 . /* Expansi
04f0: 6f 6e 20 72 6f 6f 6d 20 66 6f 72 20 6d 6f 72 65 on room for more
0500: 20 62 69 6e 61 72 79 20 6f 70 65 72 61 74 6f 72 binary operator
0510: 73 20 2a 2f 0a 2d 20 20 20 20 30 2c 20 20 30 2c s */.- 0, 0,
0520: 20 20 30 2c 0a 2b 20 20 20 20 30 2c 0a 20 20 20 0,.+ 0,.
0530: 20 20 30 2c 20 20 30 2c 20 20 30 2c 20 20 30 2c 0, 0, 0, 0,
0540: 20 20 30 2c 20 20 30 2c 20 20 30 2c 20 20 30 2c 0, 0, 0, 0,
0550: 20 20 30 2c 20 20 30 2c 20 20 30 2c 20 20 30 2c 0, 0, 0, 0,
0560: 20 20 30 2c 20 20 30 2c 20 20 30 2c 20 20 30 2c 0, 0, 0, 0,
0570: 0a 20 20 20 20 20 30 2c 20 20 30 2c 20 20 30 2c . 0, 0, 0,
0580: 20 20 30 2c 20 20 30 2c 20 20 30 2c 20 20 30 2c 0, 0, 0, 0,
0590: 20 20 30 2c 20 20 30 2c 20 20 30 2c 20 20 30 2c 0, 0, 0, 0,
05a0: 20 20 30 2c 20 20 30 2c 20 20 30 2c 20 20 30 2c 0, 0, 0, 0,
05b0: 20 20 30 2c 0a 20 20 20 20 20 30 2c 20 20 0a 40 0,. 0, .@
05c0: 40 20 2d 34 32 30 2c 38 20 2b 34 32 39 2c 31 30 @ -420,8 +429,10
05d0: 20 40 40 0a 20 20 20 20 20 49 4e 53 54 5f 4c 49 @@. INST_LI
05e0: 53 54 5f 4e 4f 54 5f 49 4e 2c 09 2f 2a 20 4e 4f ST_NOT_IN,./* NO
05f0: 54 5f 49 4e 5f 4c 49 53 54 20 2a 2f 0a 20 20 20 T_IN_LIST */.
0600: 20 20 30 2c 09 09 09 2f 2a 20 43 4c 4f 53 45 5f 0,.../* CLOSE_
0610: 50 41 52 45 4e 20 2a 2f 0a 20 20 20 20 20 30 2c PAREN */. 0,
0620: 09 09 09 2f 2a 20 45 4e 44 20 2a 2f 0a 2b 20 20 .../* END */.+
0630: 20 20 30 2c 09 09 09 2f 2a 20 53 45 50 41 52 41 0,.../* SEPARA
0640: 54 4f 52 20 2a 2f 0a 2b 20 20 20 20 30 2c 09 09 TOR */.+ 0,..
0650: 09 2f 2a 20 41 53 53 49 47 4e 20 2a 2f 0a 20 20 ./* ASSIGN */.
0660: 20 20 20 2f 2a 20 45 78 70 61 6e 73 69 6f 6e 20 /* Expansion
0670: 72 6f 6f 6d 20 66 6f 72 20 6d 6f 72 65 20 62 69 room for more bi
0680: 6e 61 72 79 20 6f 70 65 72 61 74 6f 72 73 20 2a nary operators *
0690: 2f 0a 2d 20 20 20 20 30 2c 20 20 30 2c 20 20 30 /.- 0, 0, 0
06a0: 2c 0a 2b 20 20 20 20 30 2c 0a 20 20 20 20 20 30 ,.+ 0,. 0
06b0: 2c 20 20 30 2c 20 20 30 2c 20 20 30 2c 20 20 30 , 0, 0, 0, 0
06c0: 2c 20 20 30 2c 20 20 30 2c 20 20 30 2c 20 20 30 , 0, 0, 0, 0
06d0: 2c 20 20 30 2c 20 20 30 2c 20 20 30 2c 20 20 30 , 0, 0, 0, 0
06e0: 2c 20 20 30 2c 20 20 30 2c 20 20 30 2c 0a 20 20 , 0, 0, 0,.
06f0: 20 20 20 30 2c 20 20 30 2c 20 20 30 2c 20 20 30 0, 0, 0, 0
0700: 2c 20 20 30 2c 20 20 30 2c 20 20 30 2c 20 20 30 , 0, 0, 0, 0
0710: 2c 20 20 30 2c 20 20 30 2c 20 20 30 2c 20 20 30 , 0, 0, 0, 0
0720: 2c 20 20 30 2c 20 20 30 2c 20 20 30 2c 20 20 30 , 0, 0, 0, 0
0730: 2c 0a 20 20 20 20 20 30 2c 20 20 0a 40 40 20 2d ,. 0, .@@ -
0740: 34 36 36 2c 39 20 2b 34 37 37 2c 39 20 40 40 0a 466,9 +477,9 @@.
0750: 20 09 43 4f 4d 4d 41 09 09 2f 2a 20 2c 20 2a 2f .COMMA../* , */
0760: 2c 09 4d 49 4e 55 53 09 09 2f 2a 20 2d 20 2a 2f ,.MINUS../* - */
0770: 2c 0a 20 09 30 09 09 2f 2a 20 2e 20 2a 2f 2c 09 ,. .0../* . */,.
0780: 44 49 56 49 44 45 09 09 2f 2a 20 2f 20 2a 2f 2c DIVIDE../* / */,
0790: 0a 20 09 30 2c 20 30 2c 20 30 2c 20 30 2c 20 30 . .0, 0, 0, 0, 0
07a0: 2c 20 30 2c 20 30 2c 20 30 2c 20 30 2c 20 30 2c , 0, 0, 0, 0, 0,
07b0: 09 09 09 2f 2a 20 30 2d 39 20 2a 2f 0a 2d 09 43 .../* 0-9 */.-.C
07c0: 4f 4c 4f 4e 09 09 2f 2a 20 3a 20 2a 2f 2c 09 49 OLON../* : */,.I
07d0: 4e 56 41 4c 49 44 09 09 2f 2a 20 3b 20 2a 2f 2c NVALID../* ; */,
07e0: 0a 2b 09 43 4f 4c 4f 4e 09 09 2f 2a 20 3a 20 2a .+.COLON../* : *
07f0: 2f 2c 09 53 45 50 41 52 41 54 4f 52 09 2f 2a 20 /,.SEPARATOR./*
0800: 3b 20 2a 2f 2c 0a 20 09 30 09 09 2f 2a 20 3c 20 ; */,. .0../* <
0810: 6f 72 20 3c 3c 20 6f 72 20 3c 3d 20 2a 2f 2c 0a or << or <= */,.
0820: 2d 09 30 09 09 2f 2a 20 3d 3d 20 6f 72 20 49 4e -.0../* == or IN
0830: 56 41 4c 49 44 20 2a 2f 2c 0a 2b 09 30 09 09 2f VALID */,.+.0../
0840: 2a 20 3d 20 6f 72 20 3d 3d 20 2a 2f 2c 0a 20 09 * = or == */,. .
0850: 30 09 09 2f 2a 20 3e 20 6f 72 20 3e 3e 20 6f 72 0../* > or >> or
0860: 20 3e 3d 20 2a 2f 2c 0a 20 09 51 55 45 53 54 49 >= */,. .QUESTI
0870: 4f 4e 09 2f 2a 20 3f 20 2a 2f 2c 09 49 4e 56 41 ON./* ? */,.INVA
0880: 4c 49 44 09 09 2f 2a 20 40 20 2a 2f 2c 0a 20 09 LID../* @ */,. .
0890: 30 2c 20 30 2c 20 30 2c 20 30 2c 20 30 2c 20 30 0, 0, 0, 0, 0, 0
08a0: 2c 20 30 2c 20 30 2c 20 30 2c 20 30 2c 20 30 2c , 0, 0, 0, 0, 0,
08b0: 20 30 2c 20 30 2c 09 09 2f 2a 20 41 2d 4d 20 2a 0, 0,../* A-M *
08c0: 2f 0a 40 40 20 2d 31 31 35 35 2c 36 20 2b 31 31 /.@@ -1155,6 +11
08d0: 36 36 2c 31 31 20 40 40 0a 20 09 09 09 62 72 65 66,11 @@. ...bre
08e0: 61 6b 3b 0a 20 09 09 20 20 20 20 7d 0a 20 0a 2b ak;. .. }. .+
08f0: 09 09 20 20 20 20 2f 2a 20 52 69 67 68 74 20 61 .. /* Right a
0900: 73 73 6f 63 69 61 74 69 6f 6e 20 72 75 6c 65 73 ssociation rules
0910: 20 66 6f 72 20 61 73 73 69 67 6e 6d 65 6e 74 2e for assignment.
0920: 20 2a 2f 0a 2b 09 09 20 20 20 20 69 66 20 28 6c */.+.. if (l
0930: 65 78 65 6d 65 20 3d 3d 20 41 53 53 49 47 4e 29 exeme == ASSIGN)
0940: 20 7b 0a 2b 09 09 09 62 72 65 61 6b 3b 0a 2b 09 {.+...break;.+.
0950: 09 20 20 20 20 7d 0a 2b 0a 20 09 09 20 20 20 20 . }.+. ..
0960: 2f 2a 0a 20 09 09 20 20 20 20 20 2a 20 53 70 65 /*. .. * Spe
0970: 63 69 61 6c 20 61 73 73 6f 63 69 61 74 69 6f 6e cial association
0980: 20 72 75 6c 65 73 20 66 6f 72 20 74 68 65 20 63 rules for the c
0990: 6f 6e 64 69 74 69 6f 6e 61 6c 20 6f 70 65 72 61 onditional opera
09a0: 74 6f 72 73 2e 0a 20 09 09 20 20 20 20 20 2a 20 tors.. .. *
09b0: 54 68 65 20 22 3f 22 20 61 6e 64 20 22 3a 22 20 The "?" and ":"
09c0: 6f 70 65 72 61 74 6f 72 73 20 68 61 76 65 20 65 operators have e
09d0: 71 75 61 6c 20 70 72 65 63 65 64 65 6e 63 65 2c qual precedence,
09e0: 20 62 75 74 0a 40 40 20 2d 31 32 32 39 2c 36 20 but.@@ -1229,6
09f0: 2b 31 32 34 35 2c 31 36 20 40 40 0a 20 09 09 20 +1245,16 @@. ..
0a00: 20 20 20 6e 6f 64 65 73 5b 63 6f 6d 70 6c 65 74 nodes[complet
0a10: 65 5d 2e 63 6f 6e 73 74 61 6e 74 20 3d 20 69 6e e].constant = in
0a20: 63 6f 6d 70 6c 65 74 65 50 74 72 2d 3e 63 6f 6e completePtr->con
0a30: 73 74 61 6e 74 3b 0a 20 09 09 7d 0a 20 0a 2b 09 stant;. ..}. .+.
0a40: 09 2f 2a 0a 2b 09 09 20 2a 20 57 65 20 64 65 63 ./*.+.. * We dec
0a50: 6c 61 72 65 20 61 6c 6c 20 41 53 53 49 47 4e 20 lare all ASSIGN
0a60: 6f 70 65 72 61 74 6f 72 73 20 74 6f 20 62 65 20 operators to be
0a70: 6e 6f 6e 2d 63 6f 6e 73 74 61 6e 74 0a 2b 09 09 non-constant.+..
0a80: 20 2a 20 65 78 70 72 65 73 73 69 6f 6e 73 20 62 * expressions b
0a90: 65 63 61 75 73 65 20 77 65 20 64 6f 20 6e 6f 74 ecause we do not
0aa0: 20 77 61 6e 74 20 74 6f 20 6f 70 74 69 6d 69 7a want to optimiz
0ab0: 65 20 74 68 65 69 72 0a 2b 09 09 20 2a 20 76 61 e their.+.. * va
0ac0: 72 69 61 62 6c 65 2d 73 65 74 74 69 6e 67 20 73 riable-setting s
0ad0: 69 64 65 20 65 66 66 65 63 74 73 20 6f 75 74 20 ide effects out
0ae0: 6f 66 20 65 78 69 73 74 65 6e 63 65 2e 0a 2b 09 of existence..+.
0af0: 09 20 2a 2f 0a 2b 0a 2b 09 09 69 66 20 28 69 6e . */.+.+..if (in
0b00: 63 6f 6d 70 6c 65 74 65 50 74 72 2d 3e 6c 65 78 completePtr->lex
0b10: 65 6d 65 20 3d 3d 20 41 53 53 49 47 4e 29 20 7b eme == ASSIGN) {
0b20: 0a 2b 09 09 20 20 20 20 69 6e 63 6f 6d 70 6c 65 .+.. incomple
0b30: 74 65 50 74 72 2d 3e 63 6f 6e 73 74 61 6e 74 20 tePtr->constant
0b40: 3d 20 30 3b 0a 2b 09 09 7d 0a 2b 0a 20 09 09 69 = 0;.+..}.+. ..i
0b50: 66 20 28 69 6e 63 6f 6d 70 6c 65 74 65 50 74 72 f (incompletePtr
0b60: 2d 3e 6c 65 78 65 6d 65 20 3d 3d 20 53 54 41 52 ->lexeme == STAR
0b70: 54 29 20 7b 0a 20 0a 20 09 09 20 20 20 20 2f 2a T) {. . .. /*
0b80: 0a 40 40 20 2d 31 38 34 32 2c 37 20 2b 31 38 36 .@@ -1842,7 +186
0b90: 38 2c 37 20 40 40 0a 20 09 20 20 20 20 2a 6c 65 8,7 @@. . *le
0ba0: 78 65 6d 65 50 74 72 20 3d 20 45 51 55 41 4c 3b xemePtr = EQUAL;
0bb0: 0a 20 09 20 20 20 20 72 65 74 75 72 6e 20 32 3b . . return 2;
0bc0: 0a 20 09 7d 0a 2d 09 2a 6c 65 78 65 6d 65 50 74 . .}.-.*lexemePt
0bd0: 72 20 3d 20 49 4e 43 4f 4d 50 4c 45 54 45 3b 0a r = INCOMPLETE;.
0be0: 2b 09 2a 6c 65 78 65 6d 65 50 74 72 20 3d 20 41 +.*lexemePtr = A
0bf0: 53 53 49 47 4e 3b 0a 20 09 72 65 74 75 72 6e 20 SSIGN;. .return
0c00: 31 3b 0a 20 0a 20 20 20 20 20 63 61 73 65 20 27 1;. . case '
0c10: 21 27 3a 0a 40 40 20 2d 32 32 31 33 2c 36 20 2b !':.@@ -2213,6 +
0c20: 32 32 33 39 2c 39 20 40 40 0a 20 09 20 20 20 20 2239,9 @@. .
0c30: 63 61 73 65 20 4f 52 3a 0a 20 09 09 54 63 6c 45 case OR:. ..TclE
0c40: 6d 69 74 46 6f 72 77 61 72 64 4a 75 6d 70 28 65 mitForwardJump(e
0c50: 6e 76 50 74 72 2c 20 54 43 4c 5f 54 52 55 45 5f nvPtr, TCL_TRUE_
0c60: 4a 55 4d 50 2c 20 26 28 6a 75 6d 70 50 74 72 2d JUMP, &(jumpPtr-
0c70: 3e 6a 75 6d 70 29 29 3b 0a 20 09 09 62 72 65 61 >jump));. ..brea
0c80: 6b 3b 0a 2b 09 20 20 20 20 63 61 73 65 20 53 45 k;.+. case SE
0c90: 50 41 52 41 54 4f 52 3a 0a 2b 09 09 54 63 6c 45 PARATOR:.+..TclE
0ca0: 6d 69 74 4f 70 63 6f 64 65 28 49 4e 53 54 5f 50 mitOpcode(INST_P
0cb0: 4f 50 2c 20 65 6e 76 50 74 72 29 3b 0a 2b 09 09 OP, envPtr);.+..
0cc0: 62 72 65 61 6b 3b 0a 20 09 20 20 20 20 7d 0a 20 break;. . }.
0cd0: 09 7d 20 65 6c 73 65 20 7b 0a 20 09 20 20 20 20 .} else {. .
0ce0: 73 77 69 74 63 68 20 28 6e 6f 64 65 50 74 72 2d switch (nodePtr-
0cf0: 3e 6c 65 78 65 6d 65 29 20 7b 0a 40 40 20 2d 32 >lexeme) {.@@ -2
0d00: 32 32 32 2c 37 20 2b 32 32 35 31 2c 31 38 20 40 222,7 +2251,18 @
0d10: 40 0a 20 09 09 20 20 20 20 54 63 6c 45 6d 69 74 @. .. TclEmit
0d20: 4f 70 63 6f 64 65 28 49 4e 53 54 5f 54 52 59 5f Opcode(INST_TRY_
0d30: 43 56 54 5f 54 4f 5f 4e 55 4d 45 52 49 43 2c 20 CVT_TO_NUMERIC,
0d40: 65 6e 76 50 74 72 29 3b 0a 20 09 09 7d 0a 20 09 envPtr);. ..}. .
0d50: 09 62 72 65 61 6b 3b 0a 2b 09 20 20 20 20 63 61 .break;.+. ca
0d60: 73 65 20 41 53 53 49 47 4e 3a 0a 2b 09 09 69 66 se ASSIGN:.+..if
0d70: 20 28 63 6f 6e 76 65 72 74 29 20 7b 0a 2b 09 09 (convert) {.+..
0d80: 20 20 20 20 2f 2a 0a 2b 09 09 20 20 20 20 20 2a /*.+.. *
0d90: 20 4d 61 6b 65 20 73 75 72 65 20 77 65 20 61 73 Make sure we as
0da0: 73 69 67 6e 20 74 6f 20 61 20 76 61 72 69 61 62 sign to a variab
0db0: 6c 65 20 6f 6e 6c 79 20 76 61 6c 75 65 73 20 74 le only values t
0dc0: 68 61 74 0a 2b 09 09 20 20 20 20 20 2a 20 68 61 hat.+.. * ha
0dd0: 76 65 20 62 65 65 6e 20 6e 75 6d 65 72 69 63 61 ve been numerica
0de0: 6c 6c 79 20 6e 6f 72 6d 61 6c 69 7a 65 64 20 69 lly normalized i
0df0: 6e 20 74 68 65 20 65 78 70 72 20 77 61 79 2e 0a n the expr way..
0e00: 2b 09 09 20 20 20 20 20 2a 2f 0a 2b 09 09 20 20 +.. */.+..
0e10: 20 20 54 63 6c 45 6d 69 74 4f 70 63 6f 64 65 28 TclEmitOpcode(
0e20: 49 4e 53 54 5f 54 52 59 5f 43 56 54 5f 54 4f 5f INST_TRY_CVT_TO_
0e30: 4e 55 4d 45 52 49 43 2c 20 65 6e 76 50 74 72 29 NUMERIC, envPtr)
0e40: 3b 0a 2b 09 09 7d 0a 2b 09 09 54 63 6c 45 6d 69 ;.+..}.+..TclEmi
0e50: 74 4f 70 63 6f 64 65 28 49 4e 53 54 5f 53 54 4f tOpcode(INST_STO
0e60: 52 45 5f 53 54 4b 2c 20 65 6e 76 50 74 72 29 3b RE_STK, envPtr);
0e70: 0a 2b 09 09 62 72 65 61 6b 3b 0a 20 09 20 20 20 .+..break;. .
0e80: 20 63 61 73 65 20 4f 50 45 4e 5f 50 41 52 45 4e case OPEN_PAREN
0e90: 3a 0a 2b 09 20 20 20 20 63 61 73 65 20 53 45 50 :.+. case SEP
0ea0: 41 52 41 54 4f 52 3a 0a 20 0a 20 09 09 2f 2a 20 ARATOR:. . ../*
0eb0: 64 6f 20 6e 6f 74 68 69 6e 67 20 2a 2f 0a 20 09 do nothing */. .
0ec0: 09 62 72 65 61 6b 3b 0a .break;.