Browse thread
ocamllex -- ungetting a character?
-
mvanier
-
Stefano Zacchiroli
- Jean-Christophe Filliatre
-
Stefano Zacchiroli
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | Jean-Christophe Filliatre <filliatr@l...> |
| Subject: | Re: [Caml-list] ocamllex -- ungetting a character? |
Stefano Zacchiroli writes:
> On Sat, Jul 15, 2006 at 08:57:51PM -0700, mvanier wrote:
> > I'm writing a simple program using ocamllex to do some text processing, and
> > one feature I would really like is to be able to put a matched character
> > back onto the front of the lexing buffer. I can't figure out a way to do
> > this from the documentation (if it's possible, it's not in the manual).
> > Does anyone know of a way to do this?
>
> I don't think it is possible with ocamllex.
Well, there is at least an ugly way to do that, which is to modify
lexbuf.lex_curr_pos manually, as in
======================================================================
| <your regexp> { lexbuf.lex_curr_pos <- lexbuf.lex_curr_pos - 1;
<your action> }
======================================================================
I've already used this with success (yes, I feel ashamed :-). I would
like a member of the ocaml development team to confirm it, but it
seems safe, as long as you do not backtrack before the characters
matched by the left hand-side regexp. Indeed, the lexing engine will
not modify the lexbuf once the action is triggered and before the next
call to the lexer.
Hope this helps,
--
Jean-Christophe Filliātre (http://www.lri.fr/~filliatr)