Version française
Home     About     Download     Resources     Contact us    
Browse thread
ocamlyacc/lex reentrancy
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ 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