繁体   English   中英

Prolog中的Atom转义规则

[英]Atom escaping rules in Prolog

我需要将使用Java中的任意术语表示形式表示的Prolog程序导出到文件中。 这个想法是Prolog解释器应该能够在以后查询生成的文件。 我的问题是关于在表示原子项的Java字符串文件中写入正确方法的问题。

例如,如果字符串的中间有空格,则在文件中应将其用单引号引起来:

你好世界 成为 “你好世界”

并且出口商应考虑应转义的字符:

' 变成 '\\''

有人可以指出这些规则的位置吗?,我是否可以假定主要Prolog实施者都遵守这些规则? (我是说,遵循这些规则生成的Prolog程序会被大多数Prolog解释器正确解析吗?)。

确切的位置是标准ISO / IEC 13211-1:1995, quoted_token (* 6.4.2 *) 查看此答案如何以30美元的价格获得。

由于存在很多额外的内容,例如连续行等,因此精确的语法非常复杂。 如果您只写Prolog应该阅读的原子,那么事情会容易一些。 同样在这种情况下,您总是可以引用,这使得编写变得更加简单。

要注意的一些事情:

在引用的原子中,只有简单的空间可以作为布局出现。 所有其他空格都需要像\\t\\nabrftnv )一样转义。 许多系统还接受其他布局,但是它们在非常小的细节上彼此不同。

反斜杠和引号必须转义。

可打印ASCII范围之外的字符取决于系统支持的PCS。 在一致的系统中,随附的文档应定义附加字符(扩展字符)的分类方式。 文档质量在很大范围内变化。

无论如何,还应使用1.4.1或更高版本的GNU-Prolog测试您的界面。 迄今为止,就语法而言,GNU 1.4.1+与标准之间尚无区别。

这是与240多个语法相关的测试用例 请报告任何疏忽!

一个实用的提示:如果您用Prolog发出writeq ,并且需要知道一些数据,则在需要时会得到引号。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM