I'm fine with allowing escape sequences in string definitions. This means we 
should allow:

string a="\"c" to get "c

and

string b="\\" to get \
although this is backward incompatible. Using sprintf for such simple tasks is 
not convenient.

chris
________________________________________
Von: gretl-users-bounces(a)lists.wfu.edu [gretl-users-bounces(a)lists.wfu.edu] 
im Auftrag von Allin Cottrell [cottrell(a)wfu.edu]
Gesendet: Donnerstag, 3. September 2009 03:11
An: Gretl list
Betreff: Re: [Gretl-users] GRETL string concatenation for use in SQL    
statement

On Wed, 2 Sep 2009, Allin Cottrell wrote:

> On Wed, 2 Sep 2009, chris wrote:
>
> > Allin Cottrell wrote:
> > >
> > > However, I'm not sure offhand whether gretl's ODBC routines will
> > > handle this sort of input correctly.  I'll have to test.
> > >
> >
> > Did you change the string parsing code? Because with current windows
> > snapshot the follwing snippet no longer works:
> >
> > <script>
> > string a="\"
> > </script>
>
> Yes, I considered that I had found a bug, in that you couldn't set
> a string to contain literal quotes by doing, e.g.
>
> string quotefoo = "\"foo\""
>
> That's now fixed, but it has broken the idiom you mentioned.  But
> I think that would be better done as
>
> string a = "\\"
>
> This doesn't yet work right, but it will soon.

Sorry, let me not prejudge the issue.  One option is to proceed in
the direction I indicated, allowing backslash-escaped quotes (and
so, therefore, other escapes, including backslash-escaped
backslashes) in the definition of string literals using

 string s = "..."

But another option is simply to revert the change I made, to which
Chris has drawn attention.

To clarify: before my recent change, when you defined a string
literal using

 string s = "..."

gretl followed the simple procedure of making the string start
at the first '"' and end at the next '"'.  So Chris's

  string a = "\"

would produce a string containing a single, literal backslash.
This means that if you did

  string quotefoo = "\"foo\""

(in the hope of getting a quote-wrapped string) you'd get an
error, since gretl would see a string comprising a single
backslash followed by the bare identifier 'foo', and most likely
you'd get a complaint about the symbol 'foo' being undefined.

It seemed to me that this was a bug, but maybe it's OK: it
doesn't agree with C usage, but it was consistent. And if you
wanted to get fancier with escapes you could use sprintf.

Any thoughts?  Should we just go back to the status quo ante?
(And perhaps add a note to the manual.)

Allin.
_______________________________________________
Gretl-users mailing list
Gretl-users(a)lists.wfu.edu
http://lists.wfu.edu/mailman/listinfo/gretl-users

Reply via email to