On Wednesday, November 21, 2018 at 11:01:49 AM UTC-8, Rich wrote:
> 1) Stop using google groups (it is simply the most awful UI for
> accessing Usenet news ever created).
>
I will look into that, but does this mean that others see the correct
formatting, while only I see it messed up using google groups?
If others see it mis-formated, it does seem that one can copy/paste into
an editor, so below are a few traces. Sorry, but some lines are longer than
72 columns.
>It would be interesting to get the full tree, including set with nested [expr].
see below
First, this isn't working quite right
% set var (1+2)xxx
extra characters after close-brace
%
I'm not getting this error reported correctly, though I don't know why.
if (src[-1] == '"') {
if (interp != NULL) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"extra characters after close-quote", -1));
}
parsePtr->errorType = TCL_PARSE_QUOTE_EXTRA;
} else if (src[-1] == '(') {
if (interp != NULL) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"extra characters after close-paren", -1));
}
parsePtr->errorType = TCL_PARSE_QUOTE_EXTRA;
} else {
if (interp != NULL) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"extra characters after close-brace", -1));
}
parsePtr->errorType = TCL_PARSE_BRACE_EXTRA;
}
parsePtr->term = src;
goto error;
==================================
Here are two parse traces, copy/paste to editor if formatting is off. Here goes....
(I suppress full trace when the interp arg is null.)
%
% set var [expr {1+2}]
numBytes= 12 nested= 1 ret= 0 start= 7fe331 <expr {1+2}]
>
--- suppress p-print, interp= 0 strlen= 12 <expr {1+2}]>
numBytes= 21 nested= 0 ret= 0 start= 7fe328 <set var [expr {1+2}]
>
--- suppress p-print, interp= 0 strlen= 21 <set var [expr {1+2}]
>
numBytes= 11 nested= 1 ret= 0 start= 7fe331 <expr {1+2}]>
------------------ parse block interp= 7927b8 parse= 7996e0
commandStart = e commandSize = 11
tokenPtr = 799718 staticTokens = 799718
numWords = 2 numTokens = 4
tokensAvailable = 20 errorType = 0
interp = 007927b8 incomplete = 0
end = 7fe33c <>
string = 7fe331 <expr {1+2}]>
term = 5d <]>
------------------
-- tk @ 799718 ( 0) type= 2 SIMPLE_WORD size= 4 numCom= 1 start= 007fe331 <expr>
-- tk @ 799728 ( 1) type= 4 TEXT size= 4 numCom= 0 start= 007fe331 <expr>
-- tk @ 799738 ( 2) type= 2 SIMPLE_WORD size= 5 numCom= 1 start= 007fe336 <{1+2}>
-- tk @ 799748 ( 3) type= 4 TEXT size= 3 numCom= 0 start= 007fe337 <1+2>
------------------
numBytes= 20 nested= 0 ret= 0 start= 7fe328 <set var [expr {1+2}]>
------------------ parse block interp= 7927b8 parse= bfd3393c
commandStart = s commandSize = 20
tokenPtr = bfd33974 staticTokens = bfd33974
numWords = 3 numTokens = 6
tokensAvailable = 20 errorType = 0
interp = 007927b8 incomplete = 0
end = 7fe33c <>
string = 7fe328 <set var [expr {1+2}]>
term = 00 <>
------------------
-- tk @ bfd33974 ( 0) type= 2 SIMPLE_WORD size= 3 numCom= 1 start= 007fe328 <set>
-- tk @ bfd33984 ( 1) type= 4 TEXT size= 3 numCom= 0 start= 007fe328 <set>
-- tk @ bfd33994 ( 2) type= 2 SIMPLE_WORD size= 3 numCom= 1 start= 007fe32c <var>
-- tk @ bfd339a4 ( 3) type= 4 TEXT size= 3 numCom= 0 start= 007fe32c <var>
-- tk @ bfd339b4 ( 4) type= 1 WORD size= 12 numCom= 1 start= 007fe330 <[expr {1+2}]>
-- tk @ bfd339c4 ( 5) type= 16 COMMAND size= 12 numCom= 0 start= 007fe330 <[expr {1+2}]>
------------------
numBytes= 10 nested= 0 ret= 0 start= 7fe331 <expr {1+2}>
------------------ parse block interp= 7927b8 parse= bfd3347c
commandStart = e commandSize = 10
tokenPtr = bfd334b4 staticTokens = bfd334b4
numWords = 2 numTokens = 4
tokensAvailable = 20 errorType = 0
interp = 007927b8 incomplete = 0
end = 7fe33b <]>
string = 7fe331 <expr {1+2}>
term = 5d <]>
------------------
-- tk @ bfd334b4 ( 0) type= 2 SIMPLE_WORD size= 4 numCom= 1 start= 007fe331 <expr>
-- tk @ bfd334c4 ( 1) type= 4 TEXT size= 4 numCom= 0 start= 007fe331 <expr>
-- tk @ bfd334d4 ( 2) type= 2 SIMPLE_WORD size= 5 numCom= 1 start= 007fe336 <{1+2}>
-- tk @ bfd334e4 ( 3) type= 4 TEXT size= 3 numCom= 0 start= 007fe337 <1+2>
------------------
numBytes= 11 nested= 1 ret= 0 start= 7fe331 <expr {1+2}]>
------------------ parse block interp= 7927b8 parse= 7996e0
commandStart = e commandSize = 11
tokenPtr = 799718 staticTokens = 799718
numWords = 2 numTokens = 4
tokensAvailable = 20 errorType = 0
interp = 007927b8 incomplete = 0
end = 7fe33c <>
string = 7fe331 <expr {1+2}]>
term = 5d <]>
------------------
-- tk @ 799718 ( 0) type= 2 SIMPLE_WORD size= 4 numCom= 1 start= 007fe331 <expr>
-- tk @ 799728 ( 1) type= 4 TEXT size= 4 numCom= 0 start= 007fe331 <expr>
-- tk @ 799738 ( 2) type= 2 SIMPLE_WORD size= 5 numCom= 1 start= 007fe336 <{1+2}>
-- tk @ 799748 ( 3) type= 4 TEXT size= 3 numCom= 0 start= 007fe337 <1+2>
------------------
numBytes= 20 nested= 0 ret= 0 start= 7fe328 <set var [expr {1+2}]>
------------------ parse block interp= 7927b8 parse= bfd3393c
commandStart = s commandSize = 20
tokenPtr = bfd33974 staticTokens = bfd33974
numWords = 3 numTokens = 6
tokensAvailable = 20 errorType = 0
interp = 007927b8 incomplete = 0
end = 7fe33c <>
string = 7fe328 <set var [expr {1+2}]>
term = 00 <>
------------------
-- tk @ bfd33974 ( 0) type= 2 SIMPLE_WORD size= 3 numCom= 1 start= 007fe328 <set>
-- tk @ bfd33984 ( 1) type= 4 TEXT size= 3 numCom= 0 start= 007fe328 <set>
-- tk @ bfd33994 ( 2) type= 2 SIMPLE_WORD size= 3 numCom= 1 start= 007fe32c <var>
-- tk @ bfd339a4 ( 3) type= 4 TEXT size= 3 numCom= 0 start= 007fe32c <var>
-- tk @ bfd339b4 ( 4) type= 1 WORD size= 12 numCom= 1 start= 007fe330 <[expr {1+2}]>
-- tk @ bfd339c4 ( 5) type= 16 COMMAND size= 12 numCom= 0 start= 007fe330 <[expr {1+2}]>
------------------
numBytes= 10 nested= 0 ret= 0 start= 7fe331 <expr {1+2}>
------------------ parse block interp= 7927b8 parse= bfd3347c
commandStart = e commandSize = 10
tokenPtr = bfd334b4 staticTokens = bfd334b4
numWords = 2 numTokens = 4
tokensAvailable = 20 errorType = 0
interp = 007927b8 incomplete = 0
end = 7fe33b <]>
string = 7fe331 <expr {1+2}>
term = 5d <]>
------------------
-- tk @ bfd334b4 ( 0) type= 2 SIMPLE_WORD size= 4 numCom= 1 start= 007fe331 <expr>
-- tk @ bfd334c4 ( 1) type= 4 TEXT size= 4 numCom= 0 start= 007fe331 <expr>
-- tk @ bfd334d4 ( 2) type= 2 SIMPLE_WORD size= 5 numCom= 1 start= 007fe336 <{1+2}>
-- tk @ bfd334e4 ( 3) type= 4 TEXT size= 3 numCom= 0 start= 007fe337 <1+2>
------------------
3
=================================
Here's a trace, after implementing ()'s as suggested, but no tokens yet.
So, at this point, () work just like {} - with minimal testing only though
% set a [list (1+2) (3+4)]
numBytes= 18 nested= 1 ret= 0 start= 7fe42f <list (1+2) (3+4)]
>
--- suppress p-print, interp= 0 strlen= 18 <list (1+2) (3+4)]>
numBytes= 25 nested= 0 ret= 0 start= 7fe428 <set a [list (1+2) (3+4)]
>
--- suppress p-print, interp= 0 strlen= 25 <set a [list (1+2) (3+4)]
>
numBytes= 17 nested= 1 ret= 0 start= 7fe42f <list (1+2) (3+4)]>
------------------ parse block interp= 7927b8 parse= 7996e0
commandStart = l commandSize = 17
tokenPtr = 799718 staticTokens = 799718
numWords = 3 numTokens = 6
tokensAvailable = 20 errorType = 0
interp = 007927b8 incomplete = 0
end = 7fe440 <>
string = 7fe42f <list (1+2) (3+4)]>
term = 5d <]>
------------------
-- tk @ 799718 ( 0) type= 2 SIMPLE_WORD size= 4 numCom= 1 start= 007fe42f <list>
-- tk @ 799728 ( 1) type= 4 TEXT size= 4 numCom= 0 start= 007fe42f <list>
-- tk @ 799738 ( 2) type= 2 SIMPLE_WORD size= 5 numCom= 1 start= 007fe434 <(1+2)>
-- tk @ 799748 ( 3) type= 4 TEXT size= 3 numCom= 0 start= 007fe435 <1+2>
-- tk @ 799758 ( 4) type= 2 SIMPLE_WORD size= 5 numCom= 1 start= 007fe43a <(3+4)>
-- tk @ 799768 ( 5) type= 4 TEXT size= 3 numCom= 0 start= 007fe43b <3+4>
------------------
numBytes= 24 nested= 0 ret= 0 start= 7fe428 <set a [list (1+2) (3+4)]>
------------------ parse block interp= 7927b8 parse= bfd3393c
commandStart = s commandSize = 24
tokenPtr = bfd33974 staticTokens = bfd33974
numWords = 3 numTokens = 6
tokensAvailable = 20 errorType = 0
interp = 007927b8 incomplete = 0
end = 7fe440 <>
string = 7fe428 <set a [list (1+2) (3+4)]>
term = 00 <>
------------------
-- tk @ bfd33974 ( 0) type= 2 SIMPLE_WORD size= 3 numCom= 1 start= 007fe428 <set>
-- tk @ bfd33984 ( 1) type= 4 TEXT size= 3 numCom= 0 start= 007fe428 <set>
-- tk @ bfd33994 ( 2) type= 2 SIMPLE_WORD size= 1 numCom= 1 start= 007fe42c <a>
-- tk @ bfd339a4 ( 3) type= 4 TEXT size= 1 numCom= 0 start= 007fe42c <a>
-- tk @ bfd339b4 ( 4) type= 1 WORD size= 18 numCom= 1 start= 007fe42e <[list (1+2) (3+4)]>
-- tk @ bfd339c4 ( 5) type= 16 COMMAND size= 18 numCom= 0 start= 007fe42e <[list (1+2) (3+4)]>
------------------
numBytes= 16 nested= 0 ret= 0 start= 7fe42f <list (1+2) (3+4)>
------------------ parse block interp= 7927b8 parse= bfd3347c
commandStart = l commandSize = 16
tokenPtr = bfd334b4 staticTokens = bfd334b4
numWords = 3 numTokens = 6
tokensAvailable = 20 errorType = 0
interp = 007927b8 incomplete = 0
end = 7fe43f <]>
string = 7fe42f <list (1+2) (3+4)>
term = 5d <]>
------------------
-- tk @ bfd334b4 ( 0) type= 2 SIMPLE_WORD size= 4 numCom= 1 start= 007fe42f <list>
-- tk @ bfd334c4 ( 1) type= 4 TEXT size= 4 numCom= 0 start= 007fe42f <list>
-- tk @ bfd334d4 ( 2) type= 2 SIMPLE_WORD size= 5 numCom= 1 start= 007fe434 <(1+2)>
-- tk @ bfd334e4 ( 3) type= 4 TEXT size= 3 numCom= 0 start= 007fe435 <1+2>
-- tk @ bfd334f4 ( 4) type= 2 SIMPLE_WORD size= 5 numCom= 1 start= 007fe43a <(3+4)>
-- tk @ bfd33504 ( 5) type= 4 TEXT size= 3 numCom= 0 start= 007fe43b <3+4>
------------------
numBytes= 17 nested= 1 ret= 0 start= 7fe42f <list (1+2) (3+4)]>
------------------ parse block interp= 7927b8 parse= 7996e0
commandStart = l commandSize = 17
tokenPtr = 799718 staticTokens = 799718
numWords = 3 numTokens = 6
tokensAvailable = 20 errorType = 0
interp = 007927b8 incomplete = 0
end = 7fe440 <>
string = 7fe42f <list (1+2) (3+4)]>
term = 5d <]>
------------------
-- tk @ 799718 ( 0) type= 2 SIMPLE_WORD size= 4 numCom= 1 start= 007fe42f <list>
-- tk @ 799728 ( 1) type= 4 TEXT size= 4 numCom= 0 start= 007fe42f <list>
-- tk @ 799738 ( 2) type= 2 SIMPLE_WORD size= 5 numCom= 1 start= 007fe434 <(1+2)>
-- tk @ 799748 ( 3) type= 4 TEXT size= 3 numCom= 0 start= 007fe435 <1+2>
-- tk @ 799758 ( 4) type= 2 SIMPLE_WORD size= 5 numCom= 1 start= 007fe43a <(3+4)>
-- tk @ 799768 ( 5) type= 4 TEXT size= 3 numCom= 0 start= 007fe43b <3+4>
------------------
numBytes= 24 nested= 0 ret= 0 start= 7fe428 <set a [list (1+2) (3+4)]>
------------------ parse block interp= 7927b8 parse= bfd3393c
commandStart = s commandSize = 24
tokenPtr = bfd33974 staticTokens = bfd33974
numWords = 3 numTokens = 6
tokensAvailable = 20 errorType = 0
interp = 007927b8 incomplete = 0
end = 7fe440 <>
string = 7fe428 <set a [list (1+2) (3+4)]>
term = 00 <>
------------------
-- tk @ bfd33974 ( 0) type= 2 SIMPLE_WORD size= 3 numCom= 1 start= 007fe428 <set>
-- tk @ bfd33984 ( 1) type= 4 TEXT size= 3 numCom= 0 start= 007fe428 <set>
-- tk @ bfd33994 ( 2) type= 2 SIMPLE_WORD size= 1 numCom= 1 start= 007fe42c <a>
-- tk @ bfd339a4 ( 3) type= 4 TEXT size= 1 numCom= 0 start= 007fe42c <a>
-- tk @ bfd339b4 ( 4) type= 1 WORD size= 18 numCom= 1 start= 007fe42e <[list (1+2) (3+4)]>
-- tk @ bfd339c4 ( 5) type= 16 COMMAND size= 18 numCom= 0 start= 007fe42e <[list (1+2) (3+4)]>
------------------
numBytes= 16 nested= 0 ret= 0 start= 7fe42f <list (1+2) (3+4)>
------------------ parse block interp= 7927b8 parse= bfd3347c
commandStart = l commandSize = 16
tokenPtr = bfd334b4 staticTokens = bfd334b4
numWords = 3 numTokens = 6
tokensAvailable = 20 errorType = 0
interp = 007927b8 incomplete = 0
end = 7fe43f <]>
string = 7fe42f <list (1+2) (3+4)>
term = 5d <]>
------------------
-- tk @ bfd334b4 ( 0) type= 2 SIMPLE_WORD size= 4 numCom= 1 start= 007fe42f <list>
-- tk @ bfd334c4 ( 1) type= 4 TEXT size= 4 numCom= 0 start= 007fe42f <list>
-- tk @ bfd334d4 ( 2) type= 2 SIMPLE_WORD size= 5 numCom= 1 start= 007fe434 <(1+2)>
-- tk @ bfd334e4 ( 3) type= 4 TEXT size= 3 numCom= 0 start= 007fe435 <1+2>
-- tk @ bfd334f4 ( 4) type= 2 SIMPLE_WORD size= 5 numCom= 1 start= 007fe43a <(3+4)>
-- tk @ bfd33504 ( 5) type= 4 TEXT size= 3 numCom= 0 start= 007fe43b <3+4>
------------------
1+2 3+4
%