caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* [Caml-list] Possible bug in the lexer?
@ 2001-08-10  4:51 Ceri Storey
  2001-08-10  8:40 ` Daniel de Rauglaudre
  0 siblings, 1 reply; 2+ messages in thread
From: Ceri Storey @ 2001-08-10  4:51 UTC (permalink / raw)
  To: caml-list

Hi,
I think I've discovered wierd bug in ocaml's lexer. it seems that in
ocaml 3.01, and 3.02, (and camlp4 original syntax) the following will not 
parse:
parser [< ' '"' >] -> ();;
but the following will:
parser [< ' (**) '"' >] -> ();;

As far as i can tell, the '"' is being interpreted as an apostrophe, and
then the beginning of a string containing an apostrophe. This is also 
the case for '\\' too. 

Thanks...
-- 
ceri storey <cez@pkl.net> http://pkl.net/~cez/
vi(1)! qmail(7)! pie(5)!
-------------------
Bug reports: http://caml.inria.fr/bin/caml-bugs  FAQ: http://caml.inria.fr/FAQ/
To unsubscribe, mail caml-list-request@inria.fr  Archives: http://caml.inria.fr


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [Caml-list] Possible bug in the lexer?
  2001-08-10  4:51 [Caml-list] Possible bug in the lexer? Ceri Storey
@ 2001-08-10  8:40 ` Daniel de Rauglaudre
  0 siblings, 0 replies; 2+ messages in thread
From: Daniel de Rauglaudre @ 2001-08-10  8:40 UTC (permalink / raw)
  To: Ceri Storey; +Cc: caml-list

Hello,

On Fri, Aug 10, 2001 at 05:51:28AM +0100, Ceri Storey wrote:

> I think I've discovered wierd bug in ocaml's lexer. it seems that in
> ocaml 3.01, and 3.02, (and camlp4 original syntax) the following will not 
> parse:
> parser [< ' '"' >] -> ();;

While reading the input, the lexer, instead of reading the token
"quote" and the token "character double-quote", reads the token
"character space" and then the double quote...

It is a design bug, actually. In streams and parsers, the quote is a
token used to introduce a "terminal". In Caml Light (before OCaml),
there was no confusion because the token "character" was enclosed by
backquotes.

Since OCaml, the characters have been enclosed by right quotes (what
is more usual). At that time, we should have changed the token
introducing "terminals" in streams and parsers, we could have choosen
backquotes, for example.

But we forgot. It is the reason of this problem. This is fixed in
revised syntax of Camlp4.

In normal syntax, if you have to specify a "terminal" in a parser, you
must be sure that there is no simple quote 2 characters after your
simple quote.

Write your example as:
   parser [< ''"' >] -> ();;
or
   parser [< '  '"' >] -> ();;

And write:
   parser [< ' ('"' | 'a') >] -> ();;
not:
   parser [< '('"' | 'a') >] -> ();;

Sorry for the inconvenience... due to historical reasons, what is often
the case...

-- 
Daniel de RAUGLAUDRE
daniel.de_rauglaudre@inria.fr
http://cristal.inria.fr/~ddr/
-------------------
Bug reports: http://caml.inria.fr/bin/caml-bugs  FAQ: http://caml.inria.fr/FAQ/
To unsubscribe, mail caml-list-request@inria.fr  Archives: http://caml.inria.fr


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2001-08-10  8:40 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-08-10  4:51 [Caml-list] Possible bug in the lexer? Ceri Storey
2001-08-10  8:40 ` Daniel de Rauglaudre

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).