From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (from majordomo@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id QAA25384; Mon, 20 Sep 2004 16:44:36 +0200 (MET DST) X-Authentication-Warning: pauillac.inria.fr: majordomo set sender to owner-caml-list@pauillac.inria.fr using -f Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id QAA25599 for ; Mon, 20 Sep 2004 16:44:35 +0200 (MET DST) Received: from smtp3.adl2.internode.on.net (smtp3.adl2.internode.on.net [203.16.214.203]) by concorde.inria.fr (8.13.0/8.13.0) with ESMTP id i8KEiWHt013868 for ; Mon, 20 Sep 2004 16:44:34 +0200 Received: from [192.168.1.200] (ppp202-133.lns1.syd3.internode.on.net [203.122.202.133]) by smtp3.adl2.internode.on.net (8.12.9/8.12.9) with ESMTP id i8KEiPOU064675; Tue, 21 Sep 2004 00:14:27 +0930 (CST) Subject: Re: [Caml-list] Lexing.lexeme_start_p broken? From: skaller Reply-To: skaller@users.sourceforge.net To: Jean-Christophe Filliatre Cc: caml-list In-Reply-To: <16718.41346.210917.885719@gargle.gargle.HOWL> References: <414B602F.2020400@clemson.edu> <16718.41346.210917.885719@gargle.gargle.HOWL> Content-Type: text/plain Message-Id: <1095691464.2580.554.camel@pelican.wigram> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.2.2 (1.2.2-4) Date: 21 Sep 2004 00:44:25 +1000 Content-Transfer-Encoding: 7bit X-Miltered: at concorde with ID 414EECD0.001 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! X-Loop: caml-list@inria.fr X-Spam: no; 0.00; caml-list:01 sourceforge:01 2004:99 filliatre:01 lnum:01 lnum:01 flx:01 flx:01 9660:01 glebe:01 tokens:01 tokens:01 dummy:01 token:01 token:01 Sender: owner-caml-list@pauillac.inria.fr Precedence: bulk On Mon, 2004-09-20 at 19:23, Jean-Christophe Filliatre wrote: > simplified to > > let update_loc lexbuf = > let pos = lexbuf.lex_curr_p in > lexbuf.lex_curr_p <- > { pos with pos_lnum = pos.pos_lnum + 1; pos_bol = pos.pos_cnum } > > then you call this function for each newline in your lexer actions, e.g. > > | '\n' > { newline lexbuf; token lexbuf } > > Hope this helps, How does that help, if the tokeniser isn't using the lexbuf? Here's my parser: let parse_tokens (parser:'a parser_t) (tokens: Flx_parse.token list) = let toker = (new tokeniser tokens) in try parser (toker#token_src) (Lexing.from_string "dummy" ) with _ -> toker#report_syntax_error; raise (Flx_exceptions.ParseError "Parsing Tokens") The token supplying function never looks at the lexbuf. The parser does, to report errors, so I have to trash the parser exceptions, since the locations are wrong. -- John Skaller, mailto:skaller@users.sf.net voice: 061-2-9660-0850, snail: PO BOX 401 Glebe NSW 2037 Australia Checkout the Felix programming language http://felix.sf.net ------------------- To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/ Beginner's list: http://groups.yahoo.com/group/ocaml_beginners