获取Coq';类似于AST输出的丰富XML
在旧版本的Coq(<8.5)中,主coqtop进程将使用字符串与IDE交换数据 这应该是最近发生的变化——如何查询表示AST的更丰富的类似XML的结构获取Coq';类似于AST输出的丰富XML,coq,Coq,在旧版本的Coq(
用例:我想以不同的方式解释Coq计算的任何内容——也就是说,我需要在执行操作(如调用策略)后以一种不是我需要解析的字符串的形式得到它的结果。注意:这个答案已经过编辑,以使其最新。 截至2018年底,唯一合理的选择是,一个支持Coq文档完全序列化的Coq语言服务器。使用SerAPI,您可以获得任何Coq文件或内部结构的完整表示:
$ rlwrap sertop --printer=human
(Add () "Lemma u n : n + 0 = n.")
> (Answer 0 (StmAdded 2 (...) NewTip))
(Query ((sid 2)) Ast)
> (Answer 1(ObjList
> ((CoqAst
> (VernacStartTheoremProof Lemma
> ((((((Id u)) ()))
> (((LocalRawAssum
> (((Name (Id n))))
> (Default Explicit)
> (CHole () IntroAnonymous ())))
> (CNotation
> "_ = _"
> (((CNotation
> "_ + _"
> (((CRef
> (Ident
> (Id n)))
> ())
> (CPrim
> (Numeral (Ser_Bigint 0))))
> () ()))
> (CRef
> (Ident
> (Id n)))
> ()))
> () ()))
> ())))
> false)))))
请注意,SerAPI是实验软件,我是主要作者。您能更具体地说明您的用例是什么吗?您可以使用XML协议(但这不会提供AST序列化数据)或coq serapi。顺便说一句,我认为旧版本的Coq对这个xml插件的支持非常有限,但我现在不确定……请注意,如果您想要构建一个Coq IDE,那么您的问题非常具体,关于查询更丰富的表示AST的类xml结构,那么答案就有点不同了。这是什么东西的一部分?这是一个XML协议调用,请参阅以获取更多详细信息。但是请注意,它还远未完成,很可能会被删除。哦,哇,我已经做了很多天了,但我没有偶然发现你提到的链接。谢谢。您仍然没有解释您的用例是什么,因此可能很难给出更准确的答案。因此,您有两个选择:使用XML协议,它有已知的缺陷,但更稳定;或者使用SerAPI,这将在许多方面使您的生活更轻松,但很快将改变,使您作为IDE开发人员的生活更轻松,所以你必须适应。因此,这是您的电话,但是SerAPI协议的规范应该很快就会上线。