如何打印类型化的解析树
How to print typed parse tree
-dparsetree
可以用来打印无类型的解析树,但是如何在 OCaml 中打印类型化的 AST?我查看了源代码中的typing
目录,似乎有些功能可以做到这一点。
使用-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 打印机,它只打印您感兴趣的类型。
-dparsetree
可以用来打印无类型的解析树,但是如何在 OCaml 中打印类型化的 AST?我查看了源代码中的typing
目录,似乎有些功能可以做到这一点。
使用-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 打印机,它只打印您感兴趣的类型。