[
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: | skaller <skaller@m...> |
| Subject: | Re: ocamlyacc/lex reentrancy |
Francois Rouaix wrote:
>
> I don't use ocamlyacc, but I do have lots of ocamllex lexers that need
> to be reentrant. I don't remember if I've posted that trick to the list
> already, but this is what you can do:
>
> In your opening section of the lexer:
>
> {
> type t = <something to store the data>
>
> let create_data () = .... (* unit -> t *)
>
> }
>
> and then for all rules, use
>
> rule somerule = parse
> | somepattern { (fun lexdata -> action) }
>
> And, when invoking a lexer function or entry point, you need to pass the
> additionnal argument, a in
> somerule lexbuf lexdata
Ahhhh! Thank you. I see how this works.
--
John Skaller, mailto:skaller@maxtal.com.au
10/1 Toxteth Rd Glebe NSW 2037 Australia
homepage: http://www.maxtal.com.au/~skaller
voice: 61-2-9660-0850