Version française
Home     About     Download     Resources     Contact us    
Browse thread
camlp4 parser accepts more than its grammar?
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Till Varoquaux <till.varoquaux@g...>
Subject: Re: [Caml-list] camlp4 parser accepts more than its grammar?
2008/6/27 Nicolas Pouillard <nicolas.pouillard@gmail.com>:
> Excerpts from Jake Donham's message of Thu Jun 26 23:10:20 +0200 2008:
>> Hi list,
>>
>> I expected the following program to fail with a parse error, but it
>> happily ignores the extra '+'. I would be grateful if someone could
>> point out what I'm doing wrong. Thanks,
>
> Nothing wrong from you, that's a camlp4 known bug (PR#4551, PR#4513...).
>
>> open Camlp4.PreCast;;
>>
>> let expr = Gram.Entry.mk "expr";;
>> let stmt = Gram.Entry.mk "stmt";;
>>
>> EXTEND Gram
>>   expr: [[
>>     x = expr; "+"; y = expr -> x + y
>>   | x = INT -> int_of_string x
>>   ]];
>>   stmt:
>>   [[ e = expr; ";"; `EOI -> e ]];
>> END;;
>>
>> prerr_endline (string_of_int (Gram.parse_string stmt Loc.ghost "2 + 1 + ;"))
>>
>
> --
> Nicolas Pouillard aka Ertai
>
> _______________________________________________
> Caml-list mailing list. Subscription management:
> http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
> Archives: http://caml.inria.fr
> Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
> Bug reports: http://caml.inria.fr/bin/caml-bugs
>
>


Note that you might even have suprises when using the standard Ocaml
parser: I consider grammar more like a guideline then an actual
specification.

type t = A of int | false of float

Till