3

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

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

 你好世界   变成   “你好世界”

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

 '   变成  '\''

有人可以指出这些规则被指定的地方吗?并且:我可以假设这些规则受到主要 Prolog 实现者的尊重吗?(我的意思是,按照这些规则生成的 Prolog 程序会被大多数 Prolog 解释器正确解析?)。

4

2 回答 2

4

准确的地方是标准 ISO/IEC 13211-1:1995 quoted_token (* 6.4.2 *),. 请参阅此答案如何以 30 美元的价格获得它。

由于续行等许多额外内容,精确的语法非常复杂。如果你只写应该被 Prolog 读取的原子,事情会容易一些。同样在这种情况下,您总是可以引用,这使得再次编写更简单一些。

需要注意的一些事项:

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

反斜杠和引号必须转义。

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

在任何情况下,也要使用 1.4.1 以上的 GNU-Prolog 测试您的界面。迄今为止,就语法而言,GNU 1.4.1+ 和标准之间没有任何区别。

这里有一些 240+ 语法相关的测试用例。请报告任何疏忽!

于 2013-03-22T21:56:54.887 回答
2

一个实用的提示:如果你用你的 Prolog 发出一个writeq,你需要知道的数据,你会在需要的时候得到报价。

于 2013-03-23T10:35:50.723 回答