- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在一个包含空文件 empty
的目录中运行以下查询:
?- member(EOF_action,[error,eof_code,reset]), open(empty,read,S,[eof_action(EOF_action)]), stream_property(S,end_of_stream(EOS)), close(S).
这是我从不同的 Prolog 系统得到的:
在这种特殊情况下,上述系统的行为似乎大不相同。
ISO-Prolog 标准是否指定了符合处理器的正确行为?
最佳答案
流位置与结束位置的关系:
让S
是大小为 n
的输入流.让p
成为流源中的一个位置S
.
not
流结束如果 p < n
.at
流结束如果 p = n
.past
流结束如果 p > n
.在实际实现中,流位置可能是一对 (q,e)
其中 q
是源中的位置,e
在{not, at, past}
这样:
not
流结束当且仅当 q < n
和 e = not
.at
流结束当且仅当 q = n
和 e = at
.past
流结束当且仅当 q = n
和 e = past
.这是由:
7.10.2.13
end_of_stream(E) - If the stream position is end-of-stream thenE
is unified withat
...
还有:
7.10.1.1
read - Input. ... input shall start at the beginning of that source.
知道这一点,流位置是at
打开空文件时流结束。
或者stream_property/2
有问题或流处于无效状态。
一个更好的问题可能是合规系统应该如何处理流结束?
并对不同引擎的空文件和非空文件进行测试。
关于问题的评论:
标准上有一条注释,谓词 peek_char/2
保持流位置不变,因此查询类似 stream_property(S, end_of_stream(Eos0)), peek_char(S, _), stream_property(S, end_of_stream(Eos)), Eos0 = Eos
应该会成功。
关于prolog - 打开空文件后的 End_of_stream 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73500618/
我在一个包含空文件 empty 的目录中运行以下查询: ?- member(EOF_action,[error,eof_code,reset]), open(empty,read,S,[eof_a
我正在使用 QuickFIX/J版本 1.6.4 内 Apache Camel 2.17.0,我收到 session 消息 Disconnecting: Encountered END_OF_STRE
我是一名优秀的程序员,十分优秀!