gpt4 book ai didi

prolog - 是否有序言语言语法/规范?

转载 作者:行者123 更新时间:2023-12-04 11:23:53 27 4
gpt4 key购买 nike

是否有序言语言语法,或接近它的通常用作引用的东西?我正在使用 SWI-prolog,所以有一个适合这种风格的会很好,否则一般的 prolog 语言语法/规范也能工作。

最佳答案

自 1995 年起,Prolog 就有了 ISO/IEC 标准:ISO/IEC 13211-1:1995。它还包含一个定义 Prolog 语法的语法,它由两个级别组成:

token 级别:( 6.4 token ,6.5 处理器字符集 )

这些由正则表达式定义,并像那个时代的许多语言一样使用最长的输入匹配/热切消费者规则/贪婪匹配/最大咀嚼。用标准 (6.4) 的话来说:

A token shall not be followed by characters such that
concatenating the characters of the token with these
characters forms a valid token as specified by the above
syntax.

NOTES
1 This is the eager consumer rule: 123.e defines the tokens
123 . e. A layout text is sometimes necessary to
separate two tokens.

这种定义 token 的方式对于源自 1970 年代的编程语言来说是典型的。
token 级别对 Prolog 的语法特别重要,因为 term , 或 read term首先定义为 token 序列:
term (* 6.4 *)
= { token (* 6.4 *) } ;

read term (* 6.4 *)
= term (* 6.4 *) , end (* 6.4 *) ;

许多 token 包含一个可选的 layout text sequence在一开始的时候。但永远不会到最后。另请注意,要确定结束(即完成期),需要先行查看下一个字符。在用 Prolog 编写的标记器中,这将通过 peek_char/1 实现。 .

只有在这个级别上确定了一个术语后,实际的语法才会发挥作用。参见 read_term/3 的 8.14.1.1 说明.当然,一个实现可能会以不同的方式做它,只要它表现得“好像”。

语法级别:(6.2 Prolog 文本和数据,6.3 术语)

这些定义依赖于完整的上下文无关语法形式主义加上一些上下文敏感的约束。

一致性

至于实现的一致性,
see this table . SWI 总是在许多独特的方面有所不同:在 token 级别和语法级别。甚至运算符语法 ( for certain cases ) 与其他系统和标准不兼容。也就是说,某些术语的读法不同。 Since SWI7, SWI now differs even for canonical syntax .试试 writeq('.'(1,[])).这应该产生 [1] ,但 SWI7 会产生一些错误。

有关符合的实现,请参阅 (版本 4.3)和 .

关于prolog - 是否有序言语言语法/规范?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25518462/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com