""""strings""" in Turtle (was Re: Turtle note possibilities)

On Tue, 2005-02-22 at 11:09 +0000, Graham Klyne wrote:
> FWIW, here is the triple-quote string parser from the Notation3 parser in 
> my Swish implementation.  I don't recall if this came from any formal spec 
> but I think it reasonably matches a range of actual data.  Within the 
> string, it allows:
>    stringLetter (non-control, non-", non-\)
>    escape (\c, \uxxxx, \Uxxxxxxxx)
>    " followed by non-"
>    "" followed by non-"
>    newline (\n)

Uhoh.  This is the kind of thing I was worrying about.  I wasn't sure if
\-escapes would be allowed in """...""" especially the unicode chars
ones \u and \U - those are the ones I can see good justification for.
I've never heard of \c.

> [[
> -- Triple-quoted string -- may include line breaks, '"' or '""'.

...

> -- \c
> charEsc         = choice (map parseEsc escMap)
>                  where
>                      parseEsc (c,code) = do { char c; return code }
>                      escMap            = zip ("nrt\\\"\'") ("\n\r\t\\\"\'")

...

I can't decode what that means but is it allowing \n \r \r \\ \" and
\' ?

Somehow this seems to defeat the purpose of triple-quotes as delimiting
a verbatim string, if that's what I understood it to be.

However it seems I was wrong, at least for python:

  [[In triple-quoted strings, unescaped newlines and quotes are allowed
(and are retained), except that three unescaped quotes in a row
terminate the string. (A ``quote'' is the character used to open the
string, i.e. either ' or "
  ]] --  http://www.python.org/doc/2.4/ref/strings.html

and that's the only difference from a single-quoted string.

So Turtle should follow the same rule; same as single-quoted string
however unescaped newlines and quotes are retained.  Unless N3 does
something different and is implemented that way.

Dave

Received on Friday, 25 February 2005 09:56:56 UTC