第三部分:第14章内部论域、谓词和常量 第14章内部论域、谓词和常量 14,1概述 14,2内部常量详解 14.3内部论域详解 144内部谓词详解 本章小结 本章习题 2004.11.3 A|程序设计
第三部分:第14章 内部论域、谓词和常量 2004.11.3 AI程序设计 1 第14章 内部论域、谓词和常量 14.1 概述 14.2 内部常量详解 14.3 内部论域详解 14.4 内部谓词详解 本章小结 本章习题
第三部分:第14章内部论域、谓词和常量 14.1概述 Visual prolog包含嵌入式隐藏类,它提供了对所有内部 常量、论域和谓词的声明和实现。 这些内部常量、论域和谓词既可以用于编译单元,也可以 应用于实现(运行时间支持这些程序) 每一编辑单元都隐含着嵌入式隐藏类的声明,但事实上这 类有着专门的惟一内部名,在代码的任何地方都不能直接 引用。在内置项的名字前可以加“"进行限定 注意,子句变量This是在对象谓词子句中自动定义的 下面的表14-1、表14-2、表14-3分别是内部常量、内 部论域、内部谓词的简要描述 2004.11.3 A|程序设计
第三部分:第14章 内部论域、谓词和常量 2004.11.3 AI程序设计 2 14.1 概述 Visual Prolog包含嵌入式隐藏类,它提供了对所有内部 常量、论域和谓词的声明和实现。 这些内部常量、论域和谓词既可以用于编译单元 ,也可以 应用于实现(运行时间支持这些程序)。 每一编辑单元都隐含着嵌入式隐藏类的声明,但事实上这 一类有着专门的惟一内部名,在代码的任何地方都不能直接 引用。在内置项的名字前可以加“::”进行限定。 注意,子句变量This是在对象谓词子句中自动定义的。 下面的表14-1、表14-2、表14-3分别是内部常量、内 部论域、内部谓词的简要描述
第三部分:第14章内部论域、谓词和常量 14.1概述 表14-1内部常量简述 内部常量 说明 compilation_date编译日期 compilation time 编译时间 compiler__ buildDate编译器建立时间 compiler version编译器版本 maxFloatDigits 定义编译器支持的" digits"的最大值 空指针 platform_bits 定义一编译平台的数字容量 platform_ name 定义目标平台名称 2004.11.3 A|程序设计
第三部分:第14章 内部论域、谓词和常量 2004.11.3 AI程序设计 3 14.1 概述 内 部 常 量 说 明 compilation_date 编译日期 compilation_time 编译时间 compiler_buildDate 编译器建立时间 compiler_version 编译器版本 maxFloatDigits 定义编译器支持的"digits"的最大值 null 空指针 platform_bits 定义一编译平台的数字容量 platform_name 定义目标平台名称 表14-1 内部常量简述
第三部分:第14章内部论域、谓词和常量 14.1概述 表14-2内部论域简述 内部论域 说明 char 宽字符 string 以0终止的宽字符序列 symbo 以0终止的宽字符序列 binary 字节序列 integer 有符号整数 unsigned 无符号整数 real 浮点数 pointer 指向内存地址的4字节指针 boolean 布尔值 factdb 内部数据库的命名描述 2004.11.3 A|程序设计
第三部分:第14章 内部论域、谓词和常量 2004.11.3 AI程序设计 4 14.1 概述 表14-2 内部论域简述 内 部 论 域 说 明 char 宽字符 string 以0终止的宽字符序列 symbol 以0终止的宽字符序列 binary 字节序列 integer 有符号整数 unsigned 无符号整数 real 浮点数 pointer 指向内存地址的4字节指针 boolean 布尔值 factdb 内部数据库的命名描述
第三部分:第14章内部论域、谓词和常量 14.1概述 表14-3内部谓词简述 2004.11.3 A|程序设计 5
第三部分:第14章 内部论域、谓词和常量 2004.11.3 AI程序设计 5 14.1 概述 表14-3 内部谓词简述
第三部分:第14章内部论域、谓词和常量 14.2内部常量详解 本节以字母顺序,详细解读 isual Prolog的内部常量 e :compilation_date 编译日期。这里YYYY表示年,MM表示月数,DD表示天数。 compilation_ date: string =YYYY-MM-DD 'compilation_ _time 编译时间。这里HH表示小时,MM表示分钟,SS表示秒。 compilation_time: string=HH-MM-SS e :compiler_ buildDate 编译器建立时间 compiler_ build Date:: string=YYYY-MM-DD HH-MM-SS :compiler version 编译器版本,该值决定编译器版本。 compiler_ version= 6003 2004.11.3 A|程序设计 6
第三部分:第14章 内部论域、谓词和常量 2004.11.3 AI程序设计 6 14.2 内部常量详解 本节以字母顺序,详细解读Visual Prolog的内部常量。 ::compilation_date 编译日期。这里YYYY 表示年,MM 表示月数,DD表示天数。 compilation_date : ::string = "YYYY-MM-DD". ::compilation_time 编译时间。这里HH表示小时,MM表示分钟,SS表示秒。 compilation_time : ::string = "HH-MM-SS". ::compiler_buildDate 编译器建立时间。 compiler_buildDate : ::string = "YYYY-MM-DD HH-MM-SS". ::compiler_version 编译器版本,该值决定编译器版本。 compiler_version = 6003
第三部分:第14章内部论域、谓词和常量 14.2内部常量详解 :max FloatDigits 定义编译器支持的" digits"的最大值。 maxFloatDigits= 19 gnoll 空指针,或缺省的NUL指针。 null pointer= unchecked Convert(: pointer, 0) e:platform bits 定义一编译平台的数位容量。 platform bits 32 ::platform name 定义目标平台的名字 platform_name: string =Windows 32bits 2004.11.3 A|程序设计
第三部分:第14章 内部论域、谓词和常量 2004.11.3 AI程序设计 7 14.2 内部常量详解 ::maxFloatDigits 定义编译器支持的"digits"的最大值。 maxFloatDigits = 19. ::null 空指针,或缺省的NULL指针。 null : ::pointer = uncheckedConvert(::pointer, 0). ::platform_bits 定义一编译平台的数位容量。 platform_bits = 32. ::platform_name 定义目标平台的名字。 platform_name : string = "Windows 32bits
第三部分:第14章内部论域、谓词和常量 14.3内部论域详解 本节按字母顺序,详细解读Ⅵ isual Prolog的内部论域。 ∷char 宽字符集。该论域的值是 UNICODE字符,采用双字对字符编码。只有赋值和比较(按 字典顺序的意义来说)操作应用该论域的值。字符的映射有如下语法 char image char value char value letter digit graphical_symbol A escape_ seq 在这里的语法中,HHHH对应于4个16进制的 escape seq 数字。同样,反斜线符号和单引用号只能用 一种转义序列表示。 u HHHH 2004.11.3 A|程序设计 8
第三部分:第14章 内部论域、谓词和常量 2004.11.3 AI程序设计 8 14.3 内部论域详解 本节按字母顺序,详细解读Visual Prolog的内部论域。 ::char 宽字符集。该论域的值是UNICODE字符,采用双字对字符编码。只有赋值和比较(按 字典顺序的意义来说)操作应用该论域的值。字符的映射有如下语法: char_image : ' char_value ' char_value : letter digit graphical_symbol \ escape_seq escape_seq : t n r \ ' " u HHHH 在这里的语法中,HHHH对应于4个16进制的 数字。同样,反斜线符号和单引用号只能用 一种转义序列表示
第三部分:第14章内部论域、谓词和常量 14.3内部论域详解 ;: string 宽的0终止的宽字符序列。 表示\ 个字符串是一串 UNICODE字 符。它作为指向宽的0终止的 t表示制表符 宽字符序列的指针。只有赋值 n表示换行符 和比较(按字典顺序的意义来 表示回车 说)操作应用该论域的值。在 Y表示单引号 源代码中,一个字符串文字可 用双引号内的一串字符定义。 表示双引号 string literal 一个"u"后面跟着四个十六进制数表 string LiteralPart-list 示与数值对应的 Unicode字符 stringliteralPart: 字符串中的双引号只能用转义序列表 a" anyCharacter-list-opt 示(单引号既可以用转义序列也可以 characterValue-list-opt 1 用图形符号表示)。 2004.11.3 A|程序设计
第三部分:第14章 内部论域、谓词和常量 2004.11.3 AI程序设计 9 14.3 内部论域详解 ::string 宽的0终止的宽字符序列。 一 个字符串是一串UNICODE字 符。它作为指向宽的0终止的 宽字符序列的指针。只有赋值 和比较(按字典顺序的意义来 说)操作应用该论域的值。在 源代码中,一个字符串文字可 用双引号内的一串字符定义。 stringLiteral: stringLiteralPart-list stringLiteralPart: @" anyCharacter-list-opt " " characterValue-list-opt " \\ 表示\ \t 表示制表符 \n 表示换行符 \r 表示回车 \' 表示单引号 \" 表示双引号 一个"u"后面跟着四个十六进制数表 示与数值对应的Unicode 字符。 字符串中的双引号只能用转义序列表 示(单引号既可以用转义序列也可以 用图形符号表示)
第三部分:第14章内部论域、谓词和常量 14.3内部论域详解 : symbol 宽的0终止的宽字符序列。 与字符串相似,一个符号也是一个 UNICODE字符序列。它是通过指向包 含字符串的符号表的入口的指针而实现的。可应用于符号的操作与可应用 于字符串的操作相同 个符号的映像用表示(任何用双引号括起来的字符)。 符号和字符串大部分是可互换的,但它们存储的方式不同。符号保存在 个查询表中,而它们的地址,不是符号本身,被存储以代表对象。这意味 着符号可以快速匹配,而且如果一个符号在一个程序中反复出现,它们可 以非常简洁地存储。字符串并不存在于查询表中。无论何时字符串需要匹 配, Visual Prolog都会逐字符检查。 2004.11.3 A|程序设计 10
第三部分:第14章 内部论域、谓词和常量 2004.11.3 AI程序设计 10 14.3 内部论域详解 ::symbol 宽的0终止的宽字符序列。 与字符串相似,一个符号也是一个UNICODE 字符序列。它是通过指向包 含字符串的符号表的入口的指针而实现的。可应用于符号的操作与可应用 于字符串的操作相同。 一个符号的映像用表示(任何用双引号括起来的字符)。 符号和字符串大部分是可互换的,但它们存储的方式不同。符号保存在一 个查询表中,而它们的地址,不是符号本身,被存储以代表对象。这意味 着符号可以快速匹配,而且如果一个符号在一个程序中反复出现,它们可 以非常简洁地存储。字符串并不存在于查询表中。无论何时字符串需要匹 配,Visual Prolog都会逐字符检查