第一部分 Quintus Prolog用户指南 1
第一章 Prolog入门 3
1.1 什么是逻辑程序设计 3
1.1.1 Hron子句 3
1.1.2 谓词 4
1.1.3 Prolog 4
1.1.4 合一 5
1.2 Prolog系统 7
1.2.1 向Prolog中输入信息 7
1.2.2 询问Prolog 7
1.2.3 例子 8
1.2.4 退出Prolog 9
第二章 Quintus Prolog的使用 10
2.1 不在Emacs下使用Prolog 10
2.1.1 进入Prolog 10
2.1.2 退出Prolog 10
2.2 在Emacs下使用Prolog 10
2.2.1 终端和操作系统需求 11
2.2.2 使用Prolog和Emacs 11
2.2.3 退出Emacs 12
2.2.4 挂起Emacs对话进程 12
2.3 Prolog顶层提示符 12
2.3.1 返回Prolog顶层提示符 13
2.4 联机帮助系统的使用 13
2.4.1 使用Emacs访问联机手册 13
2.4.2 不在Emacs下访问联机手册 13
2.4.3 查看交叉参考 14
2.4.4 查看指定主题的信息 14
第三章 Emacs编辑器的使用 15
3.1 建立文件 15
3.2 装入文件 15
3.3 保存文件 15
3.4 移动光标 16
3.5 插入正文 16
3.6 删除正文 17
3.7 移动正文 17
3.8 拷贝正文 17
3.9 搜索正文 18
3.9.1 改正搜索串的输入错误 18
3.9.2 反向搜索一文件 18
3.10 字符串的选择性替换 18
3.11 同时编辑多个文件 19
3.11.1 装入多个文件 19
3.11.2 改变显示缓冲区 19
3.11.3 分割窗口 20
3.11.4 在窗口间移动光标 20
3.11.5 扩大当前窗口 20
3.11.6 删除一正文窗 20
3.11.7 恢复到只有一个编辑窗 20
3.11.8 当前被编辑文件的列表 20
3.12 Emacs帮助设施的使用 21
第四章 程序的装入 22
4.1 在Prolog中装入文件 22
4.2 使用Emacs界面的程序咨询 22
4.2.1 装入整个缓存 23
4.2.2 装入缓存中一个区域 23
4.2.3 单个过程的装入 23
4.2.4 正文窗口和Prolog窗口之间的切换 23
4.3 不用Emacs的程序咨询 23
4.4 嵌入型命令consult/1的使用 24
4.5 通过Emacs界面的程序编译 25
4.6 不用Emacs的程序编译 25
4.7 嵌入型命令compile/1的使用 26
4.8 过程的直接定义 26
4.9 语法出错信息 27
4.10 风格警告信息 27
4.11 程序状态的保存和恢复 29
4.11.1 在操作系统层恢复保存的状态 30
4.11.2 使用Emacs恢复保存状态 30
4.11.3 恢复保存状态及其源文件 30
4.11.4 在Prolog中恢复保存状态 30
4.12 Prolog窗口中内容的保存 30
4.13 初启文件的使用 30
第五章 程序的运行 32
5.1 提问 32
5.2 求一目标的所有解 33
5.3 使用Emacs重复询问 34
5.4 使用Emacs显示以前的输入 34
5.5 使用Emacs对过程定位 34
5.6 打断程序的执行 35
5.7 内部谓词的出错信息 36
5.8 未定义谓词 36
5.9 在Emacs下重启Prolog 36
5.10 在Prolog中执行UNIX命令 37
5.11 动态谓词的生成 37
5.12 提示符 39
第六章 程序格式 40
6.1 标准格式 40
6.2 析取式和条件 41
第七章 Prolog程序的调试 43
7.1 背景信息 43
7.2 启动调试程序 43
7.3 退出调试程序 44
7.4 调试编译过程 44
7.5 跟踪过程运行的每一步 45
7.6 选择过程进行调试 46
7.6.1 设置监视点 46
7.7 改变调试的详细程序 47
7.8 改变提示的频繁度 47
7.9 询问调试程序和调试点的状态 48
7.10 调试信息的格式 48
7.11 调试例子 49
7.11.1 利用系统警告信息 51
7.11.2 单步跟踪程序的执行 52
7.11.3 利用跳跃和再试选择项 53
7.11.4 利用监视点 55
7.12 调试过程选择项 55
7.12.1 基本选择项 56
7.13 在执行期间重定义过程 57
附录A 启动Prolog系统 58
A.1 运行Prolog系统 58
A.2 运行保存状态 58
附录B 其他程序到Quintus Prolog的移植 59
B.1 浮点数 59
B.2 编译器/解释器的接口 59
B.3 风格检查 59
B.4 其他的不兼容性 60
B.5 废弃的内部谓词 60
B.6 新谓词 60
B.7 运行移植检查程序 62
附录C EMACS概要 64
C.1 主要键 64
C.2 光标移动 64
C.3 插入与删除 64
C.4 全局替换 65
C.5 在缓冲区中向上和向下移 65
C.6 窗口处理 65
C.7 文件和缓冲区处理 65
C.8 与Prolog相关的命令 65
C.9 仅在Prolog窗口中有效的键 66
附录D 特需和限制 67
附录E 术语表 68
第二部分 Quintus Prolog参考手册 77
第一章 语法 79
1.1 项 79
1.1.1 整数 79
1.1.2 浮点数 79
1.1.3 原子 79
1.1.4 变量 79
1.2 复合项 80
1.2.1 表 80
1.3 字符扩展 81
1.4 操作符 83
1.4.1 操作符类型 84
1.5 处理操作符的内部谓词 86
1.5.1 op(+Precedence,+Type,+Name) 86
1.5.2 current_op(? Precedence,? Type,? Op) 86
1.6 语法限制 86
1.7 注释 87
1.8 形式语法 87
1.8.1 记号 88
1.8.2 句子 88
1.8.3 项 89
1.8.4 词法单位 90
1.8.5 记号 92
第二章 语义 93
2.1 程序 93
2.1.1 谓词说明 94
2.2 析取 95
2.3 说明性和过程性语义 96
2.4 Cut 97
2.5 出现检查 98
第三章 程序的装入 99
3.1 咨询和编译 99
3.1.1 consult(+File) 99
3.1.2 compile(+File) 100
3.1.3 ensure_loaded(+FileSpec) 101
3.2 使用模块系统装入程序 101
3.2.1 模块文件 101
3.2.2 模块说明 102
3.2.3 use_module(+FileSpecList) 102
3.2.4 use_module(+FileSpec,+ImportList) 102
3.2.5 module(+ModuleName) 103
3.3 风格检查 103
3.3.1 style_check(+X) 103
3.3.2 no_style_check(+X) 103
3.4 程序执行期间重定义过程 103
3.5 多文件谓词子句定义 104
3.5.1 多文件说明 104
3.6 库中文件查找 104
3.6.1 library_directory(? DirSpec) 105
第四章 控制 106
4.1 +P,+Q 106
4.2 +P;+Q 106
4.3 ! 106
4.4 call(+X) 106
4.5 \++P 106
4.6 +P→+Q;+R 106
4.7 +P→+Q 107
4.8 true 107
4.9 otherwise 107
4.10 fail 107
4.11 false 107
4.12 repeat 108
第五章 输入输出 109
5.1 项的输入输出 109
5.1.1 read(-X) 109
5.1.2 write(? X) 109
5.1.3 writeq(? X) 110
5.1.4 write_canonical(? Term) 110
5.1.5 display(? X) 110
5.1.6 print(? X) 111
5.1.7 portray_clause(+Clause) 111
5.1.8 format(+Control,+Arguments) 111
5.2 字符的输入输出 116
5.2.1 get0(-N) 116
5.2.2 get(-N) 116
5.2.3 skip(+N) 116
5.2.4 put(+N) 116
5.2.5 nl 117
5.2.6 tab(+N) 117
5.3 流和文件处理 117
5.3.1 流和文件名 117
5.3.2 文件说明 117
5.3.3 流对象 117
5.3.4 open(+File,+Mode,-Steram) 117
5.3.5 open_null_stream(-Steram) 118
5.3.6 close(+X) 118
5.3.7 current_stream(? File,? Mode,? Steram) 118
5.3.8 nofileerrors 119
5.3.9 fileerrors 119
5.3.10 flush_output(+Steram) 119
5.3.11 set_input(+Steram) 119
5.3.12 Set_output(+Steram) 119
5.3.13 current_input(-Steram) 119
5.3.14 current_output(-Steram) 120
5.3.15 absolute_file_name(RelFileSpec,-AbsFileSpec) 120
5.3.16 source_file(-FileSpec) 120
5.3.17 source_file(? PredSpec,? FileSpec) 120
5.4 用指定流输入输出 120
5.4.1 基于流的项输入输出 120
5.4.2 基于流的字符输入输出 121
5.5 读取打开流的状态 121
5.5.1 character_count(+Stream,-N) 122
5.5.2 line_count(+Stream,-N) 122
5.5.3 line_position(+Stream,-N) 122
5.5.4 终端I/O的流位置信息 122
5.5.5 stream_position(+Stream,-Old,+New) 123
5.5.6 stream_position(? Stream,? Pos) 123
5.6 和DEC-10 Prolog兼容的文件处理 123
5.6.1 See(+S) 123
5.6.2 seeing(-S) 124
5.6.3 seen 124
5.6.4 tell(+S) 125
5.6.5 telling(-S) 125
5.6.6 told 126
5.7 和DEC-10 Prolog兼容的终端字符输入/输出 126
5.7.1 ttyget0(-N) 126
5.7.2 ttyget(-N) 126
5.7.3 ttyskip(+N) 126
5.7.4 ttyput(+N) 126
5.7.5 ttyni 126
5.7.6 ttytab(+N) 126
5.7.7 ttyfiush 127
第六章 算术运算 128
6.1 算术表达式 128
6.2 -X is+Expression 129
6.3 算术比较 129
6.3.1 +X=:=+Y 129
6.3.2 +X=\=+Y 129
6.3.3 +X<+Y 130
6.3.4 +X>+Y 130
6.3.5 +X=<+Y 130
6.3.6 +X>=+Y 130
第七章 查看项 131
7.1 var(? X) 131
7.2 nonvar(? X) 131
7.3 atom(? X) 131
7.4 integer(? X) 131
7.5 float(? X) 132
7.6 number(? X) 132
7.7 atomic(? X) 132
7.8 functor(? Term,? Name,? Arity) 132
7.9 arg(+ArgNum,+Term,-Arg) 133
7.10 ? Pred=..? List) 133
7.11 常量和正文之间的转换 133
7.11.1 atom_chars(? Atom,? Chars) 134
7.11.2 number_chars(? Number,? Chars) 134
7.11.3 name(? Constant,? Chars) 135
7.12 numbervars(? Term,+FirstVar,-LastVar) 136
7.13 copy_term(+Term,-Copy) 136
第八章 比较项 138
8.1 项的标准序 138
8.2 ? T1==? T2 138
8.3 ? T1\==? T2 138
8.4 ? T1@<IV T2 138
8.5 ? T1@>IV T2 139
8.6 ? T1@=<IV T2 139
8.7 ? T1@>=IV T2 139
8.8 compare(? Op,? T1,? T2) 139
8.9 sort(+L1,-L2) 139
8.10 keysort(+L1,-L2) 140
第九章 查看程序状态 141
9.1 listing 141
9.2 listing(+Predicate) 141
9.3 current_atom(? Atom) 141
9.4 current_predicate(? Name,? Term) 141
9.5 predicate_property(? PredSpec,? PredProperty) 142
第十章 修改执行状态 143
10.1 Control-c中断 143
10.2 halt 143
10.3 break 143
10.4 abort 144
10.5 ancestors(-Goals) 144
10.6 subgoal_of(? S) 144
10.7 maxdepth(+D) 144
10.8 depth(-D) 145
第十一章 调试 146
11.1 出错条件 146
11.2 过程框控制流模型 146
11.3 调试概念 147
11.3.1 跟踪模式和调试模式 147
11.3.2 穷尽跟踪 147
11.3.3 有选择调试 147
11.3.4 束缚 148
11.3.5 选择调试端口选择项 148
11.3.6 小结 148
11.4 调试信息的格式 148
11.5 调试选择项 149
11.5.1 基本控制选择项 150
11.5.2 打印选择项 150
11.5.3 高级控制选择项 151
11.5.4 环境选择项 151
11.5.5 求助选择项 152
11.5.6 调试编译的过程 152
11.6 用于调试的内部谓词 153
11.6.1 debueg 153
11.6.2 trace 153
11.6.3 nodebug 153
11.6.4 notrace 153
11.6.5 debugging 153
11.6.6 spy(+X) 154
11.6.7 nospy(+X) 154
11.6.8 nospyall 154
11.6.9 unknown(-OldAction,+NewAction) 154
11.6.10 leash(+Mode) 155
第十二章 模块 156
12.1 引言 156
12.2 基本概念 156
12.3 定义模块 156
12.4 将非模块化文件转换成模块化文件 157
12.5 装入模块 157
12.6 可见性法则 158
12.7 源模块 158
12.8 键入模块 159
12.9 动态创建模块 159
12.10 模块代码的调试 160
12.11 在编辑接口下装入模块 160
12.12 名冲突 161
12.13 当前模块 161
12.13.1 current_module(Mod) 161
12.13.2 current_module(Module,File) 161
12.14 获得装入模块的信息 162
12.14.1 模块定义的谓词 162
12.14.2 模块可见的谓词 162
12.15 移入动态/解释谓词 162
12.16 模块名扩充 163
12.17 元谓词说明 164
第十三章 修改数据库 166
13.1 动态和静态过程 166
13.2 插入谓词 167
13.2.1 assert(+Clause) 167
13.2.2 asserta(+Clause) 167
13.2.3 assertz(+Clause) 167
13.2.4 例子 168
13.3 删除谓词 168
13.3.1 retract(+Clause) 169
13.3.2 retract/1使用的重要问题 169
13.3.3 retractall(+Head) 170
13.3.4 abolish(+Predicates) 171
13.3.5 abolish(+Name,+Arity) 172
13.4 clause(+Head,?Body) 172
第十四章 数据库引用 174
14.1 定义 174
14.2 assert(+Clause,-Ref) 174
14.3 asserta(+Clause,-Ref) 174
14.4 assertz(+Clause,-Ref) 174
14.5 clause(?Head,?Body,?Ref) 174
14.6 erase(+Ref) 174
14.7 instance(+Ref,-Term) 175
第十五章 内部数据库 176
15.1 recorda(+Key,?Term,-Ref) 176
15.2 recordz(+Key,?Term,-Ref) 176
15.3 recorded(?Key,?Term,?Ref) 176
15.4 current_key(?KeyName,?KeyTerm) 177
第十六章 集合:收集目标的全解 179
16.1 setof(?Template,+Goal,-Set) 179
16.2 Bagof(?Template,+Goal,-Bag) 180
16.3 x^p 180
第十七章 语法规则 181
17.1 确定子句文法 181
17.2 例子 181
17.3 把语法规则转换成Prolog子句 182
17.4 与语法有关的内部谓词 183
17.4.1 expand_term(+T1,-T2) 183
17.4.2 phrase(+Phrase,?List,?Rest) 183
17.4.3 phrase(+Phrase,?List) 184
17.4.4 'c'(?S1,?Terminal,?S2) 184
第十八章 其他内部谓词 185
18.1 ?X=?Y 185
18.2 length(?L,?N) 185
18.3 prolog_flag(+FlagName,-OldValue,+NewValue) 186
18.4 prolog_flag(?FlagName,?Value) 187
18.5 prompt(-Old,+New) 187
附录A 编写高效程序 188
A.1 条件和析取 188
A.2 Cut 188
A.2.1 保证过程确定性 189
A.2.2 Cut的放置 190
A.2.3 终止回溯循环 190
A.3 项的构造和分解 191
A.4 索引 193
A.4.1 数据表 193
A.4.2 确定性检测 194
A.5 尾子句确定性检测 194
A.6 尾递归优化 195
附录B:内部运算符 196
第三部分 Quintus Prolog系统依赖特性手册 197
第一章 联机求助 199
1.1 求助文件 199
1.1.1 菜单文件 199
1.1.2 正文文件 199
1.2 help 200
1.3 help(+Topic) 200
1.4 manual 200
1.5 manual(+X) 200
1.6 使用求助系统的Emacs命令 201
1.6.1 菜单命令 201
1.6.2 正文命令 201
第二章 访问UNIX 202
2.1 在Prolog中执行UNIX命令 202
2.1.1 unix(cd(+Path)) 202
2.1.2 unix(cd) 202
2.1.3 unix(shell(+Command)) 202
2.1.4 unix(system(+Command)) 202
2.1.5 unix(shell) 202
2.1.6 unix(argv(-Args)) 203
2.2 在库表中搜索文件 203
2.3 absolute_file_name(+RelFileSpec,-AbsFileSepc) 204
2.4 中断处理和控制流 205
2.4.1 在C语言中改变Prolog的控制流 205
2.4.2 用户定义的中断处理 205
2.4.3 临界区 207
第三章 保存程序状态 208
3.1 save_program(+File) 208
3.2 save(+File) 208
3.3 save(+Fiie,-Return) 208
3.4 restore(+File) 209
3.5 reinitialise 209
第四章 EMACS接口 210
4.1 概述 210
4.2 组合键 210
4.3 Prolog模式 211
4.4 Prolog源代码风格限制 212
4.5 在初始化文件中重定义键 212
4.6 Prolog/Emacs接口程序设计 213
4.6.1 从Emacs提交Prolog询问 213
4.6.2 从Prolog中激活MockLisp函数 214
4.6.3 例子 215
第五章 UNIX下的外部函数接口 217
5.1 概述 217
5.2 装入外部文件到Prolog中 217
5.2.1 load_foreign_files(+ListOfFiles,+ListOfLibraries) 217
5.2.2 UNIX 4.2BSD下的“ld”命令格式 218
5.2.3 UNIX System V下的“ld”命令格式 218
5.3 外部函数和Prolog过程的连接 219
5.4 指定参数传递接口 220
5.4.1 foreign(+Routine,+Language,+PredicateSpecification) 220
5.4.2 参数说明 221
5.5 在Prolog与外部代码之间传递指针 224
5.6 在UNIX下外部代码的渐增装入 227
5.6.1 C代码的渐增装入 227
5.6.2 Pascal代码的渐增装入 229
5.6.3 FORTRAN代码的渐增装入 231
5.6.4 汇编代码的渐增装入 233
5.7 从外部函数存取Prolog的原子 235
5.8 Prolog的重要设定 237
5.8.1 存贮管理设定 237
5.8.2 输入/输出设定 237
5.9 用adb调试外部代码子程序 237
第六章 外部代码输入/输出函数 239
6.1 Prolog对外部代码I/O的支撑 239
6.1.1 stream_code(?Stream,?StreamCode) 239
6.2 C语言I/O的可用变量 239
6.2.1 int QP_stdin 239
6.2.2 int QP_stdout 239
6.2.3 int QP_stderr 240
6.2.4 int QP_curin 240
6.2.5 int QP_curout 240
6.3 C语言I/O所用的例行程序 240
6.3.1 QP_getc 241
6.3.2 QP_sgetc 241
6.3.3 QP_putc 241
6.3.4 QP_sputc 241
6.3.5 QP_puts 241
6.3.6 QP_sputs 241
6.3.7 例子 241
6.3.8 int QP_printf 242
6.3.9 int QP_sprintf 242
6.4 在C中定义Prolog可存取的I/O流 243
6.4.1 用户接口 243
6.4.2 参数与返回值 243
6.4.3 例子 244
第七章 存贮器使用和废区收集 245
7.1 概述 245
7.2 存贮管理谓词 245
7.2.1 trimcore 245
7.2.2 statistics 246
7.2.3 statistics(?Keyword,-List) 246
7.3 废区收集和程序设计风格 247
7.4 使用和不使用废区收集 249
7.4.1 prolog_flag(gc,-Old,?New) 249
7.4.2 gc 249
7.4.3 nogc 249
7.5 监督废区收集工作 249
7.5.1 prolog_flag(gc_trace,-Old,?New) 250
7.6 废区收集和堆扩充的相互影响 250
7.6.1 prolog_flag(gc_margin,-Old,?New) 250
7.7 直接激活废区收集程序 251
7.7.1 garbage_collect 251
7.8 UNIX用户需知 252
7.9 Sun 3用户需知 252
附录A Quintus Prolog与DEC-10 Prolog的比较 253
A.1 Emacs编辑程序接口 253
A.2 求助系统 253
A.3 外部函数接口 253
A.4 浮点数 254
A.5 改进的编译程序/解释程序接口 254
A.6 改进的调试程序 255
A.7 风格检查 255
A.8 基于流的输入和输出 256
A.9 数据库引用处理的改进 256
A.10 可运行的保存状态 256
A.11 存贮管理 256
A.12 其他 257
附录B Quintus Prolog中的限制 258
B.1 数的范围 258
B.2 Prolog中的其他限制 258
附录C 建立TERMCAP数据库 259
C.1 Emacs的终端要求 259
C.2 VMS支持的终端 259
C.3 非VMS终端 259
C.4 添加新终端 261
C.5 TERMCAP 261
第四部分 Quintus Prolog库手册 265
第一章 调用一个Prolog过程 267
1.1 Prolog调用Prolog 267
1.1.1 save_servant(+SavedState) 267
1.1.2 create_servant(+Machine,+SavedStae,+OutFile) 268
1.1.3 call_servant(+Goal) 268
1.1.4 bag_of_all_servant(?Template,+Goal,-Bag) 268
1.1.5 reset_servant 268
1.1.6 shutdown_servant 268
1.2 C调用Prolog 269
1.2.1 Prolog方面 269
1.2.2 save_ipc_servant(+SavedState) 269
1.2.3 C语言方面 270
1.2.4 QP_ipc_create_servant 270
1.2.5 QP_ipc_lookup 270
1.2.6 QP_ipc_prepare 270
1.2.7 QP_ipc_next 270
1.2.8 QP_ipc_close 271
1.2.9 QP_ipc_shutdown_servant 271
1.2.10 QP_ipc_atom_from_string 271
1.2.11 QP_ipc_string_from_atom 271
1.2.12 实例 272
1.3 跟踪 275
1.3.1 msg_trace(-Oldvalue,+OnorOff) 275
第二章 表处理 276
2.1 简介 276
2.2 什么是一个“适当”表IV 276
2.3 四个表处理库 276
2.4 基本表处理-库(basics) 276
2.4.1 append(?Prefix,?Suffix,?Comibined) 276
2.4.2 member(?Element,?List) 277
2.4.3 memberchk(+Element,+List) 278
2.4.4 nonmember(Element,+List) 278
2.5 顺序表—库(lists) 279
2.6 集合表 284
2.6.1 集合处理—库(sets) 284
2.6.2 与集合有关的谓词 286
2.7 有序集合表—库(ordsets) 286
第三章 项操作库 289
3.1 简介 289
3.2 六种项处理库 289
3.3 查找项的参量—库(arg) 289
3.4 修改项参量—库(change_arg) 292
3.5 检测项的子项—库(occurs) 294
3.6 关于参量序的注记 295
3.7 检查函子—库(same_functor) 296
3.8 项包含—库(subsumes) 297
3.9 合一—库(unify) 297
第四章 正文处理 298
4.1 库(strings)简介 298
4.2 类型测试 298
4.3 常量与字符的转换 298
4.3.1 name(?Constant,?Chars) 299
4.3.2 atom_chars(?Atom,?Char) 299
4.3.3 number_chars(?Number,?Chars) 300
4.3.4 char_atom(?Char,?Atom) 300
4.4 正文对象比较 300
4.5 联结 302
4.5.1 联结函数 303
4.6 求正文对象的长度和内容 304
4.7 寻找和抽取子串 305
4.7.1 midstring/[3-6] 307
4.7.2 substring/[4,5] 309
4.7.3 subchars/[4,5] 310
4.7.4 “span”谓词族 310
4.8 生成原子 312
4.9 字母大小写转换 313
第五章 否定 316
5.1 库(not)简介 316
5.2 “is-not-provable”运算符 316
5.3 “is-not-provable”与“is-not-true”-not(Goal) 316
5.4 不等 318
5.4.1 Terml=Term2 318
5.4.2 Terml~=Term2 318
5.5 强制目标确定—once(goal) 319
5.6 小结 319
第六章 文件操作 320
6.1 库(files)简介 320
6.2 文件的内部操作 320
6.3 文件的重命名和删除 320
6.4 检查文件是否存在 323
6.5 有关的其他库文件 325
6.5.1 库(ar_open) 325
6.5.2 库(ask) 325
6.5.3 库(big_text) 326
6.5.4 库(crypt) 326
6.5.5 库(directory) 326
6.5.6 库(fromonto) 326
6.5.7 库(unix) 326
第七章 查询文件 327
7.1 库(directory)简介 327
7.2 查询目录中文件 327
7.3 查询子目录 329
7.4 查询文件和目录的特性 329
7.5 小结 331
第八章 获取用户输入 332
8.1 简介 332
8.2 字符分类—库(ctypes) 332
8.3 行的读和写—库(lineio) 335
8.4 读取连续行—库(continued) 336
8.5 读取英语句子 337
8.5.1 库(read_in) 337
8.5.2 库(read_sent) 338
8.6 Yes—no询问及其他—库(ask) 338
8.7 其他提示的输入—库(prompt) 341
8.8 类Pascal的输入—库(readconst) 342
第九章 非支撑库 344
9.1 ‘Tools’目录 344
9.1.1 交叉参考—库(xref) 344
9.1.2 库(plint) 344
9.1.3 兼容性检查—库(checker) 344
9.2 库目录中非支撑的程序包 344
9.2.1 联机文件 344
9.2.2 库程序概览 345
主要参考文献 350