Browse thread
Custom lexer in Camlp4
[
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: | 2008-06-25 (11:53) |
From: | Jeremy Yallop <jeremy.yallop@e...> |
Subject: | Re: [Caml-list] Custom lexer in Camlp4 |
Nicolas Pouillard wrote: > Excerpts from Jeremy Yallop's message of Tue Jun 24 16:30:23 +0200 2008: >> Nicolas Pouillard wrote: >>> Excerpts from Jeremy Yallop's message of Tue Jun 24 15:03:19 +0200 2008: >>>> Is there a way to replace the default lexer in Camlp4? I'd like to use >>>> (an extended version of) one of the OCaml grammars, but with a different >>>> lexer. >>> You can rebuild (I mean functor application), your own camlp4 by giving >>> another Lexer module. Basically you will have to copy/paste the short >>> Camlp4.PreCast module (or a part of), by substituting Camlp4.Struct.Lexer >>> by your Lexer implementation. That's fairly heavy but works. >> Ok, I've built a slightly modified clone of PreCast. What's the best >> way to persuade Camlp4 to use it? The original PreCast seems fairly >> hardwired, e.g. in the Register module. > > Hum, you can't you have to build your own camlp4 driver :( Thanks, Nicolas. That's useful to know. The solution I've adopted for now is to change the default quotation expander to a function that just slots in my lexer before calling the original expander. This means that I can use my custom lexical syntax inside the << >> delimiters and I can use those delimiters either around the whole program or around a particular term. I think this'll be fine for my needs, although it would be nice to be able to customize the lexer that's used for regular code as well. Jeremy