gpt4 book ai didi

parsing - camp4 : How to match Ast. TSum 来检索 Lost.Type

转载 作者:行者123 更新时间:2023-12-04 06:00:07 25 4
gpt4 key购买 nike

我是 ocamlp4 的新手。我在看 Jake Donham's blog开始使用它。

我正在尝试编写一个小的 CamlP4 程序,它将得到一个简单的类型:

type t = Foo | Bar | Baz

并生成 t_of_string和一个 t_to_string功能。

按照 blog 上的代码我应该能够将类型与:
 let wrap_str_item si = 
let _loc = Ast.loc_of_str_item si in
<:str_item< $si$ >>

match wrap_str_item si with
| <:str_item< type $lid:tid$ = $Ast.TySum (_, ors)$ >> ->

但这不起作用。当我用 campl4of xx.ml -printer o 查看 AST 时我把它简化为有趣的部分:
(Ast.TyDcl (_, tid, [],
(Ast.TySum (_,
(Ast.TySum (_, ors)))), [])

但我需要匹配类似的东西
(Ast.TyDcl (_loc, "t", [],
(Ast.TySum (_loc,
(Ast.TyOr (_loc,
(Ast.TyOr (_loc, (Ast.TyId (_loc, (Ast.IdUid (_loc, "Foo")))),
(Ast.TyId (_loc, (Ast.IdUid (_loc, "Bar")))))),
(Ast.TyId (_loc, (Ast.IdUid (_loc, "Baz")))))))),
[]))

似乎火柴盒中的 AST 有一个虚假的 TySum ,但我无法摆脱它。

有没有人有解决方案?

最佳答案

这是一个众所周知的错误,最近在 3.12.1 Mantis 之后修复了。 .请注意,您的解决方案可能不适用于已修复错误的下一个版本。

关于parsing - camp4 : How to match Ast. TSum 来检索 Lost.Type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9014367/

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