Mam ten fragment kodu, który zawiera cytat camlp4.Drukowanie OCaml AST jako OCaml Code
let f_name = "my_func"
<:str_item< value $lid:f_name$ a = a * 2 >>
Po uruchomieniu tego poprzez camlp4of
, produkuje to:
Ast.StExp (_loc,
(Ast.ExApp (_loc,
(Ast.ExApp (_loc, (Ast.ExId (_loc, (Ast.IdLid (_loc, "=")))),
(Ast.ExApp (_loc,
(Ast.ExApp (_loc,
(Ast.ExId (_loc, (Ast.IdLid (_loc, "value")))),
(Ast.ExId (_loc, (Ast.IdLid (_loc, f_name)))))),
(Ast.ExId (_loc, (Ast.IdLid (_loc, "a")))))))),
(Ast.ExApp (_loc,
(Ast.ExApp (_loc, (Ast.ExId (_loc, (Ast.IdLid (_loc, "*")))),
(Ast.ExId (_loc, (Ast.IdLid (_loc, "a")))))),
(Ast.ExInt (_loc, "2")))))))
Moje pytanie brzmi, czy jest tak, aby wydrukować wygenerowany kod SML? Którego polecenia lub opcji należy użyć, aby wyświetlić kod? Z powyższego przykładu spodziewam się:
value my_func a = a * 2
Czy to możliwe? Powodem jest to, że chcę zrobić trochę debugowania, aby zobaczyć, jak wygląda wygenerowany kod ocaml.
Funkcja 'Camlp4.PreCast.Printers.OCaml.print_implem' działa tylko na' str_item'. Czy są jakieś inne drukarki, które mogą wydrukować 'wyrażenie? –
Pod hakiem, z pewnością, ale nie są one odsłonięte przez interfejs "Drukarki". Co powiesz na zawijanie wyrażenia jako 'let_ =' str_item? W przypadku typów można również wpisać "type foo = " itp. –
gasche