Suspicious notation in SPARQL lexical rule for STRING_LITERAL_LONG1

Hello,

Let's try to use the SPARQL grammar rule

[80]	STRING_LITERAL_LONG1 ::=
      "'''" ( [^'\] | ECHAR | ("'" [^']) | ("''" [^']) )* "'''"

to parse a string '''some-plain-text''\\more-plain-text'''

It seemes to me that it is parsed as
   -- starting "'''";
   -- "some-plain-text", in a char-by-char loop,
   -- "''\", matching ("''" [^']),
   -- "\m", oops, this does not match ECHAR.
   -- ore-plain-text''' is parsed by error recovery code.

I believe that the proper formal notation is

[80]	STRING_LITERAL_LONG1 ::=
      "'''" ( ("'" ("'"?))? ([^'\] | ECHAR) )* "'''"

Unfortunately, this is less readable.



Best Regards,
Ivan Mikhailov
OpenLink Software.

Received on Friday, 30 December 2005 08:14:04 UTC