Coq CompCert的评估是什么

Coq CompCert的评估是什么,coq,coq-tactic,coq-extraction,compcert,Coq,Coq Tactic,Coq Extraction,Compcert,EvalOp的定义如下: 这个定义的奇怪之处在于coqdoc--html将Eval和Op识别为两个独立的标记: <span class="id" title="keyword">Eval</span><span class="id" title="var">Op</span> EvalOp 为什么COQ允许中间没有分隔符(空格)的两个令牌?或者这是coqdoc的一个bug?谢谢你的帮助 为什么COQ允许中间没有分隔符(空格)的两个令牌?或者这是

EvalOp的定义如下:

这个定义的奇怪之处在于
coqdoc--html
Eval
Op
识别为两个独立的标记:

<span class="id" title="keyword">Eval</span><span class="id" title="var">Op</span>
EvalOp
为什么COQ允许中间没有分隔符(空格)的两个令牌?或者这是coqdoc的一个bug?谢谢你的帮助

为什么COQ允许中间没有分隔符(空格)的两个令牌?或者这是coqdoc的一个bug

这是
coqdoc
的一个bug。Coq不允许两个字母标记之间没有非字母数字字符,但是还有很多其他没有分隔符的标记示例。例如,这是有效的Coq:

Definition(*no-spaces*)foo:=1.
我相信,这可以理解为标记
定义
、注释
(*无空格*)
foo
:=
1
。您还可以使用数字标记玩愚蠢的游戏,例如

Coercion Nat.add:nat>->Funclass.
Axiom a:nat.
Check 1a:nat.
由于标识符不能以数字开头,Coq将
1a
解析为应用于
a
1
,这是由于
强制
而进行的类型检查。您可能不应该使用Coq的解析器玩这样的游戏

为什么COQ允许中间没有分隔符(空格)的两个令牌?或者这是coqdoc的一个bug

这是
coqdoc
的一个bug。Coq不允许两个字母标记之间没有非字母数字字符,但是还有很多其他没有分隔符的标记示例。例如,这是有效的Coq:

Definition(*no-spaces*)foo:=1.
我相信,这可以理解为标记
定义
、注释
(*无空格*)
foo
:=
1
。您还可以使用数字标记玩愚蠢的游戏,例如

Coercion Nat.add:nat>->Funclass.
Axiom a:nat.
Check 1a:nat.

由于标识符不能以数字开头,Coq将
1a
解析为应用于
a
1
,这是由于
强制
而进行的类型检查。你可能不应该用Coq的解析器玩这样的游戏。

我看到了
EvalOp
@AntonTrunov我在opam中使用Coq 8.7.1+2编译了CompCert和doc。我的doc命令是
coqdoc--html-q-R lib compcert.lib-R common compcert.common-R x86_64 compcert.x86_64-R x86 compcert.x86-R backend compcert.backend-R cfrontend compcert.cfrontend-R driver compcert.driver-R flocq compcert.flocq-R exportclight compcert.exportclight-R cparser compcert.cparser--vernac file lib/*.vcommon/*.v x86_64/*.v x86/*.v backend/*.v cfrontend/*.v driver/*.v flocq/*.v exportclight/*.v cparser/*.v
你知道官方文档是如何编译的,以及为什么这个错误会发生在我的机器上吗?@AntonTrunov或者是因为compcert 3.2中有一个错误,而这个错误在compcert主版本中得到了解决?我不知道,但这可能是一个例子吗?
Eval
作为一个本地标记,我认为这只是链中的某个工具对正确的标记化感到困惑-(我看到
EvalOp
@AntonTrunov我在opam中使用coq 8.7.1+2编译了CompCert和文档。我的doc命令是
coqdoc--html-q-R lib CompCert.lib-R common CompCert.common-R x86_64 CompCert.x86_64-R x86 cert CompCert.x86-R backend CompCert.backend-R cfrontend CompCert-R driver CompCert.driver-R flocq CompCert.flocq-R exportclight compcert.exportclight-R cparser compcert.cparser--vernac file lib/*.v common/*.v x86_64/*.v x86/*.v backend/*.v cfrontend/*.v driver/*.v flocq/*.v exportclight/*.v cparser/*.v
您知道官方文档是如何编译的,以及为什么这个错误会发生在我的机器上吗?@AntonTrunov或者可能是因为compc中存在错误ert 3.2虽然在compcert主版本中解决了该错误?我不知道,但它是否可能是?
Eval
作为一个本地标记的一个实例,我认为它只是链中的某个工具对正确的标记化感到困惑-(