-dparsetree
可用于打印无类型的解析树,但如何在OCaml中打印输入的AST?我查看了源代码中的typing
目录,似乎有些函数可以做到这一点。
答案 0 :(得分:1)
使用-dtypedtree
。它是一个比-dparsetree
更新的功能,从4.01.0开始引入。如果ocamlc
没有编译器,则需要升级编译器。
不幸的是-dtypedtree
没有显示输入AST的类型信息。我担心目前没有选项或工具可以打印类型信息。可能因为打印所有附加到子节点的类型信息太难以阅读,我担心。例如,即使是简单的代码let f x = x + 1
也有以下类型的AST:
let (f : int -> int) =
(fun (x : int) ->
(( ( (+) : int -> int -> int) (x : int) : int -> int) (1 : int) : int) : int -> int)
最好的方法是编写自己的类型AST打印机,它只打印您感兴趣的类型。