Version française
Home     About     Download     Resources     Contact us    

This site is updated infrequently. For up-to-date information, please visit the new OCaml website at

Browse thread
Case-insensitive lexing
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: 2007-02-24 (02:52)
From: Jon Harrop <jon@f...>
Subject: Re: [Caml-list] Case-insensitive lexing
On Friday 23 February 2007 15:32, Joel Reymont wrote:
> Is there a way to make a case-insensitive lexer with ocamllex?

Preprocess the character stream, making all chars lower case before they even 
reach ocamllex.

Take the existing definition of Lexing.from_channel:

let from_channel ic =
  from_function (fun buf n -> input ic buf 0 n)

and alter it to change the case of chars as they are read (off the top of my 

let from_case_insensitive_channel ic =
  let aux buf n =
    let i = input ic buf 0 n in
    for i=0 to i-1 do
      buf.[i] <- Char.lowercase buf.[i]
    i in
  from_function aux

Now create your lexbuf using from_case_insensitive_channel.

Dr Jon D Harrop, Flying Frog Consultancy Ltd.
OCaml for Scientists