Re: V4.1 Carriage Returns w/ ReplaceRepeated in Windows?
- To: mathgroup at smc.vnet.net
- Subject: [mg27630] Re: V4.1 Carriage Returns w/ ReplaceRepeated in Windows?
- From: "Allan Hayes" <hay at haystack.demon.co.uk>
- Date: Fri, 9 Mar 2001 02:35:44 -0500 (EST)
- References: <9872dr$8u9@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
John, (Before replying, I notice that in the following Outlook Express insists on turning //. into file://." . Can anyone tell me how to prevent this?) The behaviour in Version 4.1 is caused by parsing from the right until a complete expression is found. {a,c}//.{a->b} //. {c->d} {b,c} Syntax::tsntxi: "//. {c->d}" is incomplete; more input is needed. //. {c->d} If we want to tell Mathematica that there is more, a simple way is to use parentheses ({a, c} //. {a -> b} //. {c -> d}) {b,d} This explains why your examination with Full Form did not show up the problem: the expression did not end until the last ]. FullForm[Hold[ {a,c}//.{a->b} //. {c->d} ]] That pasting in from inside the above input works as one expreession seems to be because of the already constructed cell expression: Here is the cell expression for the paste in from FullForm[Hold[...] ] Cell[BoxData[ RowBox[{ RowBox[{ RowBox[{"{", RowBox[{"a", ",", "c"}], "}"}], "file://.", RowBox[{"{", RowBox[{"a", "\[Rule]", "b"}], "}"}]}], "\n", "file://.", RowBox[{"{", RowBox[{"c", "\[Rule]", "d"}], "}"}]}]], "Input", CellLabel->"In[20]:="] We see that BoxData contains one outer RowBox. But for the oringinal,the cell expression has BoxData with a list of two RowBoxes with "\n" between them. Cell[BoxData[{ RowBox[{ RowBox[{"{", RowBox[{"a", ",", "c"}], "}"}], "file://.", RowBox[{"{", RowBox[{"a", "\[Rule]", "b"}], "}"}]}], "\n", RowBox[{"//.", RowBox[{"{", RowBox[{"c", "\[Rule]", "d"}], "}"}]}]}], "Input", CellLabel->"In[19]:="] Incidentally this effect of pasting in from FullForm[Hold[..]] does not work when we set menu > Cell > Default Input Format Type > InputForm -- Allan --------------------- Allan Hayes Mathematica Training and Consulting Leicester UK www.haystack.demon.co.uk hay at haystack.demon.co.uk Voice: +44 (0)116 271 4198 Fax: +44 (0)870 164 0565 "John A. Gunnels" <gunnels at cs.utexas.edu> wrote in message news:9872dr$8u9 at smc.vnet.net... > I have run into a rather odd "problem" (easily worked around, but ...) > in my recent upgrade to Version 4.1. > > Under version 4.0, I could type and evaluate something > like the following: > x //. {a -> b} > //. {c -> d} > [where I hit the return between "b}" and the second "file://." > > Now, under 4.1, this yields a syntax error: > Syntax::tsntxi: > "//. {c->d}" is incomplete; more input is needed > > while > x //. {a -> b} //. {c -> d} > works as expected (well, it's a simplified example > which does nothing, but ... no syntax error and the > analog in my application works). > > So I tried FullForm[Hold[<expression>]] with and without > the line return (thinking that, perhaps, some odd character > was inserted or something), only to see that the two were > identical. Further, copying and pasting from inside the > evaluated FullForm[Hold[]], WITH a carriage return, gives > me a cell that looks like the one that gives me a syntax > error (above), yet no error is reported upon evaluation. > FURTHER, if I copy and paste the "]" (the right brace > corresponding to the "Hold["), then erase it (otherwise, of > course, it's not syntactically correct), evaluating the cell > gives me the same syntax error is above. > > I realize that this is fairly trivial, but I would like to > know if anyone else has run into this. It _seems_ like a > _small_ bug to me, but ... > > Thanks, > John A. Gunnels > gunnels at cs.utexas.edu >