FW: [Rd] Parsing multi-line strings. Bug? Feature?

From: <Mark.Bravington_at_csiro.au>
Date: Thu 16 Sep 2004 - 13:21:07 EST


> Kevin Wright <kwright@eskimo.com> writes:
>
> > R 1.9.1 requires multi-line strings to contain a backslash at the
> > end of each line (except the last line). As noted by Mark
> > Bravington (http://tolstoy.newcastle.edu.au/R/help/02b/5199.html)
> > this requirement appears to be undocumented.
> >
> > In S-Plus 6.2, multi-line strings do not need a backslash for continuation.
> >
> > I recently (http://tolstoy.newcastle.edu.au/R/devel/04b/0256.html)
> > requested compatability with S-Plus and was told to contribute
> > a patch and then it would be considered. Here is the proposed patch.

<<snip>>

> > Thanks for considering this patch.
>
> Peter Dalgaard wrote:

> Sorry, I don't think that is good enough (notwithstanding the
> nonstandard comment character). Notice that Splus does this:
>
> > x <- "foo
> Continue string: bar
> Continue string: baz"
>
> (and the entry is interruptible with Ctrl-C too)
>
> There's a very good reason for the change of prompt, as anyone who has
> debugged SAS code with stray quotes will tell you: The system would
> appear to be completely unresponsive because all input is being eaten
> by the string readers.

I think the following patch in StringValue might address Peter Dalgaard's point: when a bare newline is found (i.e. not preceded by a backslash), it's pushed back onto the character stack via xxungetc(c) and StringValue pretends that it's just read a backslash instead. Then, as usual, it looks for the next character which is of course a newline, and proceeds as normal.

Output is from diff gram.c on R-devel from 7/9/2004. I hope the comments look sufficiently standard now (I'm not a C programmer).

Mark

3122a3123,3124
> /* Old behaviour was: return ERROR; */
> /* Now pretend there was a backslash before EOL */
3124c3126
< return ERROR;

---

> c = '\\';

>
******************************* Mark Bravington CSIRO (CMIS) PO Box 1538 Castray Esplanade Hobart TAS 7001 phone (61) 3 6232 5118 fax (61) 3 6232 5012 Mark.Bravington@csiro.au ______________________________________________ R-devel@stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
Received on Thu Sep 16 13:25:27 2004

This archive was generated by hypermail 2.1.8 : Wed 03 Nov 2004 - 22:45:15 EST