原子在Prolog中逃避规则

时间:2013-03-22 21:27:41

标签: prolog iso-prolog

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

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

hello world 成为 'hello world'

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

' 变为 '\''

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

2 个答案:

答案 0 :(得分:4)

准确的地方是标准,ISO / IEC 13211-1:1995,quoted_token (* 6.4.2 *)。请参阅this answer如何以30美元的价格购买。

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

有些事情需要注意:

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

必须转义反斜杠和引号。

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

在任何情况下,也可以使用1.4.1以上的GNU-Prolog测试您的界面。到目前为止,就语法而言,GNU 1.4.1+与标准之间没有差异。

以下是some 240+ syntax related test cases。请报告任何疏忽!

答案 1 :(得分:2)

实用提示:如果您使用Prolog发布writeq,并且需要了解相关数据,则可以在需要时获得报价。