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 mail3-relais-sop.national.inria.fr (mail3-relais-sop.national.inria.fr [192.134.164.104]) by yquem.inria.fr (Postfix) with ESMTP id 11178BBAF for ; Thu, 12 Mar 2009 01:15:33 +0100 (CET) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AuAAAKjwt0lCbwQZk2dsb2JhbACVOQEBAQEJCQoJEQS7XYQNBg X-IronPort-AV: E=Sophos;i="4.38,346,1233529200"; d="scan'208";a="24201133" Received: from out1.smtp.messagingengine.com ([66.111.4.25]) by mail3-smtp-sop.national.inria.fr with ESMTP; 12 Mar 2009 01:15:32 +0100 Received: from compute1.internal (compute1.internal [10.202.2.41]) by out1.messagingengine.com (Postfix) with ESMTP id E706B2EDF62; Wed, 11 Mar 2009 20:15:31 -0400 (EDT) Received: from heartbeat2.messagingengine.com ([10.202.2.161]) by compute1.internal (MEProxy); Wed, 11 Mar 2009 20:15:31 -0400 X-Sasl-enc: DC60HdiQ8z42i3Tfk8Pvy58eS8kWH9JPheD6hYRxp3R0 1236816931 Received: from [192.168.1.10] (ALyon-157-1-71-91.w81-251.abo.wanadoo.fr [81.251.158.91]) by mail.messagingengine.com (Postfix) with ESMTPSA id 55DA03CEC2; Wed, 11 Mar 2009 20:15:31 -0400 (EDT) Message-ID: <49B85380.5040903@ens-lyon.org> Date: Thu, 12 Mar 2009 01:12:48 +0100 From: Martin Jambon User-Agent: Thunderbird 2.0.0.17 (X11/20081008) MIME-Version: 1.0 To: Joel Reymont Cc: O'Caml Mailing List Subject: Re: [Caml-list] camlp4: how do you write this rule? References: <99DB26B3-CE30-4EC7-82E8-AB6BA775E309@gmail.com> In-Reply-To: <99DB26B3-CE30-4EC7-82E8-AB6BA775E309@gmail.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Spam: no; 0.00; ens-lyon:01 camlp:01 camlp:01 expr:01 expr:01 instr:01 wrote:01 caml-list:01 jambon:01 jambon:01 expression:02 parse:02 div:97 lefta:02 mul:04 Joel Reymont wrote: > I would like my expression rule to parse "1 + 2 points" as "Plus (1, > Points 2)". > > I currently have the following, with Points right-associative and at the > bottom, but it doesn't work. Is this something that Camlp4 can handle? > > Thanks, Joel > > expr: > [ ... > | LEFTA > [ e1 = expr; "Or"; e2 = expr -> Or (e1, e2) > | e1 = expr; "And"; e2 = expr -> And (e1, e2) > | e1 = expr; "Mod"; e2 = expr -> Mod (e1, e2) > | e1 = expr; "*"; e2 = expr -> Mul (e1, e2) > | e1 = expr; "/"; e2 = expr -> Div (e1, e2) > | "Not"; e = expr -> Not e > ] > | RIGHTA > [ e = expr; [ "Points"; "Point" ]; i = OPT instr -> Points (e, i) ] > ]; I'm sure you mean: [ "Points" | "Point" ] Martin -- http://mjambon.com/