gpt4 book ai didi

ocaml - 是否可以在 OCaml 中直接将 "type"作为字符串打印出来?

转载 作者:行者123 更新时间:2023-12-01 23:56:51 24 4
gpt4 key购买 nike

基本上我写了一个小解析器,在解析器中,我定义了大量类型如下

let stackop = PUSH | POP
and systemop = INT | IN | OUT
and arithmop = ADC | ADD | XADD | SUB
| MUL | IMUL | DIV | IDIV
| INC | DEC | NEG
and logicop = AND | OR | XOR
and rolop = ROL | SHL | SHR | SHLD |SHRD | SAL | SAR
.....

所以目前在解析之后,我想实现一个典型的“pretty_print”函数来打印出语法树

基本上,据我所知,我必须实现一个 pp_print 函数,将所有这些类型转换成相应的字符串,如下所示:

let pp_print = function
| PUSH -> "push" | POP -> "pop"
....

但是我的问题是要打印的类型太多了,按照上面的方式全部手动写好像很繁琐。

所以我想知道是否有更简单的方法,例如

let t_str = s.type in 
print_string t_str
(*I know it is not typical OCaml style, I just want to demonstrate*)

有可能吗?谁能给我一些帮助?

最佳答案

您可以使用 deriving syntax extension

例如,您可以这样注释您的类型:

 type stackop = PUSH | POP deriving (Show, Enum)

然后你可以使用:

Show.show<stackop> some_stackop 

漂亮地打印一个 stackop 类型的值。

关于ocaml - 是否可以在 OCaml 中直接将 "type"作为字符串打印出来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23249975/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com