* [Caml-list] Ast_iterator example?
@ 2019-07-12 13:25 Richard W.M. Jones
2019-07-12 13:40 ` Nicolás Ojeda Bär
0 siblings, 1 reply; 2+ messages in thread
From: Richard W.M. Jones @ 2019-07-12 13:25 UTC (permalink / raw)
To: caml-list
[-- Attachment #1: Type: text/plain, Size: 283 bytes --]
As previously discussed:
https://sympa.inria.fr/sympa/arc/caml-list/2019-06/msg00050.html
I'm now trying to port ocaml-gettext to use ppx. However I can't get
even a trivial Ast_iterator example to compile. Does anyone have a
simple compilable example using Ast_iterator?
Rich.
[-- Attachment #2: gettext_plugin.ml --]
[-- Type: text/plain, Size: 3174 bytes --]
(**************************************************************************)
(* ocaml-gettext: a library to translate messages *)
(* *)
(* Copyright (C) 2003-2008 Sylvain Le Gall <sylvain@le-gall.net> *)
(* *)
(* This library is free software; you can redistribute it and/or *)
(* modify it under the terms of the GNU Lesser General Public *)
(* License as published by the Free Software Foundation; either *)
(* version 2.1 of the License, or (at your option) any later version; *)
(* with the OCaml static compilation exception. *)
(* *)
(* This library is distributed in the hope that it will be useful, *)
(* but WITHOUT ANY WARRANTY; without even the implied warranty of *)
(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *)
(* Lesser General Public License for more details. *)
(* *)
(* You should have received a copy of the GNU Lesser General Public *)
(* License along with this library; if not, write to the Free Software *)
(* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *)
(* USA *)
(**************************************************************************)
(** PPX dumper to extract strings.
@author Richard W.M. Jones
@author Sylvain Le Gall
*)
(* Extract the string which should be used for a gettext translation. Output a
po_content list through the function Marshal.to_channel
Functions that are looked for :
Functions Arg 1 Arg 2 Arg 3 Arg 4 Arg 5 Arg 6 ...
s_ singular
f_ singular
sn_ singular plural _
fn_ singular plural _
gettext _ singular
fgettext _ singular
dgettext _ domain singular
fdgettext _ domain singular
dcgettext _ domain singular _
fdcgettext _ domain singular _
ngettext _ singular plural _
fngettext _ singular plural _
dngettext _ domain singular plural _
fdngettext _ domain singular plural _
dcngettext _ domain singular plural _ _
fdcngettext _ domain singular plural _ _
All this function name should also be matched when they are called using a
module.
*)
let visit_expr (iterator : Ast_iterator.iterator) expr =
()
let ast_iterator () =
{ Ast_iterator.default_iterator with expr = visit_expr }
let transform hook_info structure =
let astm = ast_iterator () in
astm.structure astm structure
let () = Pparse.ImplementationHooks.add_hook "ocaml-gettext" transform
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [Caml-list] Ast_iterator example?
2019-07-12 13:25 [Caml-list] Ast_iterator example? Richard W.M. Jones
@ 2019-07-12 13:40 ` Nicolás Ojeda Bär
0 siblings, 0 replies; 2+ messages in thread
From: Nicolás Ojeda Bär @ 2019-07-12 13:40 UTC (permalink / raw)
To: Richard W.M. Jones; +Cc: OCaml Mailing List
Hi Rich,
The code below will parse an .ml file passed on the command line and
run the iterator on the resulting structure. It can be compiled with
ocamlc -I +compiler-libs ocamlcommon.cma main.ml
Hope it helps,
Nicolás
------ main.ml ---------
let visit_expr (iterator : Ast_iterator.iterator) expr =
()
let ast_iterator =
{ Ast_iterator.default_iterator with expr = visit_expr }
let go fn =
let lexbuf = Lexing.from_channel (open_in fn) in
let structure = Parse.implementation lexbuf in
ast_iterator.Ast_iterator.structure ast_iterator structure
let () =
Arg.parse [] go ""
-------
On Fri, Jul 12, 2019 at 3:25 PM Richard W.M. Jones <rich@annexia.org> wrote:
>
>
> As previously discussed:
> https://sympa.inria.fr/sympa/arc/caml-list/2019-06/msg00050.html
>
> I'm now trying to port ocaml-gettext to use ppx. However I can't get
> even a trivial Ast_iterator example to compile. Does anyone have a
> simple compilable example using Ast_iterator?
>
> Rich.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2019-07-12 13:40 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-07-12 13:25 [Caml-list] Ast_iterator example? Richard W.M. Jones
2019-07-12 13:40 ` Nicolás Ojeda Bär
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox