我希望使用Haskell Pretty包打印出AST。
我所有的操作都很顺利,但是嵌套结构不会正确缩进。
我的操作类似于这样:
但是结果是这样的:
我所有的操作都很顺利,但是嵌套结构不会正确缩进。
我的操作类似于这样:
draw :: Pretty a => a -> String
draw = render.pretty
pretty (Letin d c ) = text "let" <+> text (draw d) $$
nest 4 (text "in" <+> text (draw c))
但是结果是这样的:
let Const x := 2
in let Var y := Int
in y = 3; let Var z := Int
in z = 0; z = z + 1
看起来嵌套层级并没有继承,所以所有的层级都是在+4的绝对边距上,而不是在每个层级上相对于其父级缩进+4,也就是说相对于当前缩进层级。