Browse thread
[Caml-list] On ocamlyacc and ocamllex
[
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: | 2001-09-24 (08:13) |
From: | Christian RINDERKNECHT <rinderkn@h...> |
Subject: | Re: [Caml-list] On ocamlyacc and ocamllex |
Hi, Vesa Karvonen wrote: > Currently the generated lexer is dependent on the parser, because the > parser generates the token type. This means that each time the grammar is > modified, but not the token definitions, the lexer is recompiled. Sometimes ago, I wrote a software handling more than six lexers and parsers, and hence maintenance was complex. So I decided to enhance ocamllex with the following facilities through the command-line: (1) It can produce a functorized lexer whose argument defines the tokens. You need to use to same %token clauses as in ocamlyacc. This way different parsers can share the same lexer (the only constraint is that the %token clause in the ocamllyacc-generated parsers must be given in the same order). (2) It is possible to specify a signature to be shared among different generated lexers. (3) If you don't want a functorized lexer to be produced, you can nevertheless specify the module defining the tokens (not necessarily the ocamlyacc-generated parser). This allows you to produce from the same ocamllex specification either a functorized lexer or a non-functorized lexer. (3bis) You can even allow the functorized lexer to import a module whose signature is given by a new clause: %import. Note also that: (4) By default, the behaviour is exactly the same as for the distributed ocamllex. (5) I integrated the patch of Christian Lindig, allowing you to give arguments to your lexing rules (e.g. rule skip_line (loc) = parse ...). In think this will help you to write functionnal lexers in a readable way. (6) I documented the options in an enhanced version of the man page. (7) It is up-to-date with respect to the latest distribution of ocamllex. If you are interested, please send me an e-mail. Best regards, -- Christian ------------------------------------------------------------------------ Christian Rinderknecht Phone +82 42 866 6147 Network Architecture Laboratory Fax +82 42 866 6154 Information and Communications University WWW http://nalab.icu.ac.kr 58-4 Hwaam-dong, Yuseong-gu, Daejeon, e-mail rinderkn@icu.ac.kr 305-752, Korea ------------------- 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