2017-12-05 7 views
0

Coq's XML Protocol document (for the Add operation)에서 줄은 <int>${editId}</int>입니다. 편집 ID는 무엇입니까?Coq의 XML 프로토콜 문서에서 "editId"는 무엇입니까?

ideslave 모드에서 coqtop과 상호 작용하지 못했기 때문에이 질문을했습니다. 예를 들어 coq-8.6.1/theories/FSets/FSetCompat.v를 사용하여, I는

<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을 변경 어쩌면 경우, I 정답을 얻어야합니다. 내가 맞습니까? 아니요, editID는 무엇을합니까?이 오류를 어떻게 처리해야합니까? 도와 줘서 고맙다!

+1

(SO에 오신 것을 환영합니다) (': FSetInterface.WSfun E.'의 앞에 그 펑키 캐릭터는 무엇입니까?) – greybeard

+0

@greybeard 고마워! 그것은 덜 서명입니다. –

+1

'보다 적게 사인 '하고 보라! '<'이 될까요? – greybeard

답변

1

EditId은 Coq 8.7; 그것의 본래 목적 및 역사는 의정서와 역사적인 문제점의 복잡한 때문에 약간 복잡하다.

즉, Add 작업은 추가 된 범위에 대해 새로 할당 된 식별자 (Stateid.t)를 사용하여 사용자 인터페이스가 응답을 기다려야한다는 점에서 동기식입니다.

그러나 구문 분석기 오류가 발생하면 비동기 피드백 시스템에 시간 식별자가 필요하며 edit_id이 그 용도로 사용됩니다.

우리 Add 같은 edit_id 어쨌든 동기이므로 대신 edit_id 피드백 기반의 동기 에러 처리기를 사용 Add의 호출자에 대해 합리적 제거.

은 현재 동기 버전 Add을 사용하지 않는 것이 좋습니다. 클라이언트가 복잡한 블로킹 시스템을 구현하도록 강요하며, 비동기식 버전 (UI가 span_id를 선 택한 경우)으로 곧 대체 될 것입니다. 이러한 버전은 이미 ML API에서 사용할 수 있으며 SerAPI (*) 및 8.8에서 시작되는 XML 프로토콜 자체에 의해 노출 될 수 있습니다.

(*) 보통의 면책 조항이 적용됩니다. SerAPI의 저자이며, 내가 Coq 8.7의 edit_id을 제거한 사람 이었음에 유의하십시오.

+0

답변 해 주셔서 감사합니다. 블로킹은 실제로 불편합니다. 나는 그것을 pty를 사용하여 우회했다. 가까운 시일 내에 당신의 SerAPI를 시험해야합니다! "추가"(내 질문에 표시된대로)로 여러 줄 문자열을 입력 할 때 오류가 발생하는 이유를 말씀해 주시겠습니까? –

+0

그리고 html 엔티티를 사용하여 줄 바꿈을 인코딩해야합니까? CoqIDE'-debug'가하는 것을 보는 것이 유익합니다. – ejgallego

+0

감사! @greybeard가'< '기호를'< '으로 바꾸라고 말하면 오류가 사라졌습니다. 그래서 오류는 줄 바꿈에 관한 것이 아닙니다. edit_id에 대한 귀하의 답변에 감사드립니다! –

0

Add에 대해 editid (8.7)을 Coq 측에서 사용하지 않더라도 상처를주는 것처럼 보이지 않습니다.

내 XML 기반 포고 (Proof General)에는 Add의 경우 editid이 포함되어 있으며 결과적으로 오류가 발생하지 않습니다.

+0

실제 호출은 사람들을 괴롭히지 않도록 변경되지 않았지만 매개 변수는 무시됩니다. – ejgallego