Coq的XML协议文档中的“editId”是什么?

时间:2017-12-05 23:08:40

标签: xml coq coq-tactic coqide

Coq's XML Protocol document (for the Add operation)中,一行显示为<int>${editId}</int>。这里的editID是什么?

我问这个是因为我在ideslave模式下无法与coqtop交互。以coq-8.6.1/theories/FSets/FSetCompat.v为例,我输入了

<call val="Init"><option val="none"/></call>

<call val="Add"><pair><pair><string>Require Import FSetInterface FSetFacts MSetInterface MSetFacts.</string><int>1</int></pair><pair><state_id val="1"/><bool val="true"/></pair></pair></call>

<call val="Add"><pair><pair><string>Set Implicit Arguments.</string><int>1</int></pair><pair><state_id val="2"/><bool val="true"/></pair></pair></call>

,然后

<call val="Add"><pair><pair><string>Unset Strict Implicit.</string><int>1</int></pair><pair><state_id val="3"/><bool val="true"/></pair></pair></call>

他们都生成了正确的输出。但是,此时我输入了

<call val="Add"><pair><pair><string>Module Backport_WSets
    (E:DecidableType.DecidableType)
    (M:MSetInterface.WSets with Definition E.t := E.t
                           with Definition E.eq := E.eq)
<: FSetInterface.WSfun E.</string><int>1</int></pair><pair><state_id val="4"/><bool val="true"/></pair></pair></call>

我收到以下错误:

[pid 48519] XML syntax error: Attribute value expected
[pid 48519] XML syntax error: Xml node expected
[pid 48519] XML syntax error: Xml node expected
[pid 48519] Unexpected XML message
[pid 48519] Expected XML node: call
[pid 48519] XML tree received: <int>1</int>
[pid 48519] XML syntax error: Xml node expected
[pid 48519] Unexpected XML message
[pid 48519] Expected XML node: call
[pid 48519] XML tree received: <pair>
  <state_id val="4"/>
  <bool val="true"/>
</pair>
[pid 48519] XML syntax error: Xml node expected
[pid 48519] XML syntax error: Xml node expected

我怀疑这个错误是因为多行字符串,也许如果我更改editId,我应该得到正确答案。我对吗?如果不是,editID做了什么,我该如何处理这个错误?谢谢你的帮助!

2 个答案:

答案 0 :(得分:1)

在Coq 8.7中删除了

EditId;由于协议和历史问题的复杂性,其最初的目的和历史有点复杂。

即,Add操作是同步的,因为用户界面必须等待具有新分配的标识符(Stateid.t)的回复以获得增加的跨度。

但是,如果发生解析器错误,异步反馈系统需要一个时间标识符,edit_id用于此目的。

我们删除edit_id,因为Add是同步的,因此Add的调用者使用同步错误处理程序而不是基于edit_id的反馈是有意义的

请注意,我强烈建议不要使用当前同步版本的Add。它迫使客户端实现一个复杂的阻塞系统,它将很快被一个异步友好的版本替换[UI选择span_id的前端]。这样的版本已经在ML API中提供并且由SerAPI(*)公开,并且可能由XML协议本身从8.8开始。

(*)通常的免责声明适用:我是SerAPI的作者,同时也注意到我是从{8}中删除edit_id背后的人。

答案 1 :(得分:0)

即使在8.7中,editid发送Add似乎也不会受到伤害,即使它在Coq方面未被使用。

我的基于XML的Proof General分支包括editid Add和8.7,因此不会发生错误。