ocamlp4で新しくなった。私はそれを始めるためにJake Donham's blogを読んでいます。camp4:Ast.TyOrを検索するAst.TySumとの一致方法
私は小さなCamlp4のプログラムウィッヒのように単純型を取得します書き込みしようとしている:
type t = Foo | Bar | Baz
とt_of_string
とt_to_string
機能を生成します。
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)$ >> ->
しかし、これは動作しません:私はタイプと一致することができるはずblog上のコードに続いて
。私はcampl4of xx.ml -printer o
とASTを見て、私は興味深い部分にそれを軽減する場合:
(Ast.TyDcl (_, tid, [],
(Ast.TySum (_,
(Ast.TySum (_, ors)))), [])
しかし、私は試合の場合、ASTは、スプリアスを持っているようですが、思え
(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")))))))),
[]))
のようなものを一致させる必要がありますTySum
しかし、私はそれを取り除くことができませんでした。
誰にも解決策がありますか?