Browse thread
camlp4 stream parser syntax
[
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: | -- (:) |
| From: | Matthieu Wipliez <mwipliez@y...> |
| Subject: | Re : Re : Re : [Caml-list] Re: camlp4 stream parser syntax |
Since I don't know how to use the filter either, I tried to find another way :-)
In your lexer, do you have something along the lines of the "calc" examples in ocamllex official documentation, like a hash table that associates strings to tokens?
In this case, here is a possible solution, you have your hash table associate a lowercase version of the token with what you'd like to use in the grammar:
"buytocover" => "BuyToCover"
"sellshort" => "SellShort"
...
And you replace the lookup with
try
IDENT (Hashtbl.find keyword_table (String.lowercase id))
with Not_found ->
IDENT id
This way identifiers that when lower-cased look like "buytocover" ("BuYTOCovEr", "bUytOcOVeR", etc.) are replaced by a single token "BuyToCover", against which you match in the grammar.
Could this satisfy your requirements?
Cheers,
Matthieu
----- Message d'origine ----
> De : Joel Reymont <joelr1@gmail.com>
> À : Matthieu Wipliez <mwipliez@yahoo.fr>
> Cc : O'Caml Mailing List <caml-list@yquem.inria.fr>
> Envoyé le : Dimanche, 8 Mars 2009, 9h25mn 23s
> Objet : Re: Re : Re : [Caml-list] Re: camlp4 stream parser syntax
>
> How can I make camlp4 parsing case-insensitive?
>
> The only approach I can think of so far is to build a really larger
> set of tokens and use them instead of strings in the parser.
>
> Any flag I can flip or way to do this without a large set of tokens?
>
> Thanks, Joel
>
> On Mar 8, 2009, at 1:08 AM, Matthieu Wipliez wrote:
>
> >
> >> Is the camlp4 grammar parser case-insensitive?
> >>
> >> Will both Delay and delay be accepted in the actionDelay rule?
> >>
> >> actionDelay: [ [ "delay"; expression ->
> >> Asthelper.failwith (convert_loc _loc)
> >> "RVC-CAL does not permit the use of delay." ] ];
> >
> > No, only "delay" is accepted.
>
>
>
> ---
> http://tinyco.de
> Mac, C++, OCaml