From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail1-relais-roc.national.inria.fr (mail1-relais-roc.national.inria.fr [192.134.164.82]) by walapai.inria.fr (8.13.6/8.13.6) with ESMTP id oBTNU2TG025032 for ; Thu, 30 Dec 2010 00:30:02 +0100 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AkcBAINTG01KfVK2kGdsb2JhbACWHo0/VAgVAQEBAQkJDAcRBCClSYl3ghiEdS6HbwEBAwWFRQSLBIMdaQ X-IronPort-AV: E=Sophos;i="4.60,246,1291590000"; d="scan'208,223";a="93384228" Received: from mail-wy0-f182.google.com ([74.125.82.182]) by mail1-smtp-roc.national.inria.fr with ESMTP; 30 Dec 2010 00:29:55 +0100 Received: by wyf19 with SMTP id 19so10719321wyf.27 for ; Wed, 29 Dec 2010 15:29:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:from:mime-version :content-type:subject:date:in-reply-to:to:references:message-id :x-mailer; bh=bgB0ZeFPanRcffV1M1i6+Zu+l0kjKzbBVujIAFGB1Gw=; b=EEk0AWXmqmnsL857FoJVHnw4LI8MaL43C7JOpyG3vzCcaB+t01puIwt3achacLFK4H xEPFP7rQVPzlHsB3aHEBjjDAokG3GaSrKSV0cuZ0PWmc0gPL5OPFzL8rjpG96C/qhIg0 JtxK1Z+pbJ0KJSRVIFrcBzPcpbX5pEEqFAyDw= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=from:mime-version:content-type:subject:date:in-reply-to:to :references:message-id:x-mailer; b=V5RnExgzoN813hSmnRc0iYxaycQ53C1V/DuabU+xoo68e1txvtpnxcGKauvv/ong/N TSlcch4rv1VgOTRtiqUD1p+axvQ7k4PORC8AGfJtM5arGPcFYZB0gigEyQRP3IidyZvA FxVHpdmxUZxsAsA8JQJj13i8Uir+jkAltDUqk= Received: by 10.216.154.14 with SMTP id g14mr15556879wek.78.1293665394724; Wed, 29 Dec 2010 15:29:54 -0800 (PST) Received: from [192.168.0.196] ([95.60.213.7]) by mx.google.com with ESMTPS id n1sm7408054weq.7.2010.12.29.15.29.52 (version=TLSv1/SSLv3 cipher=RC4-MD5); Wed, 29 Dec 2010 15:29:53 -0800 (PST) From: Joel Reymont Mime-Version: 1.0 (Apple Message framework v1082) Content-Type: multipart/mixed; boundary=Apple-Mail-22--321905497 Date: Wed, 29 Dec 2010 23:29:50 +0000 In-Reply-To: To: caml-list@inria.fr References: <7ABEB515-2F72-4CB7-BDE1-1695FA9970A4@gmail.com> Message-Id: <7ACC6D8D-0250-4025-A4F3-DD27717A8F2A@gmail.com> X-Mailer: Apple Mail (2.1082) Subject: Re: [Caml-list] fixing swig --Apple-Mail-22--321905497 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii The patch attached below almost does it. Example code still fails, e.g. thi= s bit --- let (xf,yf) =3D match _factor '((x to int),(y to int)) with C_list [ C_int a ; C_int b ] -> a,b | _ -> raise BadReturn --- results in this error --- File "example_prog.ml", line 19, characters 20-27: Parse error: "with" expected after [sequence] (in [expr]) File "example_prog.ml", line 1, characters 0-1: Error: Preprocessor error --- I'll see if I can figure it out. --- http://wagerlabs.com | @wagerlabs | http://www.linkedin.com/in/joelreymont --Apple-Mail-22--321905497 Content-Disposition: attachment; filename=0001-no-errors.patch Content-Type: application/octet-stream; name="0001-no-errors.patch" Content-Transfer-Encoding: quoted-printable >From ab2da507db52e02805fb9bf8bcdef861f5b53b6f Mon Sep 17 00:00:00 2001=0A= From: wagerlabs =0A= Date: Wed, 29 Dec 2010 22:06:17 +0000=0A= Subject: [PATCH] no errors=0A= =0A= ---=0A= swigp4.ml | 91 +++++++++++++++++++++++++++++++--------------------------= ---=0A= 1 files changed, 47 insertions(+), 44 deletions(-)=0A= =0A= diff --git a/swigp4.ml b/swigp4.ml=0A= index ab29e6f..0c3e248 100644=0A= --- a/swigp4.ml=0A= +++ b/swigp4.ml=0A= @@ -1,5 +1,8 @@=0A= -open Pcaml ;;=0A= +open Camlp4.PreCast=0A= +open Camlp4.Sig=0A= +open Syntax=0A= =20=0A= +let _loc =3D Loc.ghost=0A= let lap x y =3D x :: y=0A= let c_ify e loc =3D=20=09=20=20=0A= match e with=0A= @@ -15,39 +18,39 @@ let mk_list args loc f =3D=0A= match args with=0A= [] -> <:expr< [] >>=0A= | x :: xs ->=0A= - (let loc =3D MLast.loc_of_expr x in=0A= - <:expr< [ ($f x loc$) ] @ ($mk_list_inner xs loc f$) >>) in=0A= + (let loc =3D Ast.loc_of_expr x in=0A= + <:expr< [ ($f x _loc$) ] @ ($mk_list_inner xs loc f$) >>) in=0A= match args with=0A= [] -> <:expr< (Obj.magic C_void) >>=0A= - | [ a ] -> <:expr< (Obj.magic $f a loc$) >>=0A= + | [ a ] -> <:expr< (Obj.magic $f a _loc$) >>=0A= | _ -> <:expr< (Obj.magic (C_list ($mk_list_inner args loc f$))) >>= =0A= =20=0A= -EXTEND=0A= +EXTEND Gram=0A= expr:=0A= [ [ e1 =3D expr ; "'" ; "[" ; e2 =3D expr ; "]" ->=0A= - <:expr< (invoke $e1$) "[]" (C_list [ $c_ify e2 loc$ ]) >>=0A= + <:expr< (invoke $e1$) "[]" (C_list [ $c_ify e2 _loc$ ]) >>=0A= | e1 =3D expr ; "->" ; l =3D LIDENT ; "(" ; args =3D LIST0 (expr LEVEL= "simple") SEP "," ; ")" ->=0A= - <:expr< (invoke $e1$) $str:l$ ($mk_list args loc c_ify$) >>=0A= + <:expr< (invoke $e1$) $str:l$ ($mk_list args _loc c_ify$) >>=0A= | e1 =3D expr ; "->" ; u =3D UIDENT ; "(" ; args =3D LIST0 (expr LEVEL= "simple") SEP "," ; ")" ->=0A= - <:expr< (invoke $e1$) $str:u$ ($mk_list args loc c_ify$) >>=0A= + <:expr< (invoke $e1$) $str:u$ ($mk_list args _loc c_ify$) >>=0A= | e1 =3D expr ; "->" ; s =3D expr LEVEL "simple" ; "(" ; args =3D LIST= 0 (expr LEVEL "simple") SEP "," ; ")" ->=0A= - <:expr< (invoke $e1$) $s$ ($mk_list args loc c_ify$) >>=0A= + <:expr< (invoke $e1$) $s$ ($mk_list args _loc c_ify$) >>=0A= | e1 =3D expr ; "'" ; "." ; "(" ; args =3D LIST0 (expr LEVEL "simple")= SEP "," ; ")" ->=0A= - <:expr< (invoke $e1$) "()" ($mk_list args loc c_ify$) >>=0A= + <:expr< (invoke $e1$) "()" ($mk_list args _loc c_ify$) >>=0A= | e1 =3D expr ; "'" ; "->" ; l =3D LIDENT ; "(" ; args =3D LIST0 (expr= LEVEL "simple") SEP "," ; ")" ->=0A= - <:expr< (invoke ((invoke $e1$) "->" C_void)) $str:l$ ($mk_list args loc c= _ify$) >>=0A= + <:expr< (invoke ((invoke $e1$) "->" C_void)) $str:l$ ($mk_list args _loc = c_ify$) >>=0A= | e1 =3D expr ; "'" ; "->" ; u =3D UIDENT ; "(" ; args =3D LIST0 (expr= LEVEL "simple") SEP "," ; ")" ->=0A= - <:expr< (invoke ((invoke $e1$) "->" C_void)) $str:u$ ($mk_list args loc c= _ify$) >>=0A= + <:expr< (invoke ((invoke $e1$) "->" C_void)) $str:u$ ($mk_list args _loc = c_ify$) >>=0A= | e1 =3D expr ; "'" ; "->" ; s =3D expr LEVEL "simple" ; "(" ; args = =3D LIST0 (expr LEVEL "simple") SEP "," ; ")" ->=0A= - <:expr< (invoke ((invoke $e1$) "->" C_void)) $s$ ($mk_list args loc c_ify= $) >>=0A= + <:expr< (invoke ((invoke $e1$) "->" C_void)) $s$ ($mk_list args _loc c_if= y$) >>=0A= | e1 =3D expr ; "'" ; "++" ->=0A= <:expr< (invoke $e1$) "++" C_void >>=0A= | e1 =3D expr ; "'" ; "--" ->=0A= <:expr< (invoke $e1$) "--" C_void >>=0A= | e1 =3D expr ; "'" ; "-" ; e2 =3D expr ->=0A= - <:expr< (invoke $e1$) "-" (C_list [ $c_ify e2 loc$ ]) >>=0A= - | e1 =3D expr ; "'" ; "+" ; e2 =3D expr -> <:expr< (invoke $e1$) "+" (= C_list [ $c_ify e2 loc$ ]) >>=20=0A= - | e1 =3D expr ; "'" ; "*" ; e2 =3D expr -> <:expr< (invoke $e1$) "*" (= C_list [ $c_ify e2 loc$ ]) >>=20=0A= + <:expr< (invoke $e1$) "-" (C_list [ $c_ify e2 _loc$ ]) >>=0A= + | e1 =3D expr ; "'" ; "+" ; e2 =3D expr -> <:expr< (invoke $e1$) "+" (= C_list [ $c_ify e2 _loc$ ]) >>=20=0A= + | e1 =3D expr ; "'" ; "*" ; e2 =3D expr -> <:expr< (invoke $e1$) "*" (= C_list [ $c_ify e2 _loc$ ]) >>=20=0A= | "'" ; "&" ; e1 =3D expr ->=20=0A= <:expr< (invoke $e1$) "&" C_void >>=20=0A= | "'" ; "!" ; e1 =3D expr ->=0A= @@ -55,64 +58,64 @@ EXTEND=0A= | "'" ; "~" ; e1 =3D expr ->=0A= <:expr< (invoke $e1$) "~" C_void >>=0A= | e1 =3D expr ; "'" ; "/" ; e2 =3D expr ->=0A= - <:expr< (invoke $e1$) "/" (C_list [ $c_ify e2 loc$ ]) >>=0A= + <:expr< (invoke $e1$) "/" (C_list [ $c_ify e2 _loc$ ]) >>=0A= | e1 =3D expr ; "'" ; "%" ; e2 =3D expr ->=0A= - <:expr< (invoke $e1$) "%" (C_list [ $c_ify e2 loc$ ]) >>=0A= + <:expr< (invoke $e1$) "%" (C_list [ $c_ify e2 _loc$ ]) >>=0A= | e1 =3D expr ; "'" ; "lsl" ; e2 =3D expr ->=0A= - <:expr< (invoke $e1$) ("<" ^ "<") (C_list [ $c_ify e2 loc$ ]) >>=0A= + <:expr< (invoke $e1$) ("<" ^ "<") (C_list [ $c_ify e2 _loc$ ]) >>=0A= | e1 =3D expr ; "'" ; "lsr" ; e2 =3D expr ->=0A= - <:expr< (invoke $e1$) (">" ^ ">") (C_list [ $c_ify e2 loc$ ]) >>=0A= + <:expr< (invoke $e1$) (">" ^ ">") (C_list [ $c_ify e2 _loc$ ]) >>=0A= | e1 =3D expr ; "'" ; "<" ; e2 =3D expr ->=0A= - <:expr< (invoke $e1$) "<" (C_list [ $c_ify e2 loc$ ]) >>=0A= + <:expr< (invoke $e1$) "<" (C_list [ $c_ify e2 _loc$ ]) >>=0A= | e1 =3D expr ; "'" ; "<=3D" ; e2 =3D expr ->=0A= - <:expr< (invoke $e1$) "<=3D" (C_list [ $c_ify e2 loc$ ]) >>=0A= + <:expr< (invoke $e1$) "<=3D" (C_list [ $c_ify e2 _loc$ ]) >>=0A= | e1 =3D expr ; "'" ; ">" ; e2 =3D expr ->=0A= - <:expr< (invoke $e1$) ">" (C_list [ $c_ify e2 loc$ ]) >>=0A= + <:expr< (invoke $e1$) ">" (C_list [ $c_ify e2 _loc$ ]) >>=0A= | e1 =3D expr ; "'" ; ">=3D" ; e2 =3D expr ->=0A= - <:expr< (invoke $e1$) ">=3D" (C_list [ $c_ify e2 loc$ ]) >>=0A= + <:expr< (invoke $e1$) ">=3D" (C_list [ $c_ify e2 _loc$ ]) >>=0A= | e1 =3D expr ; "'" ; "=3D=3D" ; e2 =3D expr ->=0A= - <:expr< (invoke $e1$) "=3D=3D" (C_list [ $c_ify e2 loc$ ]) >>=0A= + <:expr< (invoke $e1$) "=3D=3D" (C_list [ $c_ify e2 _loc$ ]) >>=0A= | e1 =3D expr ; "'" ; "!=3D" ; e2 =3D expr ->=0A= - <:expr< (invoke $e1$) "!=3D" (C_list [ $c_ify e2 loc$ ]) >>=0A= + <:expr< (invoke $e1$) "!=3D" (C_list [ $c_ify e2 _loc$ ]) >>=0A= | e1 =3D expr ; "'" ; "&" ; e2 =3D expr ->=0A= - <:expr< (invoke $e1$) "&" (C_list [ $c_ify e2 loc$ ]) >>=0A= + <:expr< (invoke $e1$) "&" (C_list [ $c_ify e2 _loc$ ]) >>=0A= | e1 =3D expr ; "'" ; "^" ; e2 =3D expr ->=0A= - <:expr< (invoke $e1$) "^" (C_list [ $c_ify e2 loc$ ]) >>=0A= + <:expr< (invoke $e1$) "^" (C_list [ $c_ify e2 _loc$ ]) >>=0A= | e1 =3D expr ; "'" ; "|" ; e2 =3D expr ->=0A= - <:expr< (invoke $e1$) "|" (C_list [ $c_ify e2 loc$ ]) >>=0A= + <:expr< (invoke $e1$) "|" (C_list [ $c_ify e2 _loc$ ]) >>=0A= | e1 =3D expr ; "'" ; "&&" ; e2 =3D expr ->=0A= - <:expr< (invoke $e1$) "&&" (C_list [ $c_ify e2 loc$ ]) >>=0A= + <:expr< (invoke $e1$) "&&" (C_list [ $c_ify e2 _loc$ ]) >>=0A= | e1 =3D expr ; "'" ; "||" ; e2 =3D expr ->=0A= - <:expr< (invoke $e1$) "||" (C_list [ $c_ify e2 loc$ ]) >>=0A= + <:expr< (invoke $e1$) "||" (C_list [ $c_ify e2 _loc$ ]) >>=0A= | e1 =3D expr ; "'" ; "=3D" ; e2 =3D expr ->=0A= - <:expr< (invoke $e1$) "=3D" (C_list [ $c_ify e2 loc$ ]) >>=0A= + <:expr< (invoke $e1$) "=3D" (C_list [ $c_ify e2 _loc$ ]) >>=0A= | e1 =3D expr ; "'" ; "+=3D" ; e2 =3D expr ->=0A= - <:expr< (invoke $e1$) "+=3D" (C_list [ $c_ify e2 loc$ ]) >>=0A= + <:expr< (invoke $e1$) "+=3D" (C_list [ $c_ify e2 _loc$ ]) >>=0A= | e1 =3D expr ; "'" ; "-=3D" ; e2 =3D expr ->=0A= - <:expr< (invoke $e1$) "-=3D" (C_list [ $c_ify e2 loc$ ]) >>=0A= + <:expr< (invoke $e1$) "-=3D" (C_list [ $c_ify e2 _loc$ ]) >>=0A= | e1 =3D expr ; "'" ; "*=3D" ; e2 =3D expr ->=0A= - <:expr< (invoke $e1$) "*=3D" (C_list [ $c_ify e2 loc$ ]) >>=0A= + <:expr< (invoke $e1$) "*=3D" (C_list [ $c_ify e2 _loc$ ]) >>=0A= | e1 =3D expr ; "'" ; "/=3D" ; e2 =3D expr ->=0A= - <:expr< (invoke $e1$) "/=3D" (C_list [ $c_ify e2 loc$ ]) >>=0A= + <:expr< (invoke $e1$) "/=3D" (C_list [ $c_ify e2 _loc$ ]) >>=0A= | e1 =3D expr ; "'" ; "%=3D" ; e2 =3D expr ->=0A= - <:expr< (invoke $e1$) "%=3D" (C_list [ $c_ify e2 loc$ ]) >>=0A= + <:expr< (invoke $e1$) "%=3D" (C_list [ $c_ify e2 _loc$ ]) >>=0A= | e1 =3D expr ; "'" ; "lsl" ; "=3D" ; e2 =3D expr ->=0A= - <:expr< (invoke $e1$) ("<" ^ "<=3D") (C_list [ $c_ify e2 loc$ ]) >>=0A= + <:expr< (invoke $e1$) ("<" ^ "<=3D") (C_list [ $c_ify e2 _loc$ ]) >>=0A= | e1 =3D expr ; "'" ; "lsr" ; "=3D" ; e2 =3D expr ->=0A= - <:expr< (invoke $e1$) (">" ^ ">=3D") (C_list [ $c_ify e2 loc$ ]) >>=0A= + <:expr< (invoke $e1$) (">" ^ ">=3D") (C_list [ $c_ify e2 _loc$ ]) >>=0A= | e1 =3D expr ; "'" ; "&=3D" ; e2 =3D expr ->=0A= - <:expr< (invoke $e1$) "&=3D" (C_list [ $c_ify e2 loc$ ]) >>=0A= + <:expr< (invoke $e1$) "&=3D" (C_list [ $c_ify e2 _loc$ ]) >>=0A= | e1 =3D expr ; "'" ; "^=3D" ; e2 =3D expr ->=0A= - <:expr< (invoke $e1$) "^=3D" (C_list [ $c_ify e2 loc$ ]) >>=20=0A= + <:expr< (invoke $e1$) "^=3D" (C_list [ $c_ify e2 _loc$ ]) >>=20=0A= | e1 =3D expr ; "'" ; "|=3D" ; e2 =3D expr ->=0A= - <:expr< (invoke $e1$) "|=3D" (C_list [ $c_ify e2 loc$ ]) >>=0A= - | "'" ; e =3D expr -> c_ify e loc=0A= + <:expr< (invoke $e1$) "|=3D" (C_list [ $c_ify e2 _loc$ ]) >>=0A= + | "'" ; e =3D expr -> c_ify e _loc=0A= | c =3D expr ; "as" ; id =3D LIDENT -> <:expr< $lid:"get_" ^ id$ $c$ >>= =0A= | c =3D expr ; "to" ; id =3D LIDENT -> <:expr< $uid:"C_" ^ id$ $c$ >>= =0A= | "`" ; "`" ; l =3D LIDENT -> <:expr< C_enum `$lid:l$ >>=0A= | "`" ; "`" ; u =3D UIDENT -> <:expr< C_enum `$uid:u$ >>=0A= | f =3D expr ; "'" ; "(" ; args =3D LIST0 (expr LEVEL "simple") SEP ",= " ; ")" ->=20=0A= - <:expr< $f$ ($mk_list args loc c_ify$) >>=0A= + <:expr< $f$ ($mk_list args _loc c_ify$) >>=0A= ] ] ;=0A= END ;;=0A= =20=20=20=20=20=20=20=0A= --=20=0A= 1.7.3.1=0A= =0A= --Apple-Mail-22--321905497--