From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on yquem.inria.fr X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=disabled version=3.1.3 X-Original-To: caml-list@yquem.inria.fr Delivered-To: caml-list@yquem.inria.fr Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by yquem.inria.fr (Postfix) with ESMTP id 3199ABBAF for ; Sun, 14 Sep 2008 21:53:03 +0200 (CEST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Ag8BALcIzUjOvjGwmmdsb2JhbACSbwEBAQEBCAUIBxEDn3wDhAQ X-IronPort-AV: E=Sophos;i="4.32,398,1217800800"; d="scan'208";a="14931611" Received: from web54606.mail.re2.yahoo.com ([206.190.49.176]) by mail2-smtp-roc.national.inria.fr with SMTP; 14 Sep 2008 21:53:02 +0200 Received: (qmail 77364 invoked by uid 60001); 14 Sep 2008 19:53:01 -0000 DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=s1024; d=yahoo.com; h=X-YMail-OSG:Received:X-Mailer:Date:From:Subject:To:MIME-Version:Content-Type:Content-Transfer-Encoding:Message-ID; b=0x7LjcpF2ZTasWVCXRrxCVpKpTDnjnUE+NX/7W6/+w5REinJK9FcQgXIVEddCsiUcpyis5JGGnZdSL5PxhcpefTSoe+bxfTirjWCAnC0dvwOOkJhPMLr3/EumGBTqRoQxp4pH4xBrlBmuv4N24Dqina2Y6flsJZ/s6qf+MlPn+M=; X-YMail-OSG: jn30.1IVM1kXnbCmicd4d_1QwzdM.FNdrhaSsACTeASq7KVSGw2M2h0kpLWAc_zcehuyx4UNE1BKPbbxflWKo2WXNoG4NYT5hag3LGmnGXwhn3nEZVq2e.lQYrwayPbGpRs- Received: from [213.205.69.131] by web54606.mail.re2.yahoo.com via HTTP; Sun, 14 Sep 2008 12:53:01 PDT X-Mailer: YahooMailWebService/0.7.218.2 Date: Sun, 14 Sep 2008 12:53:01 -0700 (PDT) From: Dario Teixeira Subject: Parameterised lexer To: caml-list@yquem.inria.fr MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Message-ID: <698632.75695.qm@web54606.mail.re2.yahoo.com> X-Spam: no; 0.00; lexer:01 ocamllex:01 regexp:01 lexer:01 regexp:01 'a'-'z':01 'a'-'z':01 'x':01 printf:01 lexbuf:01 printf:01 lexeme:01 lexbuf:01 stdin:01 printexc:01 Hi, Is it possible to write a ocamllex/ulex scanner where a regexp is a paramet= er to the lexer function? I'm looking for something like the (invalid) ulex code below demonstrates ("param" is the parameter): let regexp alpha =3D ['a'-'z' 'A'-'Z'] let regexp whitespace =3D [' ' '\t' '\n'] let regexp param1 =3D 'x' let regexp param2 =3D 'y' let regexp param3 =3D 'z' let rec token param =3D lexer | param -> Printf.print "*"; token param lexbuf | alpha+ -> Printf.printf "%s" (Ulexing.utf8_lexeme lex= buf); token param lexbuf | whitespace+ -> Printf.printf " "; token param lexbuf | eof -> Printf.printf "EOF\n" let main () =3D let lexbuf =3D Ulexing.from_utf8_channel stdin in token param1 lexbuf let _ =3D Printexc.print main () Thanks in advance for your help! Kind regards, Dario Teixeira =0A=0A=0A