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=2.7 required=5.0 tests=AWL,DNS_FROM_RFC_POST, SPF_NEUTRAL 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 EB3DDBBAF for ; Fri, 13 Mar 2009 19:40:06 +0100 (CET) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AkACAF9FuknRVduumGdsb2JhbACUdz8BAQEBAQgJDAcRqn+BB458AQMBA4N7BoMx X-IronPort-AV: E=Sophos;i="4.38,359,1233529200"; d="scan'208";a="24299683" Received: from mail-ew0-f174.google.com ([209.85.219.174]) by mail3-smtp-sop.national.inria.fr with ESMTP; 13 Mar 2009 19:40:06 +0100 Received: by ewy22 with SMTP id 22so3098718ewy.27 for ; Fri, 13 Mar 2009 11:40:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:from:to :content-type:content-transfer-encoding:mime-version:subject:date :x-mailer; bh=VbCCoNdCTpyJQ3P2J3+XX0ydldxUKFHYphywDWy8bBw=; b=emGaseTCQxFRYPJy/hvbq8WS+FCbYVdPTOmdkDT14VPJ+zG8CFW0WusjIyaoT0fiX7 vj34SefmTEDVf8FAiZsaLfcCwurH5dwCUcCwrq1VB6pRB8aftJI87me9d9ND+zj6JPvg yxbQIc1CgbaQPXUVdudzh1kMLO7lSVj37Rlp8= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:from:to:content-type:content-transfer-encoding :mime-version:subject:date:x-mailer; b=wQsfEHIDnsVlAZ0wFCm5rsINV5lVzE/7d+kQHlJDwrY8K9Zid9rKag+9xkXRGUZ2H9 2xe0Gl2l3ftxP7H/nanAsJ5sisPV/sJ3uWq6jRASofNZXon63hFwXKVqJVWWT52xVRwN WHXsSl4HSFvCbv5ulYljmgBaD11T6rlrFJB5E= Received: by 10.216.11.138 with SMTP id 10mr823227wex.51.1236969606111; Fri, 13 Mar 2009 11:40:06 -0700 (PDT) Received: from ?10.10.30.11? (185.Red-88-6-141.staticIP.rima-tde.net [88.6.141.185]) by mx.google.com with ESMTPS id c5sm3768548nfi.28.2009.03.13.11.40.04 (version=TLSv1/SSLv3 cipher=RC4-MD5); Fri, 13 Mar 2009 11:40:05 -0700 (PDT) Message-Id: <1355E60A-9665-40A1-A2F4-16930F7CDC92@gmail.com> From: Joel Reymont To: O'Caml Mailing List Content-Type: text/plain; charset=US-ASCII; format=flowed; delsp=yes Content-Transfer-Encoding: 7bit Mime-Version: 1.0 (Apple Message framework v930.3) Subject: camlp4: rules with arguments? Date: Fri, 13 Mar 2009 18:40:02 +0000 X-Mailer: Apple Mail (2.930.3) X-Spam: no; 0.00; camlp:01 swapped:01 expr:01 expr:01 ocaml:01 parameterize:01 parse:02 sell:96 opt:04 opt:04 buy:93 buy:93 arguments:07 optional:09 market:89 I have two rules designed to parse these statements buy 100 shares next bar at market buy 100 shares # assumes next bar at market sell 100 shares next bar 20 stop ... The rules are the same, except "Higher" and "Lower" get swapped when combined with "Stop" and "Limit". Since either buyMethod or sellMethod is optional, the rules are used as "OPT buyMethod" and "OPT sellMethod". Is there a way to parameterize these rules or should I keep them as is? Can the rules be simplified? Thanks, Joel --- buyMethod: [ [ "Next"; "Bar"; x = [ x = [ at = OPT "At$"; e = expr; [ "Stop" | "Higher" ] -> (Stop e, at) | at = OPT "At$"; e = expr; [ "Limit" | "Lower" ] -> (Limit e, at) | "Market" -> (Market, None) ] -> x | -> (Market, None) ] -> x ] ]; sellMethod: [ [ "Next"; "Bar"; x = [ x = [ at = OPT "At$"; e = expr; [ "Stop" | "Lower" ] -> (Stop e, at) | at = OPT "At$"; e = expr; [ "Limit" | "Higher" ] -> (Limit e, at) | "Market" -> (Market, None) ] -> x | -> (Market, None) ] -> x ] ]; --- http://tinyco.de Mac, C++, OCaml